This is just a quick post of my experience with trying to boot from USB on the Raspberry Pi 4.
I know that there are a huge amount of posts regarding this, but most of them do not apply to the raspberry pi 4 or they are simply huge (the sticky one in this forum has ~550 replies and the first post does not seem to apply to the RPi4).
Currently the RPi4 does not support boot-over-USB, so the SD-card need to contain /boot, while the USB-drive can contain the rest. I had a Samsung EVO 970 Plus 1 TB NVMe laying around, so I used an external enclosure from StarTech.com (https://www.startech.com/HDD/Enclosures ... M2E1BMU31C) with a ASMedia ASM2362 USB 3.1g2-to-NVMe bridge chip to connect to the RPi4 (and yes, I know, these two are crazy overkill for the RPi4!).
After having burned the raspbian images to both the SD-card and the USB-drive from Windows, I initially booted up on the SD-card to see that everything was working. I attached the USB-drive to the RPi4, the blue led on the enclsoure powered up, but no drive was available in Linux.
After digging around in the output of dmesg it seemed the drive was recognized and added to /dev/sda, but there were some strange messages in it as well (some unrecognized commands and stuff).
Looking into the the datasheet of the EVO 970, I found that the drive could use up to 8-9 W (!). My USB-C power supply (original RPi4 power supply) seems to be able to to deliver 3A@5.1 V with the RPi (plus keyboard/mouse) taking up around 5-8 W, so I figured it was probably marginal.
I attached an externally powered USB3 hub, and voilá! everything was working!
I then followed https://jamesachambers.com/raspberry-pi ... sh-drives/ (you can jump to the section "USB Boot Instructions" but there is some good stuff about known working SB enclosures) to use the USB drive as system drive.
I have been running it for a few days now and have observed the following:
- The RPi4 is SO much more responsive when running from the USB-drive. It's a massive improvement. Especially when doing "heavy" disk I/O you will really feel the difference: With the stock SD-card, when doing a long apt update/upgrade/install there were times when my browser simply stopped responding for several seconds every 1-5 seconds. Long compile-jobs can now just run and I don't even notice any slowdown.
- Boot-up time is actually not that much different (but hey, it was already pretty fast).
- Application startup is improved quite a bit.
- I would NOT recommend using an NVMe drive for this; at least not the one I have been using. The drive enclosure gets incredibly hot (uncomfortably so). The enclosure from StarTech.com I have been using does not have ANY way of transmitting heat from the SSD to the enclosure, so the heat is purely based on air-convection; I am too much of a chicken to try to touch the actual SSD but it is surely in the ~100 degC range. No matter how you look at it, this can not be good for the longevity of the drive. Although the NVMe drive may be slightly faster than others in theory, this should not make a difference in reality due to the USB3.0 I/F on the RPi4. I will still be using it, but I will ditch the alu enclosure from StarTech and simply use the bridge PCB only and add a heat-sink with some air flow to the SSD.
- If you use an old USB3 enabled SSD disk, you may not run into power-problems. I don't know if my problems were due to the 15W original USB-C power supply or something else, but if you have problems, try to go through an externally powered USB3 hub.