From 7a92d09dbfbbb09327b4aea686fe71a7472fddca Mon Sep 17 00:00:00 2001 From: Marek Szyprowski Date: Mon, 7 Oct 2024 11:44:00 +0200 Subject: [PATCH] tizen: bootscript: unpack initramfs and pass its actual size to kernel The initramfs ramdisk image (CPIO compressed archive) is stored on the separate ramdisk/ramdisk-recovery partitions, thus it is not possible to determine size of the compresszed archive. Passing the size of the partition as the size of initramfs image to the kernel instructs the kernel to check if the remaining bytes are another CPIO archive with more initramfs data. Decompressing or interpreting such additional garbage bytes sometimes fails, what results in kernel ignoring the whole initramfs data as broken one and thus breaking the Tizen boot sequence. To avoid such problems and dependency on unknown/garbage data from ramdisk partitions, lets decompres initramfs data (CPIO gzip archive) directly in u-boot and pass the kernel only the single, uncompressed CPIO archive as iniramfs image. Signed-off-by: Marek Szyprowski Change-Id: I4d8e532ead5c4775b2eef9272e6121565083d9a0 --- tizen/bootscript/tizen-boot-lpi4a.scr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tizen/bootscript/tizen-boot-lpi4a.scr b/tizen/bootscript/tizen-boot-lpi4a.scr index b6d4f291..aa834e92 100644 --- a/tizen/bootscript/tizen-boot-lpi4a.scr +++ b/tizen/bootscript/tizen-boot-lpi4a.scr @@ -81,6 +81,10 @@ if test -e $devtype $devnum:$ramdiskpart sbin/init; then; elif itest.w *$ramdisk_addr_r == 0x8b1f; then; # check for gzip (initramfs) magic echo "Using initramfs from partition ${ramdiskpart}"; setenv rootargs + setexpr ramdisk2_addr_r $ramdisk_addr_r + $ramdisk_size + unzip $ramdisk_addr_r $ramdisk2_addr_r + setenv ramdisk_size $filesize + setenv ramdisk_addr_r $ramdisk2_addr_r else echo "Booting without initrd/initramfs"; setenv bootmode normal -- 2.34.1