Table des matières

Démarrer un Raspberry sur disque USB

Posted By: Dandu 19 septembre 2016

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 ou disque 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/ disque 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
 

La dernière étape consiste à démarrer le Raspbbery Pi sur le disque USB. Selon cette page, certains disque USB ne conviennent pas. . 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’un disque USB rapide