[TUTO] Boot sur clé en F2FS
Posté : mer. 3 janv. 2018 15:56
Objectif :
Avec la manipulation de l’OTP ou du bootcode.bin, une clé peut ne pas booter. Ici, on associe une SD avec une clé ; en clair, la SD va servir de BIOS et l’OS sera déporté sur la clé donc il n’y a aucune raison que cela ne fonctionne pas. Et on en profitera pour la passer sous le format F2FS.
Prérequis :
- Lire le tuto de François : http://www.framboise314.fr/booter-le-ra ... e-dur-usb/
- Lire mon tuto : http://www.framboise314.fr/boot-simplif ... -1-2-et-3/
- Raspian (je n'ai pas testé d'autre distribution )
- Je pars du principe que vous avez un PC sous Windows. Sur Windows, seule la partition de boot en FAT32 (mmcblk0p1) est accessible. Si vous utilisez Linux, la démarche est grandement simplifiée et vous savez quoi faire !
- Il nous faut obligatoirement 1 clé et un MSD, car il est impossible de copier les fichiers système en cours, donc il nous faut :
- la clé qui aura le futur OS (la 1ère à insérer, repérer par « sda1 » et nommée « OS »
- et le MSD qui va servir de tampon pour l'écriture des fichiers système, « sdb1 » et nommé « TAMPON »
Caractéristiques du tutoriel :
- Durée : comptez 2h30 (la copie étant le plus long mais nous ne sommes pas obligés de rester devant. Si la clé ne clignote plus, la copie est finie)
- Difficulté : débutant
Lexique :
MSD : Mass Storage Device (pour dire disque dur ou clé USB)
DD : Disque Dur
mmcblk0p1 : partition 1 en FAT32 de la carte mémoire mmcblk0, partition de boot (= BIOS), seule partition accessible sous Windows.
mmcblk0p2 : partition 2 en EXT4 de la carte mémoire mmcblk0 (accessible seulement sous Linux)
cmdline.txt : se trouve dans la partition FAT32 de la SD (mmcblk0p1) ou dans /boot/ sous Raspian
!!! Le test a été fait sur une RPi v2 et v3 avec l’image Raspian (4.58Go) datant du 2017-11-29, et avec une clé de 16Go (OS) et une autre de 32Go (TAMPON) ; formatées en FAT32 sous Windows !!!
On commence :
- On crée donc l’image de Raspian sur la SD
- On démarre la Pi et à cette étape, le PARTUUID mis par défaut dans le cmdline.txt (root=PARTUUID=49783f5b-02) est écrasé par celui de mmcblk0p2 et mmcblk0p2 est étendue automatiquement (mmcblk0p2 occupe maintenant toute la clé).
- On se configure Raspian aux petits oignons : clavier, langue, réseau, mot de passe…
- Mise à jour des paquets :
$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo rpi-update
- On redémarre pour valider les étapes précédentes :
$ sudo reboot
- Comme nous allons utiliser le système de fichier F2FS pour préserver la clé, il faut installer son paquet.
F2FS kesako ?!?
$ sudo apt-get install f2fs-tools
- On insère la clé OS puis TAMPON. Pour repérer/identifier les clés, points de montage et PARTUUID, une seule commande :
$ lsblk -o +FSTYPE,PARTUUID,MODEL (on se crée une nouvelle fenêtre console pour ça, à avoir sous les yeux)
ou alors (df -h, blkid...)
- On la démonte pour pouvoir la formater :
$ sudo umount /dev/sda1 (pour ma clé OS)
$ sudo mkfs.f2fs /dev/sda1
$ sudo blkid (nous confirme TYPE="f2fs")
- Maintenant, on fait une image exacte de mmcblk0p2 sur la clé « TAMPON » , comme on le ferait avec un DD, car celui-ci n'a pas besoin d'être formaté en F2FS, lui ! Il restera en EXT4.
$ sudo umount /dev/sdb1 (pour la démonter)
$ sudo dd if=/dev/mmcblk0p2 of=/dev/sdb1 bs=2M conv=fsync
- on remonte sda1 en /media/pi/OS et sdb1 en /media/pi/TAMPON:
$ sudo mkdir /media/pi/OS /media/pi/TAMPON
$ sudo mount -t f2fs /dev/sda1 /media/pi/OS
$ sudo mount -t ext4 /dev/sdb1 /media/pi/TAMPON
$ lsblk ou df -h ou cat /etc/mtab (confirme que les clés sont bien montées)
- on copie sdb1 sur sda1 :
$ sudo cp –va /media/pi/TAMPON/* /media/pi/OS/
- une fois la copie finie, on démonte TAMPON et on l'enlève
$ sudo umount /dev/sdb1
- on édite le fstab de sda1 et on remplace la ligne concernant mmcblk0p2 par celle de la clé :
$ sudo nano /media/pi/OS/etc/fstab
Commentez la ligne du mmcblk0p2 par # et réécrivez-la en remplaçant PARTUUID par celui de la clé et ext4 par f2fs (Ctrl+K pour couper et Ctrl+U pour coller).
- on va maintenant éditer le cmdline.txt de la SD et remplacer :
root=PARTUUID="mmcblk0p2" par root=PARTUUID= "de la clé OS "et rootfstype=ext4 par rootfstype=f2fs.
$ sudo cp –a /boot/cmdline.txt /boot/_cmdline.txt (un petit backup avant)
$ sudo nano /boot/cmdline.txt
- On redémarre :
$ sudo reboot
Si tout s’est bien passé, on démarrera sur la clé. On peut le voir au démarrage (sda1) et avec un :
$ lsblk (sda1 pointera sur « / » et mmcblk0p2 sur /media/pi/rootfs)
Compléments d'information :
- Ce tuto devrait aussi fonctionner sur les Pi Zero puisque celle-ci a le même processeur que la RPi v1, à savoir le BCM2835. Si quelqu’un pouvait confirmer, ce serait constructif.
- La séquence de boot étant matériel, ce tuto devrait fonctionner sur chaque distribution unique, donc hors multiboot.
- Si le PARTUUID ne vous plaît pas, remplacez-les par /dev/mmcblk0p1 et /dev/sda1 (ce que je préfère)
- Les images Raspian peuvent s'ouvrir avec 7-zip, et on peut accéder aux fichiers des 2 partitions !
- Maintenant vous vous retrouvez avec mmcblk0p2 inutile me diriez-vous ? Et bien non elle peut toujours servir de backup. Au moindre problème de la clé, on restaure le cmdline.txt d’origine (_cmdline.txt) à partir d’un PC.
Par contre il faut bien penser à ne SURTOUT PAS synchroniser /etc/fstable de la clé lors du backup !
Utilisez rsync
- avec une clé en ETX4 ( celle qui ce nomme TAMPON par exemple) : l'étape de la modification de fstab est pour faire propre. Je viens de faire l'essai en oubliant de le modifier , cela boot quand même car le cmdline.txt est prioritaire. Comme "/" est sur sda1, mmcblk0p2 ne se monte pas (programmé en "/" dans le fstab ! ). De plus, j'ai pris le couple SD + TAMPON, mis ça sur une RPi v1 et cela fonctionne au 2nd reboot (erreur au 1er).
- Mon couple SD + clé OS en F2FS (fait sur une Rpi v3) fonctionne sur une RPi v1 au 1er boot.
- Si vous avez besoin d'un PC sous Linux, pensez au live USB/DVD. Par exemple, copiez Linux Mint avec Rufus.
- Utilisez log2ram pour préserver encore plus les cellules NAND (SD ou clé)
Et bien sûr, je suis ouvert à toutes améliorations/suggestions. Comme c’est de l’informatique, rien n’est gravé dans le marbre !
Avec la manipulation de l’OTP ou du bootcode.bin, une clé peut ne pas booter. Ici, on associe une SD avec une clé ; en clair, la SD va servir de BIOS et l’OS sera déporté sur la clé donc il n’y a aucune raison que cela ne fonctionne pas. Et on en profitera pour la passer sous le format F2FS.
Prérequis :
- Lire le tuto de François : http://www.framboise314.fr/booter-le-ra ... e-dur-usb/
- Lire mon tuto : http://www.framboise314.fr/boot-simplif ... -1-2-et-3/
- Raspian (je n'ai pas testé d'autre distribution )
- Je pars du principe que vous avez un PC sous Windows. Sur Windows, seule la partition de boot en FAT32 (mmcblk0p1) est accessible. Si vous utilisez Linux, la démarche est grandement simplifiée et vous savez quoi faire !
- Il nous faut obligatoirement 1 clé et un MSD, car il est impossible de copier les fichiers système en cours, donc il nous faut :
- la clé qui aura le futur OS (la 1ère à insérer, repérer par « sda1 » et nommée « OS »
- et le MSD qui va servir de tampon pour l'écriture des fichiers système, « sdb1 » et nommé « TAMPON »
Caractéristiques du tutoriel :
- Durée : comptez 2h30 (la copie étant le plus long mais nous ne sommes pas obligés de rester devant. Si la clé ne clignote plus, la copie est finie)
- Difficulté : débutant
Lexique :
MSD : Mass Storage Device (pour dire disque dur ou clé USB)
DD : Disque Dur
mmcblk0p1 : partition 1 en FAT32 de la carte mémoire mmcblk0, partition de boot (= BIOS), seule partition accessible sous Windows.
mmcblk0p2 : partition 2 en EXT4 de la carte mémoire mmcblk0 (accessible seulement sous Linux)
cmdline.txt : se trouve dans la partition FAT32 de la SD (mmcblk0p1) ou dans /boot/ sous Raspian
!!! Le test a été fait sur une RPi v2 et v3 avec l’image Raspian (4.58Go) datant du 2017-11-29, et avec une clé de 16Go (OS) et une autre de 32Go (TAMPON) ; formatées en FAT32 sous Windows !!!
On commence :
- On crée donc l’image de Raspian sur la SD
- On démarre la Pi et à cette étape, le PARTUUID mis par défaut dans le cmdline.txt (root=PARTUUID=49783f5b-02) est écrasé par celui de mmcblk0p2 et mmcblk0p2 est étendue automatiquement (mmcblk0p2 occupe maintenant toute la clé).
- On se configure Raspian aux petits oignons : clavier, langue, réseau, mot de passe…
- Mise à jour des paquets :
$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo rpi-update
- On redémarre pour valider les étapes précédentes :
$ sudo reboot
- Comme nous allons utiliser le système de fichier F2FS pour préserver la clé, il faut installer son paquet.
F2FS kesako ?!?
$ sudo apt-get install f2fs-tools
- On insère la clé OS puis TAMPON. Pour repérer/identifier les clés, points de montage et PARTUUID, une seule commande :
$ lsblk -o +FSTYPE,PARTUUID,MODEL (on se crée une nouvelle fenêtre console pour ça, à avoir sous les yeux)
ou alors (df -h, blkid...)
- On la démonte pour pouvoir la formater :
$ sudo umount /dev/sda1 (pour ma clé OS)
$ sudo mkfs.f2fs /dev/sda1
$ sudo blkid (nous confirme TYPE="f2fs")
- Maintenant, on fait une image exacte de mmcblk0p2 sur la clé « TAMPON » , comme on le ferait avec un DD, car celui-ci n'a pas besoin d'être formaté en F2FS, lui ! Il restera en EXT4.
$ sudo umount /dev/sdb1 (pour la démonter)
$ sudo dd if=/dev/mmcblk0p2 of=/dev/sdb1 bs=2M conv=fsync
- on remonte sda1 en /media/pi/OS et sdb1 en /media/pi/TAMPON:
$ sudo mkdir /media/pi/OS /media/pi/TAMPON
$ sudo mount -t f2fs /dev/sda1 /media/pi/OS
$ sudo mount -t ext4 /dev/sdb1 /media/pi/TAMPON
$ lsblk ou df -h ou cat /etc/mtab (confirme que les clés sont bien montées)
- on copie sdb1 sur sda1 :
$ sudo cp –va /media/pi/TAMPON/* /media/pi/OS/
- une fois la copie finie, on démonte TAMPON et on l'enlève
$ sudo umount /dev/sdb1
- on édite le fstab de sda1 et on remplace la ligne concernant mmcblk0p2 par celle de la clé :
$ sudo nano /media/pi/OS/etc/fstab
Commentez la ligne du mmcblk0p2 par # et réécrivez-la en remplaçant PARTUUID par celui de la clé et ext4 par f2fs (Ctrl+K pour couper et Ctrl+U pour coller).
- on va maintenant éditer le cmdline.txt de la SD et remplacer :
root=PARTUUID="mmcblk0p2" par root=PARTUUID= "de la clé OS "et rootfstype=ext4 par rootfstype=f2fs.
$ sudo cp –a /boot/cmdline.txt /boot/_cmdline.txt (un petit backup avant)
$ sudo nano /boot/cmdline.txt
- On redémarre :
$ sudo reboot
Si tout s’est bien passé, on démarrera sur la clé. On peut le voir au démarrage (sda1) et avec un :
$ lsblk (sda1 pointera sur « / » et mmcblk0p2 sur /media/pi/rootfs)
Compléments d'information :
- Ce tuto devrait aussi fonctionner sur les Pi Zero puisque celle-ci a le même processeur que la RPi v1, à savoir le BCM2835. Si quelqu’un pouvait confirmer, ce serait constructif.
- La séquence de boot étant matériel, ce tuto devrait fonctionner sur chaque distribution unique, donc hors multiboot.
- Si le PARTUUID ne vous plaît pas, remplacez-les par /dev/mmcblk0p1 et /dev/sda1 (ce que je préfère)
- Les images Raspian peuvent s'ouvrir avec 7-zip, et on peut accéder aux fichiers des 2 partitions !
- Maintenant vous vous retrouvez avec mmcblk0p2 inutile me diriez-vous ? Et bien non elle peut toujours servir de backup. Au moindre problème de la clé, on restaure le cmdline.txt d’origine (_cmdline.txt) à partir d’un PC.
Par contre il faut bien penser à ne SURTOUT PAS synchroniser /etc/fstable de la clé lors du backup !
Utilisez rsync
- avec une clé en ETX4 ( celle qui ce nomme TAMPON par exemple) : l'étape de la modification de fstab est pour faire propre. Je viens de faire l'essai en oubliant de le modifier , cela boot quand même car le cmdline.txt est prioritaire. Comme "/" est sur sda1, mmcblk0p2 ne se monte pas (programmé en "/" dans le fstab ! ). De plus, j'ai pris le couple SD + TAMPON, mis ça sur une RPi v1 et cela fonctionne au 2nd reboot (erreur au 1er).
- Mon couple SD + clé OS en F2FS (fait sur une Rpi v3) fonctionne sur une RPi v1 au 1er boot.
- Si vous avez besoin d'un PC sous Linux, pensez au live USB/DVD. Par exemple, copiez Linux Mint avec Rufus.
- Utilisez log2ram pour préserver encore plus les cellules NAND (SD ou clé)
Et bien sûr, je suis ouvert à toutes améliorations/suggestions. Comme c’est de l’informatique, rien n’est gravé dans le marbre !