Hi Paul,

On Tue, 10 Aug 2021 at 15:25, Paul Barker <p...@pbarker.dev> wrote:
>
> On Tue, 10 Aug 2021 15:06:02 +0200
> Daniel Gomez <dan...@qtec.com> wrote:
>
> > When embedding a rootfs image (e.g. 'rootfs-dir') as a partition we might
> > want to keep the stock fstab for that image. In such case, use
> > this option to not update the fstab and use the stock one instead.
> >
> > This option allows to specify which partitions get the fstab updated
> > and which get the stock fstab.
> >
> > The option matches the argument you can pass to wic itself where the
> > same action is performed but for all the partitions.
> >
> > Example:
> >     part /export --source rootfs --rootfs-dir=hockeycam-image --fstype=ext4
> > --label export --align 1024 --no-fstab-update
> >
> >     part / --source rootfs --fstype=ext4 --label rootfs --align 1024
> >
> > Signed-off-by: Daniel Gomez <dan...@qtec.com>
> > ---
> >  scripts/lib/wic/help.py      | 3 +++
> >  scripts/lib/wic/ksparser.py  | 1 +
> >  scripts/lib/wic/partition.py | 5 +++--
> >  3 files changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
> > index 991e5094bb..5c3d278d4e 100644
> > --- a/scripts/lib/wic/help.py
> > +++ b/scripts/lib/wic/help.py
> > @@ -991,6 +991,9 @@ DESCRIPTION
> >                               multiple partitions and we want to keep the 
> > right
> >                               permissions and usernames in all the 
> > partitions.
> >
> > +         --no-fstab-update: This option is specific to wic. It does not 
> > update the
> > +                            '/etc/fstab' stock file for the given 
> > partition.
> > +
> >           --extra-space: This option is specific to wic. It adds extra
> >                          space after the space filled by the content
> >                          of the partition. The final size can go
> > diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
> > index 7a4cc83af5..0df9eb0d05 100644
> > --- a/scripts/lib/wic/ksparser.py
> > +++ b/scripts/lib/wic/ksparser.py
> > @@ -185,6 +185,7 @@ class KickStart():
> >          part.add_argument('--use-uuid', action='store_true')
> >          part.add_argument('--uuid')
> >          part.add_argument('--fsuuid')
> > +        part.add_argument('--no-fstab-update', action='store_true')
> >
> >          bootloader = subparsers.add_parser('bootloader')
> >          bootloader.add_argument('--append')
> > diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
> > index e0b2c5bdf2..ab304f1b2a 100644
> > --- a/scripts/lib/wic/partition.py
> > +++ b/scripts/lib/wic/partition.py
> > @@ -54,6 +54,7 @@ class Partition():
> >          self.uuid = args.uuid
> >          self.fsuuid = args.fsuuid
> >          self.type = args.type
> > +        self.no_fstab_update = args.no_fstab_update
> >          self.updated_fstab_path = None
> >          self.has_fstab = False
> >          self.update_fstab_in_rootfs = False
> > @@ -286,7 +287,7 @@ class Partition():
> >              (self.fstype, extraopts, rootfs, label_str, self.fsuuid, 
> > rootfs_dir)
> >          exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
> >
> > -        if self.updated_fstab_path and self.has_fstab:
> > +        if self.updated_fstab_path and self.has_fstab and not 
> > self.no_fstab_update:
> >              debugfs_script_path = os.path.join(cr_workdir, 
> > "debugfs_script")
> >              with open(debugfs_script_path, "w") as f:
> >                  f.write("cd etc\n")
> > @@ -350,7 +351,7 @@ class Partition():
> >          mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, rootfs_dir)
> >          exec_native_cmd(mcopy_cmd, native_sysroot)
> >
> > -        if self.updated_fstab_path and self.has_fstab:
> > +        if self.updated_fstab_path and self.has_fstab and not 
> > self.no_fstab_update:
> >              mcopy_cmd = "mcopy -i %s %s ::/etc/fstab" % (rootfs, 
> > self.updated_fstab_path)
> >              exec_native_cmd(mcopy_cmd, native_sysroot)
> >
>
> This looks like the right approach. However, you're still missing the
> handling for filesystems other than ext2/3/4 & msdos. See
> http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts/lib/wic/plugins/source/rootfs.py#n218
> and grep to see if there are any other uses of updated_fstab_path.

Thanks for your quick reply. Sorry, I wasn't sure about that part of
the code so thanks for mentioning it again.
There is this line:

        install_cmd = "install -m 0644 %s %s" %
(part.updated_fstab_path, fstab_path)

Which is always replace/updated (for msdos/ext2/3/4) in partition.py with:

        if self.updated_fstab_path and self.has_fstab and not
self.no_fstab_update

I will then include the  'no_fstab_update' partition option inside
rootfs.py so we make sure the partition for the rest of the formats
won't get the fstab updated file.

I'll send a v2 patch.

>
> Thanks,
>
> --
> Paul Barker
> https://pbarker.dev/
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#154686): 
https://lists.openembedded.org/g/openembedded-core/message/154686
Mute This Topic: https://lists.openembedded.org/mt/84792172/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to