Move Kernel to SATA SSD

I’m currently using an SATA SSD as my root device, but I’m wondering if I can boot the kernel off the SSD as well?

In the extlinux.conf there is the “Linux /boot/Image” line that points to where the kernel resides. So I’m tempted to change this to the location on the SSD, but I want to make sure it will work before doing it.

What I’m trying to do is to be able to easily go between a Jetpack 3.1 SSD, and a Jetpack 3.0 SSD.

Where the SSD contains the Kernel, and the rootfile system.

The short answer is “I don’t think so”.

The trouble is that you are essentially running two separate pieces of software which are more or less independent of each other: The U-Boot boot loader, and the Linux kernel. At some point U-Boot loads some files into memory (including device tree and kernel), and then branches to execute the kernel (U-Boot essentially overwrites itself…U-Boot passes on to Linux but does not run simultaneously…the kernel inherits what U-Boot sets up). If U-Boot cannot read the partition, then the kernel cannot be put there even if Linux understands the partition. I believe that what you will find is that a USB SATA drive can have boot files on it, or an SD card, but that the integrated SATA probably cannot (it is a story of how the controller is wired making it available through USB under U-Boot, and the usual PCIe wiring/drivers do not exist in U-Boot).

Thanks. If there isn’t support for the SATA within Uboot then it won’t work.

I’ll look into using an SD card instead. For development I’ll stick with the current setup of booting the kernel off emmc, and then having the rootfs on the SSD.

I was just hoping to use only a fast SATA based SSD.