tizen: bootscript: add support for loading initramfs from ramdisk partition 78/306978/5
authorMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 1 Mar 2024 10:14:52 +0000 (11:14 +0100)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Fri, 15 Mar 2024 00:12:45 +0000 (00:12 +0000)
If initrd-style ramdisk is not detected (no filesystem nor /sbin/init
file found), then check ramdisk partition for the gzip magic value and if
detected, load it as initramfs image.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I17933632635b0c20cf672c2484cd714c3739d760

tizen/bootscript/tizen-boot-amlogic-64b.scr
tizen/bootscript/tizen-boot-rpi4.scr
tizen/bootscript/tizen-boot-vf2.scr

index 051bd6a..5598128 100644 (file)
@@ -117,6 +117,13 @@ if load $bootdev $mmcbootdev:$mmcbootpart $tizen_tmp_kernel_addr_r $prefix$kerne
        if test -e mmc $mmcrootdev:$ramdiskpart sbin/init; then;
                echo "Loading Ramdisk from partition"${ramdiskpart};
                mmc read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+       else
+               # Check for gzip (initramfs) magic
+               mmc read $ramdisk_addr_r $ramdisk_start 1;
+               if itest.w *$ramdisk_addr_r == 0x8b1f; then;
+                       echo "Loading initramfs from partition ${ramdiskpart}";
+                       mmc read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+               fi
        fi
        booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr_r;
 fi
index d2bb38b..b609554 100644 (file)
@@ -119,6 +119,13 @@ if load $bootdev $mmcbootdev:$mmcbootpart $tizen_kernel_addr_r $prefix$kernel; t
        if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
                echo "Loading Ramdisk from partition ${ramdiskpart}";
                $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+       else
+               # Check for gzip (initramfs) magic
+               $bootdev read $ramdisk_addr_r $ramdisk_start 1;
+               if itest.w *$ramdisk_addr_r == 0x8b1f; then;
+                       echo "Loading initramfs from partition ${ramdiskpart}";
+                       $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+               fi
        fi
 
        # use fdt already preloaded by the firmware available at $fdt_addr
index a4926c2..1db55e1 100644 (file)
@@ -148,6 +148,15 @@ if load $devtype $devnum:$distro_bootpart $tizen_kernel_addr_r $prefix$kernel; t
                echo "Environment value of ramdiskpart is" ${ramdiskpart};
                $devtype dev $devnum
                $devtype read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+       else
+               # Check for gzip (initramfs) magic
+               $devtype dev $devnum;
+               $devtype read $ramdisk_addr_r $ramdisk_start 1;
+               if itest.w *$ramdisk_addr_r == 0x8b1f; then;
+                       echo "Loading initramfs from partition ${part}";
+                       echo "Environment value of ramdiskpart is" ${ramdiskpart};
+                       $devtype read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+               fi
        fi
 
        if test "${board_name}" = "qemu-riscv"; then