Raspberry Pi - Utiliser une clé USB pour vos partitions
On le sait tous : les cartes SD ont un nombre d’écritures limitées. En plus le lecteur de carte SD du Raspberry Pi est assez fragile et peut vitre être endommagé. Alors une solution possible, stocker vos partitions sur une clé USB ou un disque externe.
Depuis que je fais les tutoriels j’ai du refaire une bonne trentaine de fois ma carte SD et casser 2 adaptateurs pour micro-SD (pourtant je suis en général assez soigneux). Donc coté durée de vie ça doit diminuer assez vite même si y a de la marge !
Je propose aujourd’hui comme exemple de créer sur une clé USB de 8Go une partition de 6Go pour le système de fichiers et 2Go pour gérer les espaces utilisateurs (le /home). Le tout depuis votre Raspberry Pi.
- Insérer la clé USB dans votre Raspberry Pi
- Déterminer l’identifiant de la clé avec dmesg
- Créer les deux partitions avec fdisk (ou cfdisk si vous voulez une interface minimaliste). Vous pouvez avoir à supprimer les anciennes si c’est nécessaire.
N’oubliez pas de sauvegarder ! 🙂
- Formater les partitions en ext4 avec mkfs.ext4
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
- Vous pouvez maintenant monter ces partitions :
mkdir /tmp/usb_root
mkdir /tmp/usb_home
mount /dev/sda1 /tmp/usb_root
mount /dev/sda2 /tmp/usb_home
- Maintenant que vous avez vos deux partitions, il faut copier l’ensemble des fichiers de la carte SD vers la partition de 6Go. Pour ça on va passer par l’utilitaire rsync qui va être plus rapide que dd.
apt-get install rsync
- Maintenant nous devons dupliquer la partition principale. Seul problème, cette partition est utilisée et donc susceptible d’être modifiée. On va donc remonter la partition en la liant à la partition principale avec l’option -bind.
mkdir /tmp/sd_root
mount --bind / /tmp/sd_root/
Si maintenant vous regarder le contenu de /tmp/sd_root, vous avez votre partition principale :
- Maintenant lançons la copie. Mais il faut exclure les répertoires que l’on ne veut pas dupliquer : /home (ça sera notre seconde partition), /tmp (nous travaillons dedans) et /boot (qui ne servira à rien sur notre clé) :
cd / rsync -avh --exclude 'home/pi' --exclude 'tmp/' --exclude 'boot/' /tmp/sd_root/ /tmp/usb_root/
- Si besoin copier le répertoire des utilisateurs vers la partition pour les utilisateurs :
rsync -avh /home/pi/ /tmp/usb_home/
- Changer les partitions à monter lors du démarrage. Ca se passe dans le fichier /etc/fstab. Pour nous ça sera /tmp/usb_root/etc/fstab. Remplacer la ligne :
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
par
/dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 /home ext4 defaults,noatime 0 1
- Dernière étape, modifier la carte SD pour démarrer sur la clé USB. Modifier le fichier /boot/cmdline.txt et remplacer par /dev/sda1. Vous devriez avoir la ligne suivante :
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait logo.nologo
Vous pouvez redémarrer la machine et profiter du système sur la clé USB 🙂
Merci à IntraIpsum pour son article sur le sujet
[Update] Pensez à créer les répertoires /boot et /tmp sur la nouvelle partition.