[OE-core][RFC][PATCH][dunfell] wic: direct: Use stock fstab in partitions
Be able to get the stock fstab in partitions. Functionality reverted at commit id: ce682a73b7447652f898ce1d1d0416a456df5416 Signed-off-by: Daniel Gomez --- Hi, I'm trying to get back the stock fstab file in a rootfs partition image (wic plugin) and I'd like to know what you think about it. Functionality was included before commit-id ce682a73b7447652f898ce1d1d0416a456df5416 and removed afterwards. Would it be possible to add it again? What would be needed to re-add it? Thanks in advance, Daniel Here the relevant information: wks definition: part /boot/bootloader --source qbootimg-pcbios --active --align 1024 --use-uuid --fsoptions defaults,ro part /export --source rootfs --rootfs-dir=hockeycam-image --fstype=ext4 --label export --align 1024 --use-uuid --fsoptions defaults,ro --extra-space 400M part /media/rw --fstype=ext4 --label rwfs --align 1024 --use-uuid --size 200 part / --source rootfs --fstype=ext4 --label rootfs --align 1024 --use-uuid --fsoptions defaults,ro --extra-space 400M bootloader --timeout=1 --append="ro rootfstype=ext4 qtec_mem.size=64" --source qbootimg-pcbios /export/etc/fstab before: # stock fstab - you probably want to override this with a machine specific one /dev/root/auto ro 1 0 proc /procproc defaults 0 0 devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0 tmpfs/run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 tmpfs/var/volatiletmpfs defaults 0 0 # uncomment this if your device has a SD/MMC/Transflash slot #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0 /dev/sdb /mnt auto defaults 0 0 UUID=D339-7B77 /boot/bootloadervfatdefaults,ro 0 0 UUID=31f46be1-d9fb-4081-bd53-2c2727e7854b /export ext4defaults,ro 0 0 UUID=d8e8f5d4-897e-48cd-9188-33598363f706 /media/rw ext4 defaults0 0 /export/etc/fstab after: # stock fstab - you probably want to override this with a machine specific one /dev/root/auto ro 1 0 proc /procproc defaults 0 0 devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0 tmpfs/run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 tmpfs/var/volatiletmpfs defaults 0 0 # uncomment this if your device has a SD/MMC/Transflash slot #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0 10.100.10.100:/mnt/rw /media/rw nfsdefaults 0 0 scripts/lib/wic/plugins/imager/direct.py | 20 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py index 7e1c1c03ab..1bb9d38524 100644 --- a/scripts/lib/wic/plugins/imager/direct.py +++ b/scripts/lib/wic/plugins/imager/direct.py @@ -111,7 +111,15 @@ class DirectPlugin(ImagerPlugin): with open(fstab_path) as fstab: fstab_lines = fstab.readlines() +self.original_fstab = fstab_lines.copy() +if self._update_fstab(fstab_lines, self.parts): +with open(fstab_path, "w") as fstab: +fstab.writelines(fstab_lines) +else: +self.original_fstab = None + +def _update_fstab(self, fstab_lines, parts): updated = False for part in self.parts: if not part.realnum or not part.mountpoint \ @@ -142,10 +150,7 @@ class DirectPlugin(ImagerPlugin): fstab_lines.append(line) updated = True -if updated: -self.updated_fstab_path = os.path.join(self.workdir, "fstab") -with open(self.updated_fstab_path, "w") as f: -f.writelines(fstab_lines) +return updated def _full_path(self, path, name, extention): """ Construct full file path to a file we generate. """ @@ -274,6 +279,13 @@ class DirectPlugin(ImagerPlugin): if os.path.isfile(path): shutil.move(path, os.path.join(self.outdir, fname)) + +# Restore original fstab +if self.original_fstab: +fstab_path = self.rootfs_dir.get("ROOTFS_DIR") + "/etc/fstab" +with open(fstab_path, "w") as fstab: +fstab.writelines(self.original_fstab) + # remove work directory shutil.rmtree(self.workdir, ignore_errors=True) -- 2.30.2 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#154479): https://lists.openembedded.org/g/openembedded-core/message/154479 Mute This Topic: https://lists.openembedded.org/mt/84686452/21656 Group Owner: openembedded-core+ow...@lists.openem
Re: [OE-core][RFC][PATCH][dunfell] wic: direct: Use stock fstab in partitions
On Thu, 2021-08-05 at 17:03 +0200, Daniel Gomez wrote: > Be able to get the stock fstab in partitions. > > Functionality reverted at commit id: > ce682a73b7447652f898ce1d1d0416a456df5416 > > Signed-off-by: Daniel Gomez > --- > > Hi, > > I'm trying to get back the stock fstab file in a rootfs partition > image (wic plugin) and I'd like to know what you think about it. > > Functionality was included before commit-id > ce682a73b7447652f898ce1d1d0416a456df5416 and removed afterwards. Would > it be possible to add it again? What would be needed to re-add it? > The commit you mention above shouldn't have changed the output, it just used a different method to replace the fstab file. The question becomes why isn't the modified file being used in the way you're generating an image. I don't know wic well enough to know the answer to that though. Cheers, Richard > Thanks in advance, > Daniel > > Here the relevant information: > > wks definition: > part /boot/bootloader --source qbootimg-pcbios --active --align 1024 > --use-uuid --fsoptions defaults,ro > part /export --source rootfs --rootfs-dir=hockeycam-image --fstype=ext4 > --label export --align 1024 --use-uuid --fsoptions defaults,ro --extra-space > 400M > part /media/rw --fstype=ext4 --label rwfs --align 1024 --use-uuid --size 200 > part / --source rootfs --fstype=ext4 --label rootfs --align 1024 --use-uuid > --fsoptions defaults,ro --extra-space 400M > > bootloader --timeout=1 --append="ro rootfstype=ext4 qtec_mem.size=64" > --source qbootimg-pcbios > > /export/etc/fstab before: > # stock fstab - you probably want to override this with a machine specific one > > /dev/root/auto ro 1 0 > proc /procproc defaults 0 > 0 > devpts /dev/pts devpts > mode=0620,ptmxmode=0666,gid=5 0 0 > tmpfs/run tmpfs > mode=0755,nodev,nosuid,strictatime 0 0 > tmpfs/var/volatiletmpfs defaults 0 > 0 > > # uncomment this if your device has a SD/MMC/Transflash slot > #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 > 0 > > /dev/sdb /mnt auto defaults 0 0 > UUID=D339-7B77 /boot/bootloadervfatdefaults,ro 0 0 > UUID=31f46be1-d9fb-4081-bd53-2c2727e7854b /export ext4defaults,ro > 0 0 > UUID=d8e8f5d4-897e-48cd-9188-33598363f706 /media/rw ext4 > defaults0 0 > > /export/etc/fstab after: > # stock fstab - you probably want to override this with a machine specific one > > /dev/root/auto ro 1 0 > proc /procproc defaults 0 > 0 > devpts /dev/pts devpts > mode=0620,ptmxmode=0666,gid=5 0 0 > tmpfs/run tmpfs > mode=0755,nodev,nosuid,strictatime 0 0 > tmpfs/var/volatiletmpfs defaults 0 > 0 > > # uncomment this if your device has a SD/MMC/Transflash slot > #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 > 0 > > 10.100.10.100:/mnt/rw /media/rw nfsdefaults 0 0 > > > scripts/lib/wic/plugins/imager/direct.py | 20 > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/scripts/lib/wic/plugins/imager/direct.py > b/scripts/lib/wic/plugins/imager/direct.py > index 7e1c1c03ab..1bb9d38524 100644 > --- a/scripts/lib/wic/plugins/imager/direct.py > +++ b/scripts/lib/wic/plugins/imager/direct.py > @@ -111,7 +111,15 @@ class DirectPlugin(ImagerPlugin): > > with open(fstab_path) as fstab: > fstab_lines = fstab.readlines() > +self.original_fstab = fstab_lines.copy() > > +if self._update_fstab(fstab_lines, self.parts): > +with open(fstab_path, "w") as fstab: > +fstab.writelines(fstab_lines) > +else: > +self.original_fstab = None > + > +def _update_fstab(self, fstab_lines, parts): > updated = False > for part in self.parts: > if not part.realnum or not part.mountpoint \ > @@ -142,10 +150,7 @@ class DirectPlugin(ImagerPlugin): > fstab_lines.append(line) > updated = True > > -if updated: > -self.updated_fstab_path = os.path.join(self.workdir, "fstab") > -with open(self.updated_fstab_path, "w") as f: > -f.writelines(fstab_lines) > +return updated > > def _full_path(self, path, name, extention): > """ Construct full file path to a file we generate. """ > @@ -274,6 +279,13 @@ class DirectPlugin(ImagerPlugin): > if os.path.isfile(path): > shutil.move(path, os.path.join(self.outdir, fname)) > > + > +# Restore original fst
Re: [OE-core][RFC][PATCH][dunfell] wic: direct: Use stock fstab in partitions
Hi Richard, On Thu, 5 Aug 2021 at 17:31, Richard Purdie wrote: > > On Thu, 2021-08-05 at 17:03 +0200, Daniel Gomez wrote: > > Be able to get the stock fstab in partitions. > > > > Functionality reverted at commit id: > > ce682a73b7447652f898ce1d1d0416a456df5416 > > > > Signed-off-by: Daniel Gomez > > --- > > > > Hi, > > > > I'm trying to get back the stock fstab file in a rootfs partition > > image (wic plugin) and I'd like to know what you think about it. > > > > Functionality was included before commit-id > > ce682a73b7447652f898ce1d1d0416a456df5416 and removed afterwards. Would > > it be possible to add it again? What would be needed to re-add it? > > > > The commit you mention above shouldn't have changed the output, it just used a > different method to replace the fstab file. The question becomes why isn't the > modified file being used in the way you're generating an image. I don't know > wic well enough to know the answer to that though. Thanks for your comments. I did some debugging and the fstab in use for each partition will always be updated/replaced in the 'prepare_rootfs_ext' function (when 'update_fstab' in direct.py updates it): http://git.openembedded.org/openembedded-core/tree/scripts/lib/wic/partition.py?h=dunfell#n289 To fix it, I made this patch for dunfell so it gets updated if the user wants. https://lists.openembedded.org/g/openembedded-core/message/154537 The user now decides with --use-stock-fstab if the stock fstab is kept or replaced/updated. As said in the other patch/message, I'll update it to master if you agree. Thanks, Daniel > > Cheers, > > Richard > > > > Thanks in advance, > > Daniel > > > > Here the relevant information: > > > > wks definition: > > part /boot/bootloader --source qbootimg-pcbios --active --align 1024 > > --use-uuid --fsoptions defaults,ro > > part /export --source rootfs --rootfs-dir=hockeycam-image --fstype=ext4 > > --label export --align 1024 --use-uuid --fsoptions defaults,ro > > --extra-space 400M > > part /media/rw --fstype=ext4 --label rwfs --align 1024 --use-uuid --size 200 > > part / --source rootfs --fstype=ext4 --label rootfs --align 1024 --use-uuid > > --fsoptions defaults,ro --extra-space 400M > > > > bootloader --timeout=1 --append="ro rootfstype=ext4 qtec_mem.size=64" > > --source qbootimg-pcbios > > > > /export/etc/fstab before: > > # stock fstab - you probably want to override this with a machine specific > > one > > > > /dev/root/auto ro 1 0 > > proc /procproc defaults > > 0 0 > > devpts /dev/pts devpts > > mode=0620,ptmxmode=0666,gid=5 0 0 > > tmpfs/run tmpfs > > mode=0755,nodev,nosuid,strictatime 0 0 > > tmpfs/var/volatiletmpfs defaults > > 0 0 > > > > # uncomment this if your device has a SD/MMC/Transflash slot > > #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto > > 0 0 > > > > /dev/sdb /mnt auto defaults 0 0 > > UUID=D339-7B77 /boot/bootloadervfatdefaults,ro 0 0 > > UUID=31f46be1-d9fb-4081-bd53-2c2727e7854b /export ext4defaults,ro > > 0 0 > > UUID=d8e8f5d4-897e-48cd-9188-33598363f706 /media/rw ext4 > > defaults0 0 > > > > /export/etc/fstab after: > > # stock fstab - you probably want to override this with a machine specific > > one > > > > /dev/root/auto ro 1 0 > > proc /procproc defaults > > 0 0 > > devpts /dev/pts devpts > > mode=0620,ptmxmode=0666,gid=5 0 0 > > tmpfs/run tmpfs > > mode=0755,nodev,nosuid,strictatime 0 0 > > tmpfs/var/volatiletmpfs defaults > > 0 0 > > > > # uncomment this if your device has a SD/MMC/Transflash slot > > #/dev/mmcblk0p1 /media/card auto defaults,sync,noauto > > 0 0 > > > > 10.100.10.100:/mnt/rw /media/rw nfsdefaults 0 0 > > > > > > scripts/lib/wic/plugins/imager/direct.py | 20 > > 1 file changed, 16 insertions(+), 4 deletions(-) > > > > diff --git a/scripts/lib/wic/plugins/imager/direct.py > > b/scripts/lib/wic/plugins/imager/direct.py > > index 7e1c1c03ab..1bb9d38524 100644 > > --- a/scripts/lib/wic/plugins/imager/direct.py > > +++ b/scripts/lib/wic/plugins/imager/direct.py > > @@ -111,7 +111,15 @@ class DirectPlugin(ImagerPlugin): > > > > with open(fstab_path) as fstab: > > fstab_lines = fstab.readlines() > > +self.original_fstab = fstab_lines.copy() > > > > +if self._update_fstab(fstab_lines, self.parts): > > +with open(fstab_path, "w") as fstab: > > +fstab.writelines(fstab_lines) > > +else: > > +