Warm greetings to the community,
Need some serious help regarding booting FIT images on RPi4.
I am working with a custom kernel and rootfs image for RPi4.
Have cloned this repo - git clone https://gitlab.denx.de/u-boot/u-boot.git
And generated u-boot.bin with the rpi_4_defconfig, and copied it onto my SDCard.
My sdcard's config.txt is pointing to u-boot.bin as kernel=u-boot.bin
Now all this works fine as
RPi Bootloader => u-boot.bin => Image (Custom Linux) => Mounts FS and stuff
Basically now I want to use signs and hashes here. Hence, changing from legacy
Image to FIT Image using mkimage as :
mkimage -f ritman.its -K bcm2711-rpi-4-b-pubkey.dtb -k keys -r image.fit
I am stuck at some error while booting up this image.fit
---------------------------------------------------------------------------------------------------------------------------------
My its file looks like -
/dts-v1/;
/ {
description = "RPi FIT Image";
#address-cells = <2>;
images {
kernel-1 {
description = "default kernel";
data = /incbin/("Image");
type = "kernel";
arch = "arm64";
os = "linux";
compression = "none";
load = <0x00080000>;
entry = <0x00080000>;
hash@1 {
algo = "sha1";
};
};
fdt-1 {
description = "device tree";
data = /incbin/("bcm2711-rpi-4-b.dtb");
type = "flat_dt";
arch = "arm64";
compression = "none";
hash@1 {
algo = "sha1";
};
};
};
configurations {
default = "config-1";
config-1 {
description = "default configuration";
kernel = "kernel-1";
fdt = "fdt-1";
signature-1 {
algo = "sha1,rsa2048";
key-name-hint = "dev";
sign-images = "fdt", "kernel";
};
};
};
};
---------------------------------------------------------------------------------------------------------------------------------
Now, copied the image.fit onto SDCard boot dir. and passed the following
commands as boot.scr.uimg :
setenv bootargs console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2
rootfstype=ext4 rootwait
fatload mmc 0:1 0x1F000000 image.fit
bootm 0x1F000000
---------------------------------------------------------------------------------------------------------------------------------
On boot-up U - Boot throws error as:
0 is current device
Running mmc 0:1...
U-Boot script /boot.scr.uimg
Bytes read in 7 ms (24.4 KiB/s)
Executing script at 02400000
Wrong image format for "source" command
SCRIPT FAILED: continuing...
fdt_check_header(): FDT_ERR_BADMAGIC
running disk [email protected]<mailto:[email protected]>...
did not respond to voltage select!: -110
running disk [email protected]<mailto:[email protected]> ...
[email protected]<mailto:[email protected]> not ready
3 disks
EFI system partition
BootOrder not defined
Boot manager : Cannot load any image
did not respond to voltage select!: -110
Starting USB ...
Networking controllers found
Please issue 'usb start' first
Waiting for PHY auto negotiation to complete...
---------------------------------------------------------------------------------------------------------------------------------
Sorry for not attaching the console output here, basically don't have access to
the board via console at this moment.
Basically, the boot gets stuck at the PHY auto negotiation and after a few
moments, U-Boot shell comes up. As far as I understand I am being dropped into
the shell only because boot.scr couldn't get the kernel from the FIT image.
Any inputs on how to mitigate this issue and boot up the FIT correctly is
highly required and appreciated. Really am not sure what am I getting wrong
here. Any help would be great. Thanks in advance.
Regards,
Ritwik Mandal