RPI: Remplacer la partition racine ext4 de la carte micro SD par f2fs sur le Raspberry PI
Table of Contents
La carte micro SD du Raspberry Pi est nommée mmcblk0 et se compose de deux partitions :
- mmcblk0p1 contenant un système de fichiers vfat, monté sur
/boot
- mmcblk0p2 contenant un système de fichiers ext4, monté sur
/
(racine).
L'objectif est de remplacer le système de fichiers ext4 de la partition mmcblk0p2 , contenant la partition racine, par un système de fichiers f2fs, compatible avec les cartes SD et censé prolonger la durabilité de la carte.
Etape 1: Préparation du système Raspberry
Flasher l’image de Raspian sur la SD en utilisant l'une des méthodes décrites ici
Démarrer la Pi et à cette étape, le PARTUUID mis par défaut dans le fichier cmdline.txt
(root=PARTUUID=49783f5b-02) est écrasé par celui de mmcblk0p2 et mmcblk0p2 est étendue automatiquement (mmcblk0p2 occupe maintenant toute la carte).
Configurer Raspian: clavier, langue, réseau, mot de passe…
Mettre à jour les paquets :
sudo apt-get update sudo apt-get -y upgrade sudo rpi-update
Redémarrer pour valider les étapes précédentes :
sudo reboot
Sur le Raspberry Pi : taper la commande suivante dans un Terminal :
sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL NAME FSTYPE SIZE MOUNTPOINT LABEL sda 57,6G └─sda1 ntfs 57,6G /media/stick WEBDISC01 mmcblk0 60,1G ├─mmcblk0p1 vfat 60M /boot boot └─mmcblk0p2 ext4 60G /
il existe également une clé USB sda, contenant un système de fichiers NTFS sur sda1, monté sur /media/stick - qui n'est pas modifié et n'affecte pas la procédure.
Étant donné que la partition racine de la carte SD ne peut pas être reformatée sur le système en cours d'exécution, le système doit être arrêté et, comme la partition racine sera sur un système de fichiers f2fs lors du redémarrage, il faut installer le paquet f2fs-tools avant cela:
sudo apt-get install f2fs-tools
Ensuite, éteindre le Raspberry Pi.
Etape 2: Préparation du système hôte
Maintenant passer sur un l'ordinateur Linux hôte où un lecteur de carte SD est disponible.
Sur ce système, on a également besoin du support f2fs, alors il faut aussi installer f2fs-tools
sudo apt-get install f2fs-tools
Retirer ensuite la carte micro SD du Raspberry Pi et l'insérer dans le lecteur de carte SD du deuxième ordinateur Linux. Habituellement, sur les systèmes de bureau Linux courants, les systèmes de fichiers de la carte seront montés automatiquement, et avec
sudo lsblk -o NOM, FSTYPE, TAILLE, POINT DE MONTAGE, ÉTIQUETTE
on aura probablement quelque chose comme
NOM FSTYPE TAILLE MOUNTPOINT LABEL . . . sdb 60,1G ├─sdb1 vfat 60M /media/user/boot boot └─sdb2 ext4 60G /media/user/ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202 . . .
Le nom long du point de montage uid de la partition ext4 de la carte est peu pratique, donc l'étape suivante n'est que par commodité :
sudo umount /dev/sdb1 sudo umount /dev/sdb2 sudo mkdir /media/boot_fs sudo mkdir /media/root_fs sudo mount -t vfat /dev/sdb1 /media/user/boot_fs sudo mount -t ext4 /dev/sdb2 /media/user/root_fs
Désormais, le support de la carte SD est beaucoup plus lisible :
sdb 60,1G ├─sdb1 vfat 60M /media/user/boot_fs └─sdb2 ext4 60G /media/user/root_fs
ce qui signifie:
- la partition de démarrage sur le Raspberry Pi, est
/dev/sdb1
avec un système de fichiers vfat de 60 Mo, monté dans le dossier/media/user/boot_fs
sur le système de bureau Linux - la partition racine (/) sur le Raspberry Pi, est
/dev/sdb2
avec un système de fichiers ext4 de 60 Go, monté dans le dossier/media/user/root_fs
sur le système de bureau Linux.
Etape 3: Conversion du système de fichiers
Sauvegarde du contenu de la partition racine
Avant de procéder maintenant au formatage de la partition ext4 vers un autre type de système de fichiers (ce qui détruira toutes les données), il estnécessaire de sauvegarder le contenu de la partition :
sudo cp -a /media/user/root_fs /home/user/backup_root_fs
L'option -a est importante pour s'assurer que vraiment tout, y compris par ex. cachés/fichiers système, est copié dans le dossier de sauvegarde.
Création de la partition f2fs
Démonter maintenant la partition /dev/sdb2
:
sudo umount /dev/sdb2
et le formater avec le système de fichiers f2fs
sudo mkfs.f2fs /dev/sdb2
La partition a maintenant un système de fichiers f2fs, mais elle est vide, car en formatant tout son contenu a été perdu.
Restauration du contenu de la partition racine
Remonter la partition sur son point de montage précédent
sudo mount -t f2fs /dev/sdb2 /media/user/root_fs
maintenant avec l'option de type f2fs. Le support de carte SD ressemblera alors à ceci :
sdb 60,1G ├─sdb1 vfat 60M /media/user/boot_fs └─sdb2 f2fs 60G /media/user/root_fs
On peut maintenant restaurer le contenu du système de fichiers racine à partir du dossier de sauvegarde :
sudo cp -a /home/user/backup_root_fs/* /media/user/root_fs
Etape 4: Finalisation
Pour rendre le Raspberry Pi bootable avec la carte SD. Modifier d'abord le fichier /etc/fstab
de la carte SD et adapter l'entrée de montage du système de fichiers racine à f2fs :
sudo vi /media/user/root_fs/etc/fstab . . . /dev/mmcblk0p1 /boot vfat par défaut 0 2 /dev/mmcblk0p2 / f2fs defaults,noatime,discard 0 1 . . .
Modifier ensuite le fichier cmdline.txt
sur la partition de démarrage de la carte SD et adapter le paramètre de type de système de fichiers racine à f2fs:
sudo cp –a /media/user/boot_fs/cmdline.txt /media/user/boot_fs/_cmdline.txt # un petit backup avant sudo vi /media/user/boot_fs/cmdline.txt dwc_otg.lpm_enable=0 console= . . . root=/dev/mmcblk0p2 rootfstype=f2fs ascenseur=date limite . . ..
Maintenant démonter les systèmes de fichiers de la carte SD, éjecter la carte et l'insérer dans le lecteur de carte du Raspberry Pi. Si tout s’est bien passé, on démarrera sur la carte. On peut le voir au démarrage et avec un lsblk
(sda1 pointera sur « / » et mmcblk0p2 sur /media/pi/rootfs
)