wic imager is able to add entries for the partitions to fstab. This patch also
creates an entry for the root device, which was previously ignored. The root
device entry can now optionally be uuid or label based.

The stock fstab file provided by base-files.bb already contains an entry for the
root device. To avoid a duplicate entry in fstab, this  '/dev/root' line is 
removed
during the fstab update.

The default /dev/root entry in base-files adds the value '1' for dump and 
passno. Add an
argument to set dump, which formerly has been hardcoded to '0'. Like this we 
can provide the
same settings if using the fstab_update.

The result looks something like this:

proc /proc proc 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/volatile tmpfs defaults 0 0

UUID=055A-69B5 /boot vfat defaults 0 0
UUID=0eb2df23-3638-4bbf-b045-9a425cb45954 / ext4 defaults 1 1

If neither '--on-disk' nor '--use-label' nor '--use-uuid' are set in the wks 
file, wic falls
back to '/dev/sda' as the default device entry, which may or may not be valid.
Avoid starting to guess if we don't know anything and just skip the partition 
in that case,
except for the root partition where we add back '/dev/root' as a reasonable 
default,
because we can rely on it in the yocto/oe environment.

The result is now like this:

proc                 /proc                proc       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/volatile        tmpfs      defaults              0  0

/dev/root       /       ext4    defaults        1       1

Signed-off-by: Markus Volk <[email protected]>
---
 scripts/lib/wic/ksparser.py              |  3 ++-
 scripts/lib/wic/partition.py             |  1 +
 scripts/lib/wic/plugins/imager/direct.py | 20 +++++++++++++++++---
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index d1e546b12d..7cf53b3b4a 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -155,6 +155,7 @@ class KickStart():
         part.add_argument('--change-directory')
         part.add_argument("--extra-space", type=sizetype("M"))
         part.add_argument('--fsoptions', dest='fsopts')
+        part.add_argument('--fsdump', dest='fsdump')
         part.add_argument('--fspassno', dest='fspassno')
         part.add_argument('--fstype', default='vfat',
                           choices=('ext2', 'ext3', 'ext4', 'btrfs',
@@ -164,7 +165,7 @@ class KickStart():
         part.add_argument('--label')
         part.add_argument('--use-label', action='store_true')
         part.add_argument('--no-table', action='store_true')
-        part.add_argument('--ondisk', '--ondrive', dest='disk', default='sda')
+        part.add_argument('--ondisk', '--ondrive', dest='disk')
         part.add_argument("--overhead-factor", type=overheadtype)
         part.add_argument('--part-name')
         part.add_argument('--part-type')
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index 2a916e077c..113713cf16 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -33,6 +33,7 @@ class Partition():
         self.include_path = args.include_path
         self.change_directory = args.change_directory
         self.fsopts = args.fsopts
+        self.fsdump = args.fsdump
         self.fspassno = args.fspassno
         self.fstype = args.fstype
         self.label = args.label
diff --git a/scripts/lib/wic/plugins/imager/direct.py 
b/scripts/lib/wic/plugins/imager/direct.py
index dfaa901567..ff626b8109 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -114,12 +114,20 @@ class DirectPlugin(ImagerPlugin):
         with open(fstab_path) as fstab:
             fstab_lines = fstab.readlines()
 
+        for line in fstab_lines:
+            if '/dev/root' in line:
+                fstab_lines.remove(line)
+
         updated = False
         for part in self.parts:
             if not part.realnum or not part.mountpoint \
-               or part.mountpoint == "/" or not 
(part.mountpoint.startswith('/') or part.mountpoint == "swap"):
+               or not (part.mountpoint.startswith('/') or part.mountpoint == 
"swap"):
                 continue
 
+            if part.mountpoint == "/":
+                part.fsdump = part.fsdump if part.fsdump else "1"
+                part.fspassno = part.fspassno if part.fspassno else "1"
+
             if part.use_uuid:
                 if part.fsuuid:
                     # FAT UUID is different from others
@@ -132,15 +140,21 @@ class DirectPlugin(ImagerPlugin):
                     device_name = "PARTUUID=%s" % part.uuid
             elif part.use_label:
                 device_name = "LABEL=%s" % part.label
-            else:
+            elif part.disk:
                 # mmc device partitions are named mmcblk0p1, mmcblk0p2..
                 prefix = 'p' if  part.disk.startswith('mmcblk') else ''
                 device_name = "/dev/%s%s%d" % (part.disk, prefix, part.realnum)
+            elif part.mountpoint == "/":
+                # use /dev/root as fallback device
+                device_name = "/dev/root"
+            else:
+                continue
 
             opts = part.fsopts if part.fsopts else "defaults"
+            dump = part.fsdump if part.fsdump else "0"
             passno = part.fspassno if part.fspassno else "0"
             line = "\t".join([device_name, part.mountpoint, part.fstype,
-                              opts, "0", passno]) + "\n"
+                              opts, dump, passno]) + "\n"
 
             fstab_lines.append(line)
             updated = True
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#176815): 
https://lists.openembedded.org/g/openembedded-core/message/176815
Mute This Topic: https://lists.openembedded.org/mt/96806003/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to