raspbian

Booter Raspberry Pi 3 sur clé USB

Mise à jour du firmware

Commencez par une mise à jour du systéme

sudo apt-get update
sudo apt-get upgrade

Mettre à jour le firmware dans /boot (start.elf et bootcode.bin) avec la version de la branche NEXT (expérimentale) :

sudo BRANCH=next rpi-update

Autoriser le boot USB

Modifier le fichier config.txt pour autoriser le boot USB :

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

Ceci ajoute program_usb_boot_mode=1 à la fin du fichier /boot/config.txt.
Redémarrer le Raspberry Pi

sudo reboot

Vérifier que le registre 17 de l’OTP a bien été modifié

 vcgencmd otp_dump | grep 17:
17:3020000a

Vérifiez bien que la valeur du registre 17 est 3020000a

Vous pouvez effacer la ligne program_usb_boot_mode du fichier /boot/config.txt ATTENTION : ne pas laisser de ligne blanche à la fin du fichier !

Préparation d’une clé USB non partitionnée

On commence par utiliser parted pour créer une partition FAT32 de 100Mo, suivie d’une partition Linux ext4 qui occupera le reste de la place disponible.

sudo parted /dev/sda
mktable msdos
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
print
quit

Formater les partitions et créer les systèmes de fichiers boot et root

sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2

Transfert du système Raspbian sur la clé USB

Monter les systèmes de fichiers nouvellement créés et installer rsync

sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsync

Maintenant que les systèmes de fichiers de la clé USB sont montés, on peut copier le boot et le root file system (rfs)

sudo rsync -ax --progress / /boot /mnt/target

Régénérer les clés SSH

cd /mnt/target
sudo mount --bind /dev dev
 sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target  # Entrée chroot
rm /etc/ssh/ssh_host*    
dpkg-reconfigure openssh-server
exit  # sortie chroot
exit
sudo umount {dev,sys,proc}

Modifier cmdline.txt

Modifier cmdline.txt pour que la clé USB soit le root file system (RFS) à la place de la carte SD :

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

Modifier fstab

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

Démonter le système de fichier de la clé USB

cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target

Arrêt Raspberry Pi 3

sudo poweroff

Débrancher la prise micro USB d’alimentation et enlever la carte SD

Redémarrer Raspberry Pi 3

Reconnecter l’alimentation

Vérifications :

 df -h
fdisk -l