All,
I’m coming from a Xilinx background where there is no real toolchain for initrds and it’s pretty open-ended what you can boot.
With the NX and Jetson/Linux_for_Tegra, it appears there is some requirements for a custom initrd. My intent is to replace the initrd in QSPI flash and use that as my rootfs as I have a highly embedded device and don’t want to rely on the eMMC or SD card for booting.
I created an initrd with buildroot 2022-02. This spits out a rootfs.cpio
in which I gzip and place at Linux_for_Tegra/bootloader/l4t_initrd.img
. When I run ./flash.sh
, I get the following error:
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
[ 0.0003 ] Generating signature
[ 0.0008 ] tegrasign_v2 --key --getmode mode.txt
[ 0.0012 ] Assuming zero filled SBK key
[ 0.0017 ]
[ 0.0023 ] header_magic: 414e4452
[ 0.0035 ] tegrahost_v2 --chip 0x19 --align 1_boot.img
[ 0.0044 ]
[ 0.0049 ] tegrahost_v2 --chip 0x19 0 --magicid DATA --appendsigheader 1_boot.img zerosbk
[ 0.0052 ] adding BCH for 1_boot.img
[ 1.1072 ]
[ 1.1083 ] tegrasign_v2 --key --list 1_boot_sigheader.img_list.xml --pubkeyhash pub_key.key
[ 1.1088 ] Assuming zero filled SBK key
[ 1.1513 ]
[ 1.1521 ] tegrahost_v2 --chip 0x19 0 --updatesigheader 1_boot_sigheader.img.encrypt 1_boot_sigheader.img.hash zerosbk
[ 1.7234 ]
[ 1.7505 ] Signed file: /home/aclark/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img.encrypt
l4t_sign_image.sh: Generate header for boot_sigheader.img.encrypt
l4t_sign_image.sh: chip 0x19: add 0x2d0b800 to offset 0x8 in sig file
l4t_sign_image.sh: Generate 16-byte-size-aligned base file for boot_sigheader.img.encrypt
l4t_sign_image.sh: the signed file is /home/aclark/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img.encrypt
done.
Making recovery ramdisk for recovery image...
Re-generating recovery ramdisk for recovery image...
~/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader/ramdisk_tmp ~/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader ~/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra
64001 blocks
_BASE_KERNEL_VERSION=4.9.201-tegra
cp: cannot create regular file '/home/aclark/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader/ramdisk_tmp//lib/aarch64-linux-gnu/ld-2.27.so': No such file or directory
failed command: cp -fv /home/aclark/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/rootfs/lib/aarch64-linux-gnu/ld-2.27.so /home/aclark/nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_XAVIER_NX_DEVKIT/Linux_for_Tegra/bootloader/ramdisk_tmp//lib/aarch64-linux-gnu/ld-2.27.so
It is true that my initrd does not have /lib/aarch64-linux-gnu/ld-2.27.so
, instead, I have /lib/ld-linux-armhf.so.3
.
What use does the flashing tool have in introspecting my initrd?
Can I skip creating the “recovery ramdisk”? Or, is this ramdisk the recovery ramdisk?
Thanks!