Table des matières

Raspberry Pi : Installation du système du Raspberry Pi sur un disque USB

L'utilisation d'un disque dur permet :

Les partitions sont repérées comme au paragraphe Première étape : partitionnement.

Seule la partition de démarrage de Raspbian et celle de BerryBoot doivent impérativement résider sur la carte SD.

Cela économise la carte SD qui ne comporte plus que le boot et peut être mise en mode lecture seule.

Pré-requis

Première étape : partitionnement

Partitionnez le disque pour obtenir une partition ext4 assez grande pour contenir la partition racine actuelle.

Le plan de partitionnement proposé ici comporte :

  1. Une partition Linux ext4 de 100 Go : système du R-Pi, stockage de fichiers, de vidéos…
  2. Une partition ntfs pour pouvoir échanger des fichiers avec des machines équipées en Windows.
Système du R-Pi - ext4 - 100 Go Partition partagée - ntfs - le reste du disque

Branchez le disque USB sur un PC.

Graphiquement, avec gparted

Ouvrez gparted.

Partitionnez le disque pour obtenir une partition ext4 assez grande pour contenir la partition racine actuelle.

Voici un exemple de préparation d'un disque externe avec gparted :

Ici, le disque USB est en /dev/sdh avec ses partitions :

En ligne de commande (si on n'a pas d'accès graphique)

voir cfdisk : partitionnement en ligne de commande

Autres étapes

Transfert du Root file system

Nous allons déplacer sur un disque dur USB la partition racine de l'installation Raspbian existante pour améliorer les performances et préserver la carte SD.

Seul boot doit résider sur la carte SD.

Branchez le disque usb sur le Raspberry Pi.

Repérez les partitions :

pi@framboise:~ $ sudo blkid
/dev/mmcblk0p1: LABEL="RECOVERY" UUID="4410-7BB7" TYPE="vfat" PARTUUID="d25b6342-01"
/dev/mmcblk0p3: LABEL="SETTINGS" UUID="b089fc95-75de-464f-8700-dc9cf62be0b9" TYPE="ext4" PARTUUID="d25b6342-05"
/dev/mmcblk0p5: LABEL="BOOT" UUID="5172-B45E" TYPE="vfat" PARTUUID="d25b6342-06"
/dev/mmcblk0p6: LABEL="root" UUID="4051e5cf-3f44-4459-890f-de6d77c01f15" TYPE="ext4" PARTUUID="c0965f47-06"
/dev/sda1: UUID="8528...|" TYPE="ext4" PARTUUID="c0965f47-01"
/dev/sda2: LABEL="Rpi-data" UUID="422f3716-add7-48ed-a427-32e60109cc2e" TYPE="ext4" PARTUUID="c0965f47-07"
/dev/sda3: LABEL="Reservoirs" UUID="fd152153-c344-4f58-b9cd-5dee43091f5d" TYPE="ntfs" PARTUUID="c0965f47-05"

On voit :

Pour transférer le système, commençons par vérifier les montages par :

pi@framboise:~ $ sudo df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
rootfs              36G     12G   23G  33% /
/dev/mmcblk0p6      36G     12G   23G  33% /
devtmpfs           458M       0  458M   0% /dev
tmpfs              462M     13M  450M   3% /run
tmpfs              5,0M    4,0K  5,0M   1% /run/lock
tmpfs              462M       0  462M   0% /run/shm
/dev/mmcblk0p5      66M     22M   45M  32% /boot
/dev/mmcblk0p3      30M    444K   28M   2% /media/SETTINGS
/dev/sda1           30M    434K   28M   2% /media/8528...
/dev/sda2           99G    2,2G   92G   3% /media/Rpi-data
/dev/sda3           94G     21G   69G  23% /media/Reservoirs

La partition /dev/mmblk0p6 est la racine (/dev/root = rootfs), montée en /

On retrouve :

partitionmontée en
/dev/mmblk0p5/boot
/dev/mmblk0p6/
/dev/sda1/media/XXXX…

La partition /dev/mmblk0p6 est la racine (/dev/root = rootfs), montée en /

Affichez le fichier /boot/cmdline.txt :

pi@framboise:~ $ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

L'élément à repérer est root=/dev/mmblk0p6 : pour l'instant, la racine utilisée est /dev/mmblk0p6, sur la carte SD. Nous allons la remplacer par /dev/sda1

Commençons par copier cette partition sur celle du disque :

Démontez la partition du disque et faites la copie :

pi@framboise:~ $ sudo umount /dev/sda1
pi@framboise:~ $ pv /dev/mmblk0p6 | sudo dd of=/dev/sda1 bs=4M

Maintenant, il faut rediriger le boot vers le disque.

Éditez avec les droits d'administration le fichier dev/mmblk0p5/cmdline.txt pour remplacer root=/dev/mmblk0p6 par root=/dev/sda1

Cas particulier : écriture directe de Raspbian sur la carte SD sans BerryBoot

Dans /dev/mmcblk0p1, modifier les paramètres de cmdline.txt pour signifier au noyau que le Root File System se trouve sur /dev/sda2.

Éditez avec les droits d'administration le fichier /boot/cmdline.txt pour remplacer root=/dev/mmcblk0p2 par root=/dev/sda2

Sur le disque : paramétrage du fichier fstab

Éditez avec les droits d'administration le fichier /dev/sda2/etc/fstab pour :

Il s’agit ici du fichier fstab qui se trouve dans la partition /dev/sda2, pas de celui qui est sur la carte SD (/dev/mmcblkop2)

/dev/sda2/etc/fstab
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
#/dev/mmcblk0p6  /               ext4    defaults,noatime  0       1
/dev/sda1  /               ext4    defaults,noatime  0       1

Redémarrez le Raspberry PI :

pi@framboise:~ $ sudo reboot

Si tout se passe bien il démarre comme d’habitude, mais depuis le disque.

Notez que vous ne perdrez pas de données ; si les choses tournent mal, il suffit de modifier à nouveau le fichier /boot/cmdline.txt sur un ordinateur pour démarrer de nouveau à partir de la carte SD.

Étendre le Root file system

Le rootfs (partition /dev/sda1) ne fait que 1.8Go, car c'est la copie de la carte SD…

L'étendre avec resize2fs pour qu'il occupe tout l’espace disponible :

pi@framboise:~ $ sudo resize2fs /dev/sda1

Résultat : le rootfs (partition /dev/sda2) a été agrandi.

Conclusion

Problèmes connus

Voir aussi


Basé sur « Pitié pour la carte SD de votre framboise314 : Bootez sur un disque dur USB » par François Mocq.