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.

rpi-imager!

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

raspi-config-menu!

Configure advanced settings.

raspi-config-advanced!

Configure boot order.

raspi-config-boot-menu!

Change boot order to USB boot.

raspi-config-boot-order!

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!