Photo de Jeff Loucks sur Unsplash.

Démarrer un Raspberry Pi sur une carte MicroSD ou un stockage USB

Nous allons voir comment démarrer un Raspberry Pi 4 sur une carte MicroSD ou un stockage USB.

Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM de la taille d’une carte de crédit conçu par des professeurs du département informatique de l’université de Cambridge dans le cadre de la fondation Raspberry Pi.

Source : Wikipedia

Vous pouvez en acheter un sur le bon coin ou Kubii le vendeur officiel en France.

Choix du stockage du système d’exploitation

Plusieurs choix s’offrent à nous dont l’installation sur une carte MicroSD ou un stockage USB.

L’installation du système d’exploitation sur carte MicroSD et clé USB engendre deux problèmes :

Il est possible d’utiliser des disques durs avec un adaptateur USB :

James A. Chambers a fait un script permettant de tester les performances des disques durs, il propose aussi une liste d’adaptateur qui fonctionne correctement ce qui n’est pas le cas de tous sur cet article.

De mon côté, je me suis porté vers des disques durs Kingston A400 240Go que l’on trouve sur le bon coin encore emballé… et des adaptateurs USB 3.0 / SATA auto-alimenté sur LDLC ça fait chère le câble mais jamais je n’achèterai sur Amazon…

Installer un système d’exploitation

La fondation Rapsberry Pi a mis en place un logiciel Rapsberry Pi Imager permettant facilement l’installation de nombreux système d’exploitation. Il suffit de connecter sa carte MicroSD ou son disque dur, de lancer le programme, choisir le système d’exploitation, le stockage et d’appuyer sur un bouton. Rien de plus simple ! Vous pouvez le télécharger sur la page officielle du site.

Ils ont mis en place un site permettant de voir des statistiques des téléchargements des systèmes d’exploitation… pour améliorer l’interface par la suite, c’est expliqué ici.

J’utilise :

Le bootloader

Le bootloader est un mini programme qui gère le matériel au lancement de l’ordinateur, par défaut il ne sait pas démarrer directement sur un port USB. C’est une fonctionnalité que la communauté attendait et demandait depuis la sortie du Raspberry Pi 4, finalement le 15 mai 2020 une première version beta est sortie, devenu stable le 20 juillet et en default le 14 septembre. Je vous avoue que j’étais dans les premiers à tester cette fonctionnalité qui permet au Raspberry Pi de devenir un vrai serveur. Vous pouvez retrouver toutes les nouveautés du bootloader sur cette page.

Voici la commande pour vérifier la version du bootloader de votre Raspberry Pi :

$ sudo rpi-eeprom-update

BCM2711 detected
VL805 firmware in bootloader EEPROM
BOOTLOADER: up-to-date
CURRENT: Thu Sep  3 12:11:43 UTC 2020 (1599135103)
 LATEST: Thu Sep  3 12:11:43 UTC 2020 (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: up-to-date
CURRENT: 000138a1
 LATEST: 000138a1

Si vous avez un vieux Raspberry Pi et que vous voulez mettre la dernière version default il faut mettre à jour son système d’exploitation, redémarrer et lancer la commande suivante :

sudo rpi-eeprom-update -a

Ordre de démarrage

Maintenant que nous avons un bootloader à jour, il faut vérifier que l’option BOOT_ORDER soit correctement configuré, vous pouvez trouver toutes les valeurs dans la documentation. Voici celles qui nous intéressent :

ValeurModeDémarrage
0x1SD CARDcarte MicroSD
0x4USB-MSDstockage USB
0xfRESTARTdans l’ordre des valeurs

La configuration la plus intéressante est donc 0xf41, lors du démarrage il testera de démarrer sur le stockage USB puis sur la carte MicroSD si ça ne fonctionne pas, ce qui permet de facilement changer entre les 2.

Pour vérifier sa configuration une commande permet d’afficher la valeur BOOT_ORDER :

$ sudo rpi-eeprom-config

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
TFTP_IP=
TFTP_PREFIX=0
BOOT_ORDER=0xf41
SD_BOOT_MAX_RETRIES=3
NET_BOOT_MAX_RETRIES=5
[none]
FREEZE_VERSION=0

Pour la modifier, il suffit de lancer la commande suivante :

sudo -E rpi-eeprom-config --edit

Vérifier le bon changement avec la commande du dessus et redémarrez :

sudo shutdown -r now

Ubuntu Server

Pour utiliser le Rapsberry Pi en tant que serveur, je préfère utiliser le système d’exploitation Ubuntu Server et plus particulièrement la version LTS qui est maintenu pendant plusieurs années. Vous pouvez trouver plus d’information sur la page du wiki d’Ubuntu. La version 20.04 LTS est maintenu jusqu’en avril 2025.

Avec l’utilitaire Raspberry Pi Imager l’installation sur le disque dur est assez simple, mais ne fonctionne pas encore complètement. Il faut en plus copier des fichiers présents seuelement sur l’image Raspberry Pi OS. Voici comment finaliser l’installation :

sudo mkdir /mnt/boot                # Création d'un dossier pour la partition boot
sudo mkdir /mnt/principal           # Création d'un dossier pour la partition principale
sudo mount /dev/sda1 /mnt/boot      # Monter la partition boot
sudo mount /dev/sda2 /mnt/principal # Monter la partition boot
cd /mnt/boot                        # se rendre dans le dossier
sudo cp /boot/*.elf /mnt/boot/      # Copier les fichiers ELF qui correspondent au binaire du _firmware_
sudo cp /boot/*.dat /mnt/boot/      # Copier les fichiers DAT
sudo su                             # Devenir root
zcat vmlinuz > vmlinux              # Décompresser le noyau Linux

Il faut maintenant expliciter au bootloader d’utiliser le noyau décompressé :

sudo nano /mnt/boot/config.txt
...
[pi4]
dtoverlay=vc4-fkms-v3d
boot_delay
kernel=vmlinux
initramfs initrd.img followkernel
max_framebuffers=2

[pi2]
...

Votre Rapsberry Pi peut maintenant démarrer sur le disque dur. Par contre lors de la prochaine mise à jour du kernel vous devrez faire cette manipulation de nouveau. Pour l’automatiser voici deux scripts :

sudo su
cd /mnt/boot
wget https://raw.githubusercontent.com/kosssi/auto_decompress_kernel/main/auto_decompress_kernel
chmod +x auto_decompress_kernel
/mnt/principal/etc/apt/apt.conf.d/
cd /mnt/principal/etc/apt/apt.conf.d/
wget https://raw.githubusercontent.com/kosssi/auto_decompress_kernel/main/999_decompress_rpi_kernel
chmod +x 999_decompress_rpi_kernel

Vous pouver éteindre votre Raspberry Pi, retirer la carte MicroSD et redémarrer le Rapsberry Pi.

Liens de documentation :

J'utilise les mails pour mes commentaires,
clique ici pour être le premier 😻