Booting From /dev/sdb

When installing a new OS, I am quite used to booting a computer from a USB drive. However, from way back in the days I faintly remember that connecting a drive with an installed Linux system with a SATA to USB adapter to a notebook / server would not work. Particularly so when the notebook / server already contains a disk drive that uses the default SATA port (/dev/sda). But I recently discovered that things have become way better these days!

One of the reasons why this did not work before was that configuration files such as /etc/fstab and /etc/crypttab (e.g. for a LUKS encrypted home partition) contained partition information based on physical devices or partitions, e.g. /dev/sda. So when the the disk or SSD was then connected to /dev/sdb (USB) instead of /dev/sda and booted, the partitions would not be found and the startup process halted.

But times have changed! These days, partitions declared in fstab and crypttab use UUIDs instead of physical device identifiers. This fixes the problem as the Linux kernel gets the UUIDs of all partitions on all available drives during the boot process and mounts them independently of where they were found.

And this is exactly what I need. I can now boot into a Linux installation on an SSD connected via USB and use it in the same way as if the SSD was actually installed in the notebook / server. The partitions of internal SSD the device normally boots from are not even mounted automatically. In other words: No need anymore to open the notebook and remove or swap the SSD in place. I tried this with a Lenovo X230 notebook from 2013 with UEFI boot enabled, so this is definitely not limited to new hardware.