Montages-Kits/Raspberry Pi - Tutoriel / Boot sur un disque dur externe

Toutes les étapes nécessaires pour vous permettre de booter sur un disque dur externe branché sur le port USB de votre Raspberry !

Objectifs : protéger la carte SD en écriture (cycle de vie restreint), et profiter des avantages d'un disque dur externe de 500 Go…

8.1. partitionner le disque dur externe USB (en trois partitions) :

  partition swap de 1 Go
  partition Linux ext4 : système du R-Pi, stockage de fichiers, de vidéos…
  partition NTFS (le reste du disque) pour pouvoir échanger des fichiers avec Windows.

L’outil de partitionnement est cfdisk. Il se gère avec les touches de déplacement.

La commande : sudo cfdisk /dev/sda

Commençons par supprimer la partition existante : /dev/sda1 (le disque neuf étant formaté par défaut pour Windows)

Sélectionner la partition à détruire avec les flèches Haut et Bas, aller sur [ Delete ] avec les flèches Droite et Gauche. Valider par Enter.

La partition a disparu de l’écran, mais l'opération ne sera effective qu'à la réécriture de la nouvelle table de partition par [ Write ] qui écrase la ou les partition(s) existantes…

Puis, création de la première partition primaire (Swap) : /dev/sda1

  Choisir [ New ], pour créer la nouvelle partition.
  saisir la taille : 1000 (1 Go)
  Après validation, la partition est créée et apparaît comme /dev/sda1, de type Linux.
  Pour définir le type, choisir [ Type ],
  et choisir le N° approprié = 82 (pour swap)
  sauvegarder la partition [ Write ]. Confirmer par yes

Création de la seconde partition primaire (Linux) : /dev/sda2

  Choisir [ New ], pour créer la nouvelle partition.
  saisir la taille :  (1 Go) = 200000 Mo (200Go)
  Après validation, la partition est créée et apparaît comme /dev/sda2, de type Linux.
  Pour définir le type, choisir [ Type ]
  et choisir le N° approprié = 83 pour Linux
  sauvegarder la partition [ Write ]. Confirmer par yes

Et enfin, création de la troisième partition primaire (NTFS) : /dev/sda3

  Choisir [ New ], pour créer la nouvelle partition.
  la taille du reste du disque s'affiche la valider
  Après validation, la partition est créée et apparaît comme /dev/sda3, de type NTFS.
  Pour définir le type, choisir [ Type ]
  et choisir le N° approprié = 07 pour NTFS
  sauvegarder la partition [ Write ]. Confirmer par yes

Vous pouvez quitter cfdisk et vérifier si votre travail a bien été exécuté :

  sudo fdisk -l

8.2. formater le disque dur externe branché sur le port USB :

NB : L'installation de l'outil mkfs.ntfs, est nécessaire car il n'est pas installé d’origine, il vous permettra de formater la partition en NTFS :

  Installer ntfs-3g : sudo apt-get install ntfs-3g

A présent :

formater la partition Linux (sda2) avec mkfs.ext4 :

      sudo mkfs.ext4 /dev/sda2

formater la partition de SWAP (sda1) avec mkswap :

      sudo mkswap /dev/sda1

formater la partition ntfs (sda3) avec mkfs.ntfs :

sudo mkfs.ntfs /dev/sda3 -L RPi-Donnees

NB : L’option “-L” permet de nommer le volume : “RPI-Données” (mais on peut aussi faire ça tout simplement sous windows dans le gestionnaire de fichier) Attention : le formatage NTFS a été très lent chez moi >4h pour 200 Go ?, donc soyez patient. Si la led de votre disque dur clignote, c'est que ça se passe plutôt bien !

8.3. Transférer le “Root file system” de la carte SD, vers le disque dur :

NB : Avant toutes manipulations sur votre carte SD, créer une sauvegarde de son contenu, (ou bien les fichiers sources) ainsi en cas de problème vous pourrez (formater) restaurer la carte SD !

  donnez-vous les droits de super utilisateur : sudo su

allez voir dans le fichier “cmdline.txt” : sudo nano /boot/cmdline.txt vous trouverez sur quel disque le système se positionne pour booter ? NB : Pour moi, il se positionne sur : mmcblk0p6… donc, NOTEZ bien cette information vous en aurez besoin plus loin

Démonter le disque dur /dev/sda2 :

     sudo umount /dev/sda2

Lancez la copie hard du Rfs de la carte SD vers le disque dur sda2 :

      sudo dd if=/dev/mmcblk0p6 of=/dev/sda2 bs=512
      rebooter

8.4. Modifier les paramètres de la carte SD :

afin de rediriger le boot vers le disque dur !

Modifier les paramètres de “cmdline.txt” :

      donnez-vous les droits de super utilisateur : sudo su
      editez "cmdline.txt" : sudo nano /boot/cmdline.txt 

Dans l'éditeur,

      modifiez la commande : "root=/dev/mmcblk0p6"
      par la commande : "root=/dev/sda2"

pour signifier au noyau que le “Root File System” se trouve désormais sur le disque dur linux : /dev/sda2

      rebooter

8.5. modifier le fichier fstab :

donnez-vous les droits de super utilisateur : sudo su
      editez "fstab" :
      sudo nano  /etc/fstab

et mettre la ligne suivante en commentaire (il suffit de rajouter un # en début de la ligne) :

      #/dev/mmcblk0p6   /            ext4      defaults,noatimes   0     14

et ajouter la ligne :

      /dev/sda1      /               ext4    defaults,noatime  0       1

sauvegarder, quittez l'éditeur, quittez l'environnement graphique et arrêtez le Raspberry Pi. Sortir la carte SD de son support, la mettre en Read Only (RO) Remettre la carte SD et redémarrer le Raspberry Pi

NB : bien sûr, le disque dur externe doit être branché sur un port USB :o)

Si votre Raspberry pi démarre, c'est qu'il a booté pour la première fois sur le disque dur (la led clignote), et donc, c'est gagné !

8.6. étendre le Root files system :

En effet, le “rootfs” (partition /dev/sda2) ne fait que 1.8Go, car c'est le produit de la copie (hard) de la carte SD, il convient donc de l'étendre avec “resize2fs” pour qu'il occupe tout l’espace disponible,

  lancez à la commande : sudo resize2fs /dev/sda2

Bon amusement !