By default, Raspberry Pi boots up and stores all of its programs on a microSD memory card, which has a maximum theoretical bandwidth of 50 MBps on the Raspberry Pi 4 and just 25 MBps on prior models. Using an external SSD as your main storage drive could speed things up significantly, but up until just recently, you couldn't boot the Pi 4 off a USB device. However, new beta-level firmware lets you do just that.
In our real-life tests of a Raspberry Pi 4 with SSD last year we got impressive performance with sequential transfer rates as high as 140 MB / 208 MBps for reading and writing. You can also use a standard USB flash drive, though we found the performance worse than a microSD card on many tasks.
Update (5/28): The most recent Raspberry Pi OS (formerly Raspbian) update breaks USB booting by replacing the *.elf files with bad ones. You can fix the problem by downloading all the *.elf and *.dat files from the /boot folder of the May 22nd software version on git and then copying them over the same files on your USB drive. The install instructions below have been updated to reflect this solution.
How to Boot Raspberry Pi 4 from USB
1. Boot from a standard microSD card with the latest Raspberry Pi OS on it.
2. Update your OS by typing:
sudo apt update sudo apt full-upgrade
3. Edit the /etc/default/rpi-eeprom-update file and change the FIRMWARE_RELEASE_STATUS value from "critical" to "beta." You can edit the file by typing:
Sudo nano /etc/default/rpi-eeprom-update
After making the change, hit CTRL+X to exit. Make sure you enter Y when asked whether you want to save.
4. Install the beta bootloader by entering:
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin
If this fails, it's possible that there's a newer beta with a different filename. Check the /lib/firmware/raspberrypi/bootloader/beta/ directory to find out.
6. Check the firmware version to make sure your update took. You can get the version by typing:
You should see that the firmware date matches the name of the beta file, which in our case was May 15th.
7. Copy your microSD card to your USB drive or burn a new Raspberry Pi OS image to your USB drive. Note that NOOBS, which has a recovery partition, doesn't work for this (you need plain Raspberry Pi OS). You can copy your existing microSD card by using the SD Card Copier application (under accessories) that comes with Raspberry Pi OS. To burn a fresh install of Raspberry Pi OS onto your USB drive, use Raspberry Pi Imager as you normally would when setting up a Raspberry Pi.
8. Grab all the *.dat and *.elf files from the /boot folder of the Raspberry Pi firmware release from May 22. The current version of the .elf files does not work. The easiest way to get the files is to download the entire firmware release as a .zip file from Git and then copy the files out of the /boot folder on the .zip.
9. Copy the *.dat and *.elf files into the boot partition on your USB drive, allowing them to overwrite the files with the same names.
10. Shutdown your Raspberry Pi and remove the microSD card.
You should now be able to boot your Raspberry Pi 4 off of the USB device. Keep in mind that, if you are using an external drive that saps a lot of power from the bus, you may have issues (which you could probably solve by using a drive that has its own power source or by using a powered USB hub).
For example, we had problems using a bus-powered, external Kingston HyperX SSD, which booted but -- perhaps because of how much power it was using -- none of our peripherals would work. A SATA SSD in a externally powered dock worked fine as did a USB Flash drive.