Transférer Rasbian sur un disque externe (2ème partie)

Dans un premier article intitulé "Transférer Rasbian sur un disque externe (1ère partie)", nous avons vu comment créer une partition Linux prête à l'emploi pour le transfert. Le présent article suppose donc qu'un disque dur externe connectable sur le port USB d'un Raspberry Pi et montable sous Rasbian a été préparé selon les procédure décrite dans cet article. 

Transférer la partition rootfs d’une carte microSD sur le disque externe.

Dans un premier temps, il faut démarrer le Raspberry Pi avec la carte microSD qui va servir de source. Le disque externe cible doit aussi être connecté sur un port USB.  
Pour le transfert, nous allons utiliser la commande rsync. Il se peut que celle-ci ne soit pas installée. C’est pourquoi il vaut mieux prendre la précaution de le vérifier :
pi@APLRASPI01:~ $sudo apt-get install rsync
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
rsync is already the newest version (3.1.2-1+deb9u1).
0 mis à jour, 0 nouvellement installés, 0 à enlever et 1 non mis à jour.
pi@APLRASPI01:~ $
Il faut vérifier que les mémoires de masse source et cible sont bien connectées aux Raspberry Pi :
pi@APLRASPI01:~ $lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111,8G  0 disk
└─sda1        8:1    0 111,8G  0 part
mmcblk0     179:0    0  14,9G  0 disk
├─mmcblk0p1 179:1    0  41,5M  0 part /boot
└─mmcblk0p2 179:2    0  14,8G  0 part /
pi@APLRASPI01:~ $
La partition sda1 doit maintenant être “montée” pour pouvoir être utilisée. En effet, Linux considère tous les composants comme un immense système de fichier unique.
pi@APLRASPI01:~ $sudo mkdir /media/pi/rootsf
pi@APLRASPI01:~ $sudo mount /dev/sda1 /media/pi/rootsf
pi@APLRASPI01:~ $lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111,8G  0 disk
└─sda1        8:1    0 111,8G  0 part /media/pi/rootsf
mmcblk0     179:0    0  59,5G  0 disk
├─mmcblk0p1 179:1    0  41,5M  0 part /boot
└─mmcblk0p2 179:2    0  59,4G  0 part /
pi@APLRASPI01:~ $
La partition rootsf de Rasbian de la carte microSD, la source, se trouve montée actuellement sur le repertoire racine /.  La partition cible sur le disque externe se trouve montée actuellement sur le répertoire /media/pi/rootsf.
Il suffit maintenant de recopier la source sur la cible :
pi@APLRASPI01:~ $sudo  rsync  –avx   /   /media/pi/rootsf

. . .

var/tmp/systemd-private-aa0d5814edb14729bc8ba6fe0efc94e1-systemd-timesyncd.service-IqP79Z/tmp/

sent 5,391,003,336 bytes  received 2,394,966 bytes  13,741,142.17 bytes/sec
total size is 5,380,851,631  speedup is 1.00
pi@APLRASPI01:~ $
La recopie va prendre un certain temps qui dépend du contenu de la carte microSD source.
Pour pouvoir utiliser cette partition rootsf du disque externe comme racine de Rasbian, il est nécessaire de renseigner quelques fichiers de configuration.

Modification de la table de montage automatique des partitions

Cela se fait sur la partition rootsf du disque externe. Il faut donc démarrer le Raspberry PI avec la carte microsSD et monter le disque externe.
Il va falloir indiquer où se trouve la partition de boot (sur la carte microSD en l’occurrence) et où se trouve la partition racine de Rasbian (la partition rootsf du disque externe).
pi@APLRASPI01:~ $sudo mkdir /media/pi/rootsf
pi@APLRASPI01:~ $sudo mount /dev/sda1 /media/pi/rootsf
pi@APLRASPI01:~ $lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111,8G  0 disk
└─sda1        8:1    0 111,8G  0 part /media/pi/rootsf
mmcblk0     179:0    0  59,5G  0 disk
├─mmcblk0p1 179:1    0  41,5M  0 part /boot
└─mmcblk0p2 179:2    0  59,4G  0 part /
pi@APLRASPI01:~ $
Le fichier à modifier est le fichier /etc/fstab du disque externe :
pi@APLRASPI01:~ $sudo nano /media/pi/rootsf/etc/fstab
  • Modifier le fichier fstab pour qu’il ait le contenu ci-dessus.
  • La première ligne indique que la partition de boot est montée sur le device mmcblk0p1. Ce qui correspond à la partition boot de la carte microSD.
  • La deuxième ligne indique que la racine de Rasbian est montée sur le device sda1. Ce qui correspond au système de fichier du disque externe. Et que celui-ci est formaté en ext3 (en ext4 pour un disque SSD ou une clef USB).
  • Faire control-O pour enregistrer.
  • Faire control-X pour quitter.

Modification de la section de boot de la carte microSD

Cette modification peut être faite sur un PC Windows, puisque la partition boot de la carte microSD est formatée en FAT32.
Le fichier à modifier est le fichier cmdline.txt. Il est conseillé de faire une copie de ce fichier avant de la modifier pour pouvoir utiliser la carte microSD pour démarrer le Raspberry PI en cas de besoin.
Ce fichier ne contient qu'une seule ligne.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c909736a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
L’opération consiste à indiquer dans la procédure de boot quel est la partition à utiliser comme racine de Rasbian.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext3 elevator=deadline fsck.repair=yes rootwait
Il suffit maintenant de redémarrer le Rasberry Pi.
pi@APLRASPI01:~ $sudo reboot
Lorsque le Raspberry Pi est redémarré on remarque que le système de fichiers est bien celui du disque externe. Cela peut être vérifié en utilisant à nouveau la commande lsblk.
pi@APLRASPI01:~ $lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111,8G  0 disk
└─sda1        8:1    0 111,8G  0 part /
mmcblk0     179:0    0  59,5G  0 disk
├─mmcblk0p1 179:1    0  41,5M  0 part /boot
└─mmcblk0p2 179:2    0  59,4G  0 part
pi@APLRASPI01:~ $
Cela est également visible en mode "desktop" en lançant l'explorateur de fichiers et en vérifiant la nouvelle taille du système de fichier.
A partir de ce moment, le Raspberry fonctionnera sur le disque dur externe. La carte microSD, uniquement utilisée en lecture, ne sera plus menacée. Et on dispose de tout l'espace que permet la taille du disque.

Commentaires

Posts les plus consultés de ce blog

Gérer la mise en veille

Configurer VSCode pour programmer et déboguer à distance sur Raspberry Pi

Créer un nouvel utilisateur Raspbian