
Hi Patrick,
Am Fr., 14. Juni 2019 um 23:05 Uhr schrieb Patrick Doyle wpdster@gmail.com:
I just created my initramfs and inserted it into my fit-image.its file. When I booted, I saw the following:
Trying 'ramdisk' ramdisk subimage Description: Bootstrap ramdisk Type: RAMDisk Image Compression: gzip compressed Data Start: 0x811ae9f0 Data Size: 2613908 Bytes = 2.5 MiB Architecture: MIPS OS: Linux Load Address: 0x00000000 Entry Point: 0x00000000 Hash algo: sha256 Hash value: 0faa7c3e4927b685cd5a050112ea6b90ad4dec4e4ea8627b4f589bfc60082eba Verifying Hash Integrity ... sha256+ OK Uncompressing Kernel Image ... OK Loading Ramdisk to 83ad9000, end 83d57294 ... OK Loading Ramdisk to 8385a000, end 83ad8294 ... OK [ 0.000000] Linux version 4.14.115-yocto-standard-custom (oe-user@oe-host) (gcc version 8.3.0 (GCC)) #1 Fri Jun 14 19:49:57 UTC 2019 [ 0.000000] Board has DDR2 [ 0.000000] Analog PMU set to hw control [ 0.000000] Digital PMU set to hw control [ 0.000000] SoC Type: MediaTek MT7688 ver:1 eco:2 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 00019655 (MIPS 24KEc) [ 0.000000] MIPS: machine is MediaTek LinkIt Smart 7688 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 04000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd
Does anybody have any hints as to why the Ramdisk would be relocated twice?
This have been fixed with e5151666364e64e6ca6e554e3d53f2a53fbc1800.
Does anybody have any hints as to why the kernel didn't notice the ramdisk?
Could you share your U-Boot version and board config, particulary the CONFIG_MIPS_BOOT_* options. For boot with DT hand-over you'll need 6943cc9732202b9c65990cff9f74cea6b8173e09 with mainline Linux.
As you may notice, I am building these images with Yocto. The Yocto documentation advvices to bundle the initramfs with the kernel image, which I can do. But I am presented with two options here: bundle it with the kernel (which has been around since forwver), or bundle it in the FIT Image. I decided to assume that the Yocto documentation was a bit out of date and started by bundling it with my FIT image.
I strongly recommend a FIT image with separate Linux, initramfs and DT images and to use DT hand-over by U-Boot (CONFIG_MIPS_BOOT_FDT) when booting from traditional flash media. Then you have the full flexibility with making initramfs optional or to support multiple DT blobs. If you want to boot from a file system (e.g. FAT32 on MMC) you could checkout CONFIG_DISTRO and don't use U-Boot's mkimage at all.
I will try doing what the documentation said to do next, but in the mean time, I thought I would ask what others have experienced with booting FIT Images with RAM disks. (For my particular application, I only ever need one configuration, with one kernel, one fdt, and one ramdisk, all of which could be bundled into the one kernel... so arguably, I don't need the flexibility of bundling it in the FIT image).
Thanks for any tips.
Another advantage of FIT is the massively decreased build times during development. You can simply update initramfs or DTB's of a kernel image within (mili-)seconds because you don't need to invoke Linux Kbuild to re-link vmlinux and to run some compression algo afterwards. But I'm not sure how relevant this is inside the Yocto build environment.