At the moment, booting from USB is available for the Raspberry Pi version: 2B v1.2, 3A +, 3B, 3B + and 4B.
To enable booting from USB, add the line to config.txt on the memory card:
program_usb_boot_mode=1
Warning! This can only be done once and cannot be undone! Setting this flag changes the OTP i.e. programmable memory only once, you can read more here:
https://en.wikipedia.org/wiki/Programmable_read-only_memory
To check if memory was programmed successful use command:
vcgencmd otp_dump | grep 17
And check if the value 0x3020000
is returned, if not, repeat again. If the value is correct, then from now on we can boot our Raspberry from a memory connected to USB (pendrive, HDD or SSD).
Pendrive:
W przypadku pendrive’ów nie napotkałem na problemy. System startował za każdym razem.
HDD:
In the case of the 320GB WD Scorpio Blue HDD, I was able to start the system in two of the three tested configurations.
Configuration 1 – Drive connected to the USB 3.0 supporting case (without external power supply) – the system did not start.
Configuration 2 – Disk connected to SATA -> USB 2.0 adapter with additional power supply in the form of a USB power supply. The system booted up without problems.
Configuration 3 – The drive is connected to the Unitek Y-3324 adapter that supports USB 3.0 with an external power supply. The system booted up without problems.
What’s next?
In the next post I will try to prepare a tutorial on system migration from a memory card to a hard drive.
Source: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md