Boot Raspberry Pi 4 from USB SSD using Raspberry Pi OS.
Use Raspberry Pi Imager to install Raspberry Pi OS on SD card and USB SSD device.
Boot from SD card to update and configure boot loader.
Update package index.
$ sudo apt update
Upgrade operating system.
$ sudo apt full-upgrade
Update Raspberry firmware and kernel.
$ sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Backing up firmware
*** Backing up modules 5.15.61-v8+
WANT_32BIT:0 WANT_64BIT:1 WANT_PI4:1
#############################################################
WARNING: This update bumps to rpi-5.15.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?t=322879
'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.
DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 113M 100 113M 0 0 7013k 0 0:00:16 0:00:16 --:--:-- 6711k
*** Updating firmware
*** Updating kernel modules
*** depmod 5.15.82-v8+
*** Updating VideoCore libraries
*** Using SoftFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to f7f9019b67eba652e31ffe2321dffbb1fef71160
*** A reboot is needed to activate the new firmware
Reboot operating system.
$ sudo reboot
Check whether the Raspberry Pi 4 bootloader is up to date.
$ sudo rpi-eeprom-update
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
CURRENT: Thu 29 Apr 16:11:25 UTC 2021 (1619712685)
LATEST: Wed 7 Dec 14:24:15 UTC 2022 (1670423055)
RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
Use raspi-config to change the release.
VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138a1
LATEST: 000138a1
Install bootloader and USB (VLI) EEPROM updates.
$ sudo rpi-eeprom-update -a -d
*** INSTALLING EEPROM UPDATES ***
BOOTLOADER: update available
CURRENT: Thu 29 Apr 16:11:25 UTC 2021 (1619712685)
LATEST: Wed 7 Dec 14:24:15 UTC 2022 (1670423055)
RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
Use raspi-config to change the release.
VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138a1
LATEST: 000138a1
CURRENT: Thu 29 Apr 16:11:25 UTC 2021 (1619712685)
UPDATE: Wed 7 Dec 14:24:15 UTC 2022 (1670423055)
BOOTFS: /boot
Using recovery.bin for EEPROM update
EEPROM updates pending. Please reboot to apply the update.
To cancel a pending update run "sudo rpi-eeprom-update -r".
Reboot operating system.
$ sudo reboot
Verify Raspberry Pi 4 bootloader version.
$ sudo rpi-eeprom-update
BOOTLOADER: up to date
CURRENT: Wed 7 Dec 14:24:15 UTC 2022 (1670423055)
LATEST: Wed 7 Dec 14:24:15 UTC 2022 (1670423055)
RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
Use raspi-config to change the release.
VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138a1
LATEST: 000138a1
Execute Raspberry Pi Software Configuration Tool.
$ sudo raspi-config
Configure advanced settings.
Configure boot order.
Change boot order to USB boot.
Save configuration, shutdown Raspberry Pi 4, remove SD card, connect USD SSD and finally boot the device.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
$ uptime
16:26:28 up 1 day, 3:27, 3 users, load average: 1.21, 0.39, 0.25
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 459G 3.9G 436G 1% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.8G 27M 3.8G 1% /dev/shm
tmpfs 1.5G 1.2M 1.5G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda1 255M 31M 225M 12% /boot
tmpfs 764M 28K 764M 1% /run/user/1000
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 256M 0 part /boot
└─sda2 8:2 0 465.5G 0 part /
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
$ lsusb
Bus 002 Device 002: ID 04e8:4001 Samsung Electronics Co., Ltd PSSD T7
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Have fun!