Fail to boot from thunderbolt drive

I have an iMac 2017 with 27" screen. I can boot from USB and have my home directories mount on a thunderbolt connected SSD, but it is impossible to have the entire OS on a thunderbolt external drive.

Is there a way to have the thunderbolt driver load with UEFI so the drive can be seen during the boot loader phase? While it works using an external USB with a SSD in it, the drive is far slower over USB than thunderbolt.

Or is there a boot sequence where I can have minimal directories available until thunderbolt driver has loaded so I can then mount the rest of the OS on the faster drive?

Any pointers would be welcome as I have a 2TB M.2 that is blazing fast (compared to the rest of the internal drives) that I would like to use.

I guess you could put the boot code on a USB and pivot to the system on the thunderbolt drive.

The idea would be that you boot a kernel and initramfs from the USB.
The initramfs loads the thunderbolt drivers.
Now the initramfs can pivot onto the file system on the thunderbolt drive.

I am guessing you would do a full install on the thunderbolt drive.
Then use a script you write to create the USB boot drive from file installed on the thunderbolt drive.

I wonder if it is as simple as copying the /boot/… to the USB drive?

Upgrading the system would be tricky as you would need to be able to update your boot USB each time. I would script this for debug and maintenance.

Thanks for the ideas. I tried the /boot idea previously, but that did not work due to udev being required to load for thunderbolt to mount the drive. I’m still researching what is required for thunderbolt to present a drive for mounting. Journalctl shows it happening much later than usb, although thunderbolt does appear earlier, it seems to fail (possibly due to selinux rules of some sort). To get my home drive to mount I had to create a service job file so it would be mounted before I login, but not try to mount with the drives in fstab as that would always hang the system.