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 051bd6a8a02e9ee7e15c35cb575aecb4c42628d0..5598128f66514f48f050735703511c44a2957f5b 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 d2bb38b4b3dce3478a5ba7c871ff2c08ecabbce1..b609554289d7b0fb0e5a749b4964d3aa290b3678 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 a4926c27b08f49fd5bc3efb3f30785ed1c7e262b..1db55e14fb4ceab2292c205971bd1cc6b6606031 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