Ludovic Laly, mon blog

12:26

Déplacer le rootfs du Pine64 sur un disque externe

ce billet est largement inspiré du site pine64.pro

Le Pine64 souffre du même problème que le raspberry pi, à savoir la carte sd
Ces petites cartes n'étant pas faites pour supporter un grand nombre d'écriture, on se retrouve souvent avec une carte corrompue au bout de quelques temps.
L'idée ici est de déplacer le rootfs sur un disque externe une fois l'installation de base terminée.
Le petit truc cool, c'est que l'on disposera d'un semblant de recovery en cas de besoin.

PS: Eviter d'utiliser un disque auto-alimenté et préférez un disque 3"½ avec une alimentation externe

Donc voilà, vous avez un Pine64 tout neuf, un disque externe connecté au Pine64, on va donc identifier la partition sur laquelle on viendra copier le rootfs

lsblk

Vous devriez avoir un disque mmcblk0 contenant deux partitions : sur mmcblk0p1 le /boot et sur mmcblk0p2 le rootfs
Puis un second disque sda avec la liste de ses partitions.
Si le disque ne contient aucune partition type sda1 sda2 et... vous pouvez les créer via la commande

cfdisk

Maintenant qu'on a identifié notre partition cible, disons par exemple sda1
On va créer un point de montage dessus et y copier nos fichiers

mkdir /tmp/newrootfs
mount /dev/sda1 /tmp/newrootfs

Ne reste plus qu'a copier

cp -ax / /tmp/newrootfs

La copie peut durer quelques minutes, armez-vous de patience...

Ne reste plus qu'à modifier la séquence de boot, modifier le fstab du nouveau rootfs et enfin redémarrer le Pine64

echo 'root=/dev/sda1' >> /boot/uEnv.txt
echo 'rootwait' >> /boot/uEnv.txt
echo '/dev/mmcblk0p1 /boot vfat defaults 0 2' > /tmp/newrootfs/etc/fstab
echo '/dev/sda1 / ext4 defaults,noatime 0 1' >> /tmp/newrootfs/etc/fstab
umount /dev/sda1
reboot

Voilà, votre système Linux tourne maintenant sur le disque externe.

Bonus recovery, c'est con, mais on n'y pense pas forcément.
Imaginons que vous ayez besoin de revenir à l'installation de base, celle-ci se trouve toujours sur mmcblk0p2
Il est donc possible de revenir à un système sain en reprenant la même procédure, il suffit simplement de supprimer les lignes ci-dessous du fichier /boot/uEnv.txt

root=/dev/sda1
rootwait

Puis de redémarrer, et le système tournera à nouveau sur la carte sd.
On efface /dev/sda1 et on recommence.

Après on peut aussi utiliser mmcblk0p2 afin de réaliser un "snapshot" de notre rootfs
une fois que vous avez tout installé et configuré sur le Pine64, vous pouvez en faire une sauvegarde sur mmcblk0p2
cette fois le mount ressemble à :

mount /dev/mmcblk0p2 /tmp/newrootfs