For TX1 and TX2 up to L4T R28.x, custom kernel Image can be put in any location and pointed by extlinux.conf.
For Xavier, uboot is not used, does this means new kernel Image must be flashed to a particular partition (32)? Is kernel Image encrypted? Can “dd” be used to flash kernel Image to kernel partition from Xavier?
Is kernel dtb encrypted?
I have rebuilt kernel on Xavier and would like to know if I can flash it using “dd”.
Hi vickyy,
I have been following that link, but my questions are different.
While it may take a while for Nvidia to support kernel selection, we need to test custom kernels in order to use Xavier for our cameras now.
My questions are if kernel Images and DTBs can be flashed using “dd” from Xavier instead from Ubuntu host through micro USB.
Thanks
On my Xavier the primary kernel is in partition 29. I used gdisk -l to list the partitions. The unencrypted primary dtb is in partition 31. I built a kernel and installed it using flash.sh but haven’t yet attempted to dd it.
I was able to update the DTB using dd. I had trouble flashing the DTB using flash.sh. It seems like flash.sh is ignoring the -d option and using the default DTB file.
growe,
That’s very helpful. My preference is building kernel/dtb on Xavier and using “dd” to update kernel/dtb.
I’ll try when I get access of my Xavier later today.
Thanks
If you build dtb then make sure you are using the “signed” version of the dtb to dd it to /dev/mmcblk0p31. Or use flash.sh to flash the kernel-dtb partition (-k kernel-dtb). Just dd’ing the built dtb won’t work.
Anish is correct. Just dding the DTB to partition 31 doesn’t work.
I’ve also encountered a problem with flash.sh in JetPack 4.0 where it is ignoring the DTB specified with -d. I found that I can flash my DTB if I copy it to Linux_for_Tegra/kernel/dtbs prior to attempting to flash.
On Jetson Tx2 I used to dd the encrypted DTB but I don’t know where to find that yet for Xavier.
Thanks for clarifying Xavier dtb, i.e., R31 is similar to R28.2.x.
Some flashing kernel/dtb issues on host side could be resolved by modifying flash.sh/falsh.py and other dependencies.
Unfortunately the signing code is binary without source code and only runs on X86 machines, in order to use “dd” on Xavier, a X86 host must be used to generate signed dtb and copied to Xavier.
This has discouraged us to update to R28.2.x and switch to TX2i.
qemu-x86 might be useful to run some other X86 code on TX2/Xavier as well. It’s worth is to try if “flash.sh” and it’s dependencies can run under qemu-x86. It’s an option for systems without access to the recover USB port and recover button.
I was able to use “dd” to flash kernel Image to mmcblk0p29 and dtb to mmcblk0p31.
The dtb is unsigned under “bootloader”:
Linux_for_Tegra/bootloader/tegra194-p2888-0001-p2822-0000.dtb
The kernel Image is (signed?) under “bootloader”:
Linux_for_Tegra/bootloader/boot.img
I have decompiled, changed path and data/time, recompiled “tegra194-p2888-0001-p2822-0000.dtb” under bootloader, flashed it to mmcblk0p31 and verified the changes I made.
It appears flash.sh only changed “bootargs” in original dtb in “kernel/dtb”:
in original dtb:
bootargs = “console=ttyTCU0,115200”;
in new dtb:
bootargs = "root=/dev/mmcblk0p1 rw rootwait console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4 OS=l4t ";