EDIT: après quelques mois d’utilisation, la partition en f2fs n’a pas empêché des problèmes de stabilité. Mes autres Raspberry en ext4 sont plus stables.
Le type de partition F2FS semble le mieux adapté au Raspberry.
Voici comment transformer en F2FS la partition root sans perdre les données.
De base, la partition boot contient le nécessaire pour démarrer le PI, et la partition root contient les programmes et les données.
Mode opératoire:
Dans raspi-config (choix 7 puis A1 Expand), s’assurer qu’on a bien étendu la partition root à toute la carte SD de façon à bénéficier de tout l’espace de stockage. Après cette manip, rebooter le PI pour prise en compte (sudo reboot
).
IMPORTANT: avant d’arrêter le PI pour récupérer la carte SD, installer le paquet F2FS: sudo apt-get install f2fs-tools
Si cette opération n’est pas faite, le PI ne pourra pas monter la partition root à l’issu des manip.
Eteindre le PI: sudo shutdown
(ensuite attendre une minute …)
Retirer la carte SD et la mettre sur une machine Linux (par exemple sur une machine virtuelle VirtualBox avec la distribution Linux Lubuntu installée).
Sur Lubuntu, les deux partitions boot et root devraient se monter automatiquement.
Installer le paquet F2FS sur la machine Linux qui va servir à faire la sauvegarde de la carte, le formatage F2FS, et la restauration de la carte:
sudo apt-get install f2fs-tools
Vérifier si la carte est montée:
sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
Vérifier si la taille de la partition sur la machine Linux est assez grande pour recevoir le contenu de la carte SD, et quel chemin lui est affecté:
df
Considérons (à adapter en fonction du résultat de votre commande df
ci-dessus) que la carte SD montée sur Linux porte le nom sdb et que les chemins sont:
/dev/sdb1 /media/utilisateur/boot_fs
/dev/sdb2 /media/utilisateur/root_fs
Considérons que le chemin de sauvegarde est /home/utilisateur/carte (remplacer utilisateur par la vraie valeur selon la machine).
Pour sauvegarder la partition root de la carte SD, lancer la commande:
sudo cp -a /media/utilisateur/root_fs/* /media/utilisateur/carte
On trouve parfois la commande cp -a -v (-v = verbose, verbeux… chaque fichier copié s’affiche à l’écran). J’ai eu des échecs avec -v sur machine virtuelle et carte SD dans un adaptateur USB. De toutes façons, si un fichier ne peut pas être copié, une ligne s’affichera pour le signaler. Si tout se passe bien, rien ne s’affiche, il faut donc attendre simplement que le terminal rende la main.
Une fois la copie terminée (ça peut durer 30minutes ou plus selon la taille à copier), s’il n’y a pas eu d’erreur, vérifier la cohérence des tailles entre le volume source (/media/utilisateur/root_fs) et la sauvegarde (/media/utilisateur/carte):
df
Formatage de la partition root de la carte SD.
Je fais la manip avec GParted (si non installé sur la machine Linux, taper sudo apt-get install gparted
)
Dans GParted, sélectionner la carte (sdb en haut à droite, si sdb est bien votre carte SD, on doit reconnaitre la taille..).
Clic droit sur la partition root, puis démonter.
Clic droit sur la partition root, puis formater en f2fs
L’opération est assez rapide, moins d’une minute.
Quitter GParted.
En console, vérifier que la partition F2FS est apparue:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
Noter son nom:
df
Recopie des données vers la partition F2FS de la carte:
sudo cp -a /media/utilisateur/carte/* /media/utilisateur/root_fs/
Mêmes remarque que pour la sauvegarde, attendre, vérifier l’absence de message d’erreur.
Une fois la copie terminée s’il n’y a pas eu d’erreur, vérifier la cohérence des tailles entre la sauvegarde (/media/utilisateur/carte) et la carte SD (/media/utilisateur/root_fs):
df
Les opérations sont presque terminées. Reste plus qu’à indiquer au Raspberry que la partition root est maintenant en F2FS:
sudo nano /media/utilisateur/root_fs/etc/fstab
proc /proc proc defaults 0 0
PARTUUID=140b230d-01 /boot vfat defaults 0 2
PARTUUID=140b230d-02 / f2fs defaults,noatime 0 1
Remplacer ext4 par f2fs. Ensuite quitter par CTLR + X et répondre Oui pour sauvergarder fstab.
Dernière opération, sur la partition boot cette fois:
sudo nano /media/utilisateur/boot_fs/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=140b230d-02 rootfstype=f2fs elevator=deadline fsck.repair=yes rootwait
Remplacer ext4 par f2fs. Ensuite quitter par CTLR + X et répondre Oui pour sauvergarder cmdline.txt.
Avant d’enlever la carte SD, démonter les 2 volumes (ou arrêter la machine Linux par sudo shutdown
)
sudo umount /dev/sdb1
sudo umount /dev/sdb2
Retirer la carte SD de la machine Linux, la remettre dans le Raspberry et l’allumer. Ca doit démarrer du premier coup.
En console sur le Raspberry, on peut vérifier que la partition root est bien passée en F2FS avec la commande devenue habituelle:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
Résultat:
NAME FSTYPE SIZE MOUNTPOINT LABEL
mmcblk0 15G
├─mmcblk0p1 vfat 41,8M /boot boot
└─mmcblk0p2 f2fs 14,9G /
Terminé.
Sources:
Korben
domo-attitude.fr
linuxfr.org
whitehorseplanet.org