Comment démarrer le Raspberry Pi 3 sur une clé USB

Depuis quelques semaines, la fondation qui gère la carte Raspberry Pi propose un firmware qui offre de nouvelles fonctions pour le Raspberry Pi 3. Il permet notamment de démarrer directement sur une clé USB, sans carte microSD.

Premièrement, petite explication : le firmware du Raspberry Pi ne se trouve pas dans une ROM comme sur nos PC (le BIOS ou l’UEFI) mais directement sur le périphérique de démarrage, une carte (micro)SD dans les différents modèles. Le SoC ne contient en interne qu’une zone de 32 ko (la Boot ROM) qui permet simplement de démarrer sur une carte SD. Avec le Raspberry Pi 3, cette zone est modifiable et une ROM plus complète a été développée.

La ROM en question, encore en bêta, offre plusieurs choses. Premièrement, démarrer sur une carte SD, comme actuellement. Deuxièmement, ce que nous allons montrer ici, démarrer sur un périphérique de stockage USB (clé USB, disque dur, etc.). Enfin, la carte peut booter en Ethernet (sans stockage local), émuler un périphérique de stockage USB ou émuler un périphérique USB (par exemple une carte réseau).

Pourquoi vouloir démarrer sur une clé USB ? Parce que les cartes microSD offrent une fiabilité aléatoire et des débits souvent assez faibles, sauf à acheter un modèle haut de gamme. Parce qu’une clé USB (ou un disque dur) peut offrir une capacité bien plus élevée qu’une carte microSD. Parce que – dans notre cas – le connecteur microSD du Raspberry Pi 3 est cassé et que les réparations à base de bricolage ne tiennent pas dans le temps. Et aussi, excuse de geek, parce que c’est possible.

La première partie consiste à préparer la carte. Un système installé sur une carte microSD est nécessaire.

Si vous utilisez Raspbian Lite, les deux lignes suivantes sont nécessaires.

sudo apt-get update; sudo apt-get install rpi-update
sudo BRANCH=next rpi-update

Une commande permet ensuite de modifier la Boot ROM du Raspberry Pi 3 pour permettre le démarrage en USB.

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Il faut ensuite redémarrer (sudo reboot) et vérifier que la commande a bien fonctionné en tapant quelques lignes.

vcgencmd otp_dump | grep 17:

Elle devrait donner comme réponse 17:3020000a si tout va bien.

Si la carte doit être utilisée dans un autre Raspberry Pi, allez supprimer la ligne program_usb_boot_mode=1 dans /boot/config.txt.

La seconde partie consiste à préparer la clé USB.

Le tutorial officiel passe par la copie de la carte microSD sur une clé USB, ce qui peut être assez lent. Pour simplifier les choses, au moins en partie, nous avons décidé d’installer le système depuis un PC en restaurant directement une image de Raspbian sur une clé USB 3.0 rapide.

Notre solution n’est pas très propre mais fonctionne. Une fois la clé USB prête et branchée sur le Raspberry Pi, montez la partition de démarrage (a priori, il s’agit de sda1).

sudo mount /dev/sda1 /media

Il faut ensuite copier deux fichiers depuis la carte SD.

sudo cp /boot/bootcode.bin /media
sudo cp /boot/start.elf /media

Enfin, une commande modifie les fichiers de démarrage.

sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /media/cmdline.txt

Maintenant, démontez la partition de démarrage et montez la partition système.

sudo umount /media
sudo mount /dev/sda2 /media

Enfin, avant d’éteindre le Raspberry Pi, tapez cette commande.

sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /media/etc/fstab

img_0150La dernière étape consiste à démarrer le Raspbbery Pi sur la clé USB. Selon cette page, certaines clés USB ne conviennent pas. Dans notre cas, nous avons utilisé un modèle USB 3.0 Lexar de 8 Go. N’oubliez pas que le Raspberry Pi ne propose qu’un bus USB 2.0 et que les performances restent assez faibles : pas besoin d’une clé USB rapide.

About the Author

Dandu
Espion de Cupertino dans la rédac' de Canard PC Hardware. Aime beaucoup les formats totalement obsolètes ainsi que les technologies bizarres et oubliées. Possède un chien robot, des lapins Wi-Fi et un vrai perroquet.