Booting Linux off an NVMe SSD on an older computer
Most pre-2015 computers, like my HP Z230 workstation, are only able to boot off of SATA disks. While SATA SSDs are perfectly adequate for most workloads, I wanted to install my operating system on a much faster PCIe-based NVMe SSD. While the computer can’t boot directly off the NVMe drive, you can still trick it into doing so. By installing the GRUB bootloader to a SATA SSD or hard drive, you can effectively boot an operating system off the SSD.
Here is how I did this on Debian:
First, on the SATA SSD, I created 2 partitions: a 100MB EFI System Partition, and a 250MB
The Debian installer will install the GRUB bootloader on this disk, as it is the one that contains the EFI system partition. The
/boot partition MUST be on this disk, otherwise the operating system will be unbootable.
Next, I created a root partition and my other partitions (
/home, etc) on the NVMe SSD. Keep in mind that you can also use your SATA disk for other partitions as well. In my case, I created a swap partition and kept the rest of the disk empty.
For reference, my final partition layout looks like this:
colin@z230:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 111.8G 0 disk ├─sdb1 8:17 0 94M 0 part /boot/efi ├─sdb2 8:18 0 238M 0 part /boot └─sdb3 8:19 0 7.5G 0 part [SWAP] nvme0n1 259:0 0 238.5G 0 disk ├─nvme0n1p1 259:1 0 59.6G 0 part / └─nvme0n1p2 259:2 0 178.9G 0 part /home
That is all you need to do. When the installation is complete, you should see the bootloader screen like you would on a traditional install.