🛠 Démarrer le CM5 sur un SSD NVMe dans le socket M.2 de la CM5IO

Raspberry Pi Compute Module 5 (compute-module-5) · avance · Schéma : IMG-compute-module-5-avance-1-boot-nvme-m2-cm5io.svg — CM5IO Board avec un SSD NVMe M.2 M-key (2280) vissé dans le socket ; flèches : copie du système eMMC vers NVMe avec rpi-clone, puis écriture de BOOT_ORDER=0xf641 dans l'EEPROM via rpiboot depuis un PC hôte.

Objectives

The M.2 M-key (2230 to 2280) socket on the CM5IO is wired to the BCM2712's PCIe Gen 2 x1 (5 Gb/s) host, and official documentation treats NVMe as a first-class boot device: BOOT_ORDER=0xf6. This tutorial installs the system on NVMe and reprograms the module's EEPROM (BOOT_ORDER=0xf641: NVMe, then SD/eMMC as fallback) via the usbboot recovery flow — the only supported method on Compute Modules, as recovery.bin is never executed from storage.

Hardware

Complete Code

# --- Côté CM5 : vérifier le SSD puis cloner le système dessus ---
sudo apt install -y nvme-cli git
lsblk | grep nvme                       # nvme0n1 doit apparaître
sudo nvme list
git clone https://github.com/billw2/rpi-clone && cd rpi-clone
sudo ./rpi-clone -f nvme0n1             # copie boot + rootfs vers le NVMe

# --- Côté hôte : reprogrammer l'EEPROM (module en mode recovery, J2 posé) ---
cd usbboot/recovery
cat > boot.conf <<'EOF'
[All]
BOOT_ORDER=0xf641
EOF
./update-pieeprom.sh
sudo ../rpiboot -d .                    # écrit l'EEPROM (EEPROM_nWP non verrouillé)

# --- Retour sur le CM5 : retirer J2, alimenter, vérifier la racine NVMe ---
lsblk -o NAME,SIZE,MOUNTPOINT | head
df -h /

Expected Verification

After removing the jumper and rebooting, df -h / and lsblk show the root on /dev/nvme0n1p2; cat /proc/cmdline contains root=/dev/nvme0n1p2; boot remains possible via SD/eMMC fallback if the NVMe is removed (last nibble 1). vcgencmd bootloader_version reflects the new build.

Common Errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials