You can also now boot from a USB attached hard-drive or SSD with no microSD card involved. You have to do this after booting from an SD card however because all Raspberry Pi 4 models ship with an EEPROM configuration that boots from SD cards only. But we can change that.
The first check you’ve got an up to date EEPROM version on your Pi 4:
sudo apt install rpi-eeprom
Extract the current bootloader configuration to a text file:
sudo vcgencmd bootloader_config > bootconf.txt
Next we need to set the
BOOT_ORDER option to
0xf41 (meaning attempt SD card, then USB mass-storage device, then repeat; see pi4 bootloader configuration for more information).
Alternatively vim bootconf.txt and make the edits yourself if you don’t like sed-hacking
sed -i -e '/^BOOT_ORDER=/ s/=.*$/=0xf41/' bootconf.txt
Now we generate a copy of the EEPROM with the update configuration:
rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt /lib/firmware/raspberrypi/bootloader/critical/pieeprom-2020-09-03.bin
Set the system to flash the new EEPROM firmware on the next boot
sudo rpi-eeprom-update -d -f ./pieeprom-new.bin
To apply any changes (the EEPROM is only updated during the early stages of boot)
Now we need to get the image onto a hard drive. That’s the easy part. If you roll this tutorial back to “Prepare the SDcard” and go through it replacing “SD card” with “Hard Drive” you’ll have it.
You should now be able to boot from your hard-drive. Congratulations.
Be aware that some drives have issues being used to boot the Pi. In particular:
- Spinning hard-disks required a lot more power than SSDs and will very likely require a powered USB hub.
- Hubs themselves can cause compatibility issues, so you’re better off with an SSD to boot off (typically no need for a hub and no spin-up time issues).
There’s lots of good information on both the Pi forums and various GitHub issues for debugging boot issues; here’s a selection of links in a rough “look at this first” order from our top Pi guy: