Blog geekesque... ou presque

Aller au contenu | Aller au menu | Aller à la recherche

Démarrer son Raspberry Pi sur un disque dur

Par défaut, le Raspberry Pi fonctionne avec une carte SD, or ces cartes ont une durée de vie limitée en nombre de cycles d'écriture. Par contre, on peut les lire à l'infini sans souci.

Ayant fait l'acquisition d'un PiDrive, j'ai tenté de déporter tout le système sur le disque. Non seulement ça marche, mais c'est très simple à faire.

Sachez tout de même que vous ne pourrez pas éliminer complètement la carte SD. En effet, le RPi est ainsi fait qu'il va chercher le bootloader sur la carte SD, c'est inscrit de manière quasi-matérielle dans son système. Mais fort heureusement, il ne fait que le lire, donc aucune incidence sur la durée de vie de la-dite carte.

Préparation du disque dur

(Ce qui suit est dans le cas où votre disque n'est pas déjà prêt pour linux)

Comme pour tout disque dur, il va falloir le partitionner et le formater. Étant donné la taille du disque (314Go) et le fonctionnement du RPi, ce n'est pas la peine de créer une partition de swap, j'ai même arbitrairement décidé de ne faire qu'une seule partition qui contiendra tout.

Le disque dur est connecté sur le port USB et reconnu en tant que /dev/sda. La première opération à faire est de démonter la partition si elle est montée:

$# sudo umount /dev/sda1

Une fois ceci fait, nous allons pouvoir partitionner et formater. L'outil le plus simple pour cela en ligne de commande est cfdisk.

$# sudo cfdisk /dev/sda

Il vous suffit de supprimer les partition déjà existantes en vous déplaçant dessus (flèches haut et bas) et en choisissant delete dans le menu en bas (flèches droite et gauche). Une fois que c'est fait, n'oubliez pas de sélectionner write pour bien prendre en compte vos changement.

Lorsqu'il n'y a plus aucune partition, sélectionnez l'option new et créez une partition de type 'Linux' (N°83), gardez les options de taille par défaut (taille maximale) et faite write.

Attention: ne surtout pas rendre bootable la partition, nous avons bien précisé que c'est la carte SD qui reste le boot.

Il reste maintenant à formater la partition, qui est a priori /dev/sda1:

$# sudo mkfs.ext4 /dev/sda1

Copier le système

Nous allons reprendre une partie ce qui avait été expliqué dans ce billet pour créer une image du système présent sur la carte SD sur le disque dur. Pour cela, nous allons déterminer quelle partition est utilisée en regardant le contenu du fichier /boot/cmdline.txt. Dans mon cas, voici ce que ça donne:

$# cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

La partition à copier est donc /dev/mmcblk0p2:

$# sudo dd bs=1M if=/dev/mmcblk0p2 of=/dev/sda1

L'opération est assez longue en fonction de la taille de votre carte SD.

Une fois la copie terminée, votre partition a bien maigri car elle est de la taille de la partition copiée. Nous allons donc l'étendre pour qu'elle prenne toute la place disponible sur le disque dur:

$# sudo resize2fs /dev/sda1

Et maintenant, un petit reboot pour vérifier que tout est ok.

Changer l'accès au système

Voici maintenant la partie la plus sensible, car si vous avez raté une des étapes précédentes, vous risquez (temporairement, je vous rassure) de ne plus pouvoir booter. Elle consiste en deux opérations simples:

  1. monter automatiquement la partition dans le système
  2. modifier le chemin de la partition rootfs

Pour le montage de la partition, il faut éditer le fichier /etc/fstab en commentant le montage de l'ancienne partition utilisée sur la carte SD et en ajoutant la partition du disque. Voici le résultat obtenu sur mon RPi:

$# sudo cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1       /               ext4    defaults,noatime  0       1

Pour la modification du chemin, il suffit d'éditer le fichier /boot/cmdline.txt et de remplacer l'ancien chemin (/dev/mmcblk0p2) par le nouveau (/dev/sda1). Pour ma part, j'ai copié la ligne et commenté l'ancienne, afin de garder une trace:

$# sudo cat /boot/cmdline.txt
#dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Vous pouvez désormais rebooter, le système fonctionne sur le disque dur.

Commentaires

1. Le dimanche 29 janvier 2017, 16:10 par prosper881

Ça Marche!!!
Super!!!
Mille Merci de Nice.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

La discussion continue ailleurs

URL de rétrolien : https://www.g33k-zone.org/index.php?trackback/103

Fil des commentaires de ce billet