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.

img_3160_usb-logo

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.

  1. Insérer la clé USB dans votre Raspberry Pi
  2. Déterminer l’identifiant de la clé avec dmesg

    Résultat de dmesg : chez moi la clé est sur /dev/sda

    Résultat de dmesg : chez moi la clé est sur /dev/sdaChez moi la clé est sur /dev/sda

  3. 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.
    Nous voici avec une clé USB contenant 2 partitions ext4

    Nous voici avec une clé USB contenant 2 partitions ext4

    N’oubliez pas de sauvegarder ! 🙂

  4. Formater les partitions en ext4 avec mkfs.ext4
    mkfs.ext4 /dev/sda1
    mkfs.ext4 /dev/sda2
  5. 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
  6. 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
  7. 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 :

    Votre partition principale après la commande mount --bind

    Votre partition principale après la commande mount –bind

  8. 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/
  9. Si besoin copier le répertoire des utilisateurs vers la partition pour les utilisateurs :
    rsync -avh /home/pi/ /tmp/usb_home/
  10. 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
  11. 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 à pour son article sur le sujet

[Update] Pensez à créer les répertoires /boot et /tmp sur la nouvelle partition.

Vous aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...