In my TX2 I used the /boot/extlinux/extlinux.conf to add my alternate kernel to the device. How can I do the same in the Jetson Xavier? The /boot/extlinux/extlinux.conf does not exist in the new device.
It’s /hilarious/ that a kernel image is placed into /boot/Image
, but it’s not actually read at all! Hilarious!
What was wrong with u-boot? u-boot is feature complete. cboot is by far from it. I don’t get why NV had to steer away from what people already know works here. It dosen’t seem to make much sense to me, but perhaps someone could enlighten me from NV?
To answer your question, you can place it into the JetPack installation folders (you can’t miss them inside of Linux_for_Tegra there’s “kernel” and “bootloader”, both used for slightly different things (eg dtbs / kernel image + headers + modules/fw aka “supplements”). Check them out).
After that you can re-flash over USB (flash.sh). I really hope this isn’t the expected use case.
If you watch the output, you’ll notice it is creating and uploading a boot image. These get flashed into a different area than the root filesystem, or at least it appears to us as such, but I’m guessing is more than likely a separate flash chip.
I just installed my kernel yesterday, so I haven’t looked much into how to replace it manually. Before we could just dd
it, now it appears not so much. Hopefully there’s a driver already out there and it’s just turned off (like everything else in the provided kernel.)
Why doesn’t NVidia use debs to distribute all of the “additions” that are just copied over top? That way updates could be handled sanely. They wouldn’t have to maintain this flurry of long overly complex shell scripts to accomplish rather simple things. It really doesn’t take that much time to do it this way and it’s much more maintainable.
Why doesn’t NVidia use the long existing methods of building an ubuntu/debian kernel from source? I’ve been using the jetson line since the TK1s, and this and the above have been always at the back of my mind. It’s… strange that we’ve basically all been forced to compile our own kernels just to use the jetson line of devices for day to day stuff, such as utilizing your run-of-the-mill standard ath10k wireless card.
I’m mostly just curious here, I’m not bashing. I really just want to understand the point in this; it just seems… so much harder for NVidia to do it in the way they have been, which, no offense meant, but, has not been to the benefit of us or them as far as I have been able to tell.
Oh wow, lol, I was fooled by the low partition number root is on (now?) ! It’s still here as a partition on the mmc:
29 59329272 59460343 64.0 MiB 0700 kernel
30 59460344 59591415 64.0 MiB 0700 kernel_b
31 59591416 59592439 512.0 KiB 0700 kernel-dtb
32 59592440 59593463 512.0 KiB 0700 kernel-dtb_b
I wonder how to select the second slot? Could be as simple as a button press on boot.
Hi akatrevorjay,
Do you mean the backup kernel partition?
Yeah, I’m guessing it’s actually controlled by nvbootctrl
from the looks of it?
How do I get access to the Xavier documentation, by the way? A little frustrating to not be able to click into the links posted ;)
I assume this is a new thing?
Please try to use below website. Is there any trouble?
Jetson Download Center | NVIDIA Developer → L4T documentation with release 31.
Thanks akatrevorjay for your answer. However, can you/WayneWWW help me understand this further: Will the flash.sh script replace the old kernel image with the new one? Or will it place it as an additional kernel, as you have pointed with kernel_b?
In that case I would have the question: How do I choose the second kernel during boot?
A note on the above URL…you have to log in to that before you can see content. However, once logged in, it won’t redirect to your original URL. You will have to click a second time on the URL.
Per checked your request again and found your demand is not same as the what I thought…
kernel_b is a tolerance design for error. Once primary kernel partition is broken, it will fallback to this backup.
BTW, still no answer on why Uboot was removed in first place. Or if there’s another way to have different kernels on the system and choose them during boot without actually flashing the partition in the first place.
Please let us know if there’s a simpler way than to actually use a host machine all the time. Even ‘dd’ is not working.
Hi karthik, you have to mention the partition you want the kernel “Image” to be flashed. This is specified on the flash.sh script’s command line. For e.g.
For mmcblk0p29 partition (kernel)
sudo ./flash.sh -k kernel jetson-xavier mmcblk0p1
For mmcblk0p30 partition (kernel_b)
sudo ./flash.sh -k kernel_b jetson-xavier mmcblk0p1
I ended up flashing the kernel. However, it would still be useful to know if I can add an alternate kernel and then choose it during boot.
I have not yet found out an easier way to boot the system with an alternate kernel. I am gonna experiment with the u-boot source provide by NVIDIA but dunno when.
Please report back if/when you are able to look into this.
Sure. But I am not sure when I will get time to work on that. Hopefully soon :)