Just a short article on how you can select the boot device from the serial console of a NVIDIA Jetson Development Kit. Looky here:
In the last few articles, we covered attaching external storage to the Jetson TX1. We then point the root directory so that during boot time the Jetson runs from external storage. This helps expand the amount of storage on the root device past that of the 16 GB of the internal eMMC.
The serial console is wired into the Jetson TX1 using a USB-TO-TTL serial cable. On a Jetson TK1, the wiring to the serial console is different, but the process on the connected host is the same.
Modifying the extlinux.conf file on the Jetson allows for different booting options to be made available over the serial console. Each device entry has a MENU LABEL which represents the device and is presented to the user during boot over the serial console. On the connected host machine, tapping a key while the Jetson is booting allows us to select the boot device option.
And I would do this why?
There are a few of reasons you may want to use this capability. First, you may want to use it if you need to debug your extlinux.conf file when you change it. The next couple of reasons are for the case when external storage is being used as the root device.
The second reason to use this method is in the case where the root device gets buggered, but you still need to be able to access the Jetson. By having a clean internal eMMC installation, you should be able to boot to the internal eMMC and still be able to examine the other external devices. This provides a margin of comfort in case there are issues and the Jetson won’t boot.
Another reason is that some boot devices are removable media, such as USB drives. Especially when the Jetson is in a space where different people use it, it’s not uncommon for the USB drive to be mistakenly removed and taken away. Without the USB device, the Jetson won’t boot, and the console output may make it look like the Jetson is hopelessly broken. Using the serial console, you can at least boot to the internal eMMC.
Having a SD Card that is a boot device is another safety backup, as the Jetson will attempt to boot from the SD Card before it try to boot from other devices.
Again a great tutorial.
Can you show how to modify the extlinux.conf file so it can be replicated?
Thanks for the kind words. The extlinux.conf in the video was modified by following the guide in this article: http://wp.me/p7ZgI9-Ju
There are a couple of other articles that did similar things, such as running from a USB drive. You can have several different boot configurations in the extlinux.conf file, this example just shows a simple case. Thanks for reading!
I installed SSD by following your tutorial and was working perfect. I had to remove SSD without any modification and device stuck on boot and says : waiting for boot device sda1. Is this normal problem or can I change easily ? Thanks.
The SSD tutorial sets the root directory to point at the SSD. If you remove the SSD the machine doesn’t know where to boot from, and gets stuck.
In the tutorial the extlinux.conf file is modified when setting to the root directory to the SSD. We modified it so that there is a copy of the original boot path from the eMMC. You can see in the video that you can stop the boot process and select the eMMC entry at around the 1:47 mark.
To set the machine to boot from the eMMC, you will need to modify the extlinux.conf file to set the primary entry to point to the eMMC. Hope this helps.
Thank you. So the easiest process without losing data is serial port it seems. I wish I was able to edit files without additional hardware.
Right, it’s not as forgiving as a traditional PC type of environment. The main issue is that the machine doesn’t have boot firmware that you can interact with like a PC bios.
And the last question; Cable arrived but I don’t have Linux installed pc right now. Can I use Windows ? Thanks.
Sure, you can use Windows. Just make sure that your terminal emulator is set to the right baud rates and such. Good luck!