瀏覽代碼

wic/rootfs-u-boot: Allow to set root with source_params

If the root device needs to be modified during boot it needs
to be set as source parameter in the wic file similar to efi
boot.

Signed-off-by: Quirin Gylstorff <quirin.gylstorff@siemens.com>
Quirin Gylstorff 3 年之前
父節點
當前提交
716e5d318f

+ 1 - 1
meta-isar/scripts/lib/wic/canned-wks/bananapi.wks

@@ -1,5 +1,5 @@
 part u-boot --source rawcopy --sourceparams "file=/usr/lib/u-boot/Bananapi/u-boot-sunxi-with-spl.bin" --no-table --align 8
 
-part / --source rootfs-u-boot --ondisk mmcblk0 --fstype ext4 --mkfs-extraopts "-T default" --label platform --align 1024
+part --source rootfs-u-boot --ondisk mmcblk0 --sourceparams="root=/dev/mmcblk0p1" --fstype ext4 --mkfs-extraopts "-T default" --label platform --align 1024
 
 bootloader --append "rootwait"

+ 8 - 1
meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py

@@ -60,6 +60,13 @@ class RootfsUBootPlugin(RootfsPlugin):
                                (rootfs_dir, image_rootfs_dir))
             real_rootfs_dir = image_rootfs_dir
 
+        root_dev = cr.rootdev
+        if not root_dev:
+            root_dev = source_params.get("root", None)
+            if not root_dev:
+                raise WicError("root not defined, exiting.")
+            root_dev = root_dev.replace(":", "=")
+
         u_boot_script = os.path.join(real_rootfs_dir,
                                      "etc/default/u-boot-script")
         if not os.path.exists(u_boot_script):
@@ -70,7 +77,7 @@ class RootfsUBootPlugin(RootfsPlugin):
             cfg.write('# Generated by wic, rootfs-u-boot plugin\n')
             cfg.write('ROOT_PARTITION="%d"\n' % part.realnum)
             cfg.write('KERNEL_ARGS="root=%s %s"\n' % \
-                (cr.rootdev, cr.ks.bootloader.append or ""))
+                (root_dev, cr.ks.bootloader.append or ""))
             no_initrd = source_params.get('no_initrd') or ''
             cfg.write('NO_INITRD="%s"\n' % no_initrd)
             overlays = source_params.get('overlays') or ''