Page 1 sur 1

[TUTO] Boot sur clé en F2FS

Posté : mer. 3 janv. 2018 16:56
par dyox
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-raspberry-pi-sur-un-disque-dur-usb/
- Lire mon tuto : http://www.framboise314.fr/boot-simplifie-sur-usb-avec-les-raspberry-pi-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 exact 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

- 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 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 !

Re: [TUTO] Boot sur clé en F2FS

Posté : ven. 5 janv. 2018 23:42
par tioker
dyox a écrit :[la démarche est grandement simplifiée et vous savez quoi faire

Bonjour,
J'ai suivi ton précédent Tuto (boot sur USB) qui fonctionne très bien sur un Raspberry 3, mais pas mon 2.
j'allais abandonner que je suis tombé sur ce dernier tuto.
Mon but: Utiliser une carte SD avec Boot en fonction BIOS pour avoir l'OS sur USB.

Comme je suis une quiche en Linux, quelles sont les fonctions de ton Tuto à simplifier/supprimer ? Justement, je ne sais pas quoi faire
J'ai un Linux Mint, je sais manipuler les partitions, mais toutes ces commandes ..

Si tu/vous pouvais/pouviez m'éclairer.
Merci

Re: [TUTO] Boot sur clé en F2FS

Posté : sam. 6 janv. 2018 00:56
par dyox
Bonsoir,

C'est pour ça que j'ai fait ce tuto. Il y a des clés qui ne fonctionnent tout simplement pas et d'autres qui bootent en 5s.

Une petite précision, sur la v2, vous me confirmez qu'il y a bien le bootcode.bin et le fichier timeout sur la sd ?

Avec Linux, on peut se passer de la clé TAMPON et la SD et clé devrait être montées sous /mnt/
Et peut-être aussi installer f2fs sur Mint pour pouvoir copier mmcblk0p2 sur la clé OS.

Les commandes, elles ne sont pas si nombreuses et il y a "Tab" pour l'auto-remplissage et la commande history avec son "!" pour rappeler un numéro de commande.

Bon courage

Re: [TUTO] Boot sur clé en F2FS

Posté : sam. 6 janv. 2018 09:52
par tioker
Bonjour,
Merci. Je m'y mets dès mardi.
Cdlt

Re: [TUTO] Boot sur clé en F2FS

Posté : jeu. 11 janv. 2018 09:51
par RomainD2
Bonjour dyox,

J'ai posté sur un sujet du blog, mais le forum me semblant fort intéressant, je n'ai pas résisté à l'envie de m'y inscrire! Donc pour reprendre mon problème, je souhaitais faire une nouvelle installation de mon rpi3 aujourd'hui pour un serveur + cloud. J'utilisais habituellement l'installation classique sur carte SD, mais les corruptions de carte SD m'ont fait atterrir ici! Malheureusement, je suis un peu perdu après avoir lu les différents tutoriel ainsi que les commentaires sur le blog, cela m'a apporté pas mal de confusions...

Si on part du principe que je ne me base exclusivement sur ce tutoriel, est-on réellement obligé d'utiliser deux clé USB + la carte SD du RPi? Ne peut-on pas mettre l'OS sur la carte SD et le tampon sur le MSD ou inversement?

Ce qui me gène, c'est bien sûr l'utilisation d'une seconde carte SD, mais aussi le backup car je souhaite sauvegarder une image de chaque support sur mon PC en cas de soucis pour éviter de me prendre la tête à tout réinstaller en cas de soucis. Un HDD de 4 To sera connecté sur le RPi, mais je ne veux aucun élément linux dessus pour qu'il puisse se mettre en veille en cas d'inactivité!

A la première lecture des articles du blog, je pensais n'avoir besoin que de la carte micro SD d'origine, et d'une clé USB + mon HDD 4To externe!

Hormis ce point qui m’empêche de démarrer, le reste des instructions m'ont l'air claires.

Merci d'avance pour ton aide!

Re: [TUTO] Boot sur clé en F2FS

Posté : jeu. 11 janv. 2018 11:49
par dyox
Bonjour et bienvenue,

Pour une v3, il y a 5 méthodes de boot :
1) la commune, tout sur µSD
2) tout sur le MSD (reprogrammation de l'OTP)
3) le bootcode.bin seul sur la µSD si le 2) ne fonctionne pas et OS sur MSD
4) ce tuto si 2) et 3) ne fonctionne pas donc boot sur µSD + OS sur MSD
5) PXE, sur le réseau (reprogrammation de l'OTP ou bootcode.bin)

mais les corruptions de carte SD m'ont fait atterrir ici

Faudrait voir pourquoi ? Cartes de même marque, mauvaise qualité, bon arrêt du Pi...???

Si on part du principe que je ne me base exclusivement sur ce tutoriel, est-on réellement obligé d'utiliser deux clé USB + la carte SD du RPi? Ne peut-on pas mettre l'OS sur la carte SD et le tampon sur le MSD ou inversement?

J'ai passé volontairement des choses sous silence car déjà expliqué par François. Vous, vous n'avez pas lu les prérequis :D
Pour ce tuto, vous n'avez pas le choix. Après si vous avez un PC Linux, vous pouvez vous passer de la clé TAMPON (voir les commentaires plus haut)
Pourquoi ici la clé TAMPON ? Parce que l'on ne peut pas écrire les fichiers système en cours sur un autre support, à part si on utilise la commande dd mais celle-ci fait une image 1:1 donc copie aussi le FS (FileSystem : ici EXT4 alors que l'on veut du F2FS)
La clé TAMPON ne sert QUE pour la copie sur la clé OS. Après, vous pouvez l'utilisez comme vous voulez.

Ce qui me gène, c'est bien sûr l'utilisation d'une seconde carte SD

Pourquoi une seconde SD ? pour le backup ?

Pour le backup, il y a plein d'outils : SD copier sur Raspian (dans accessoires), rsync, rpi-clone...
Sur windows, w32diskmanager et faire "lire" pour créer une image 1:1 puis la compresser.

Imaginez-vous la SD avec 2 partitions
- mmcblk0p1 pour le boot
- et mmcblk0p2 pour l'OS

mmcblk0p2 peut être transféré sur n'importe quel support avec n'importe quel FS mais si celle-ci est en cours d'utilisation, on est limité pour la copie.

Si il y a encore des choses que vous ne comprenez pas, (re)lisez bien le tuto de François, l'ancien mien et celui-là.

Bon courage.

Re: [TUTO] Boot sur clé en F2FS

Posté : ven. 12 janv. 2018 18:01
par RomainD2
Merci pour votre réponse!

En effet, je n'avais pas saisi la différence des 5 méthodes de boot! Donc j'ai appliquée la méthode 2, et tout roule! J'ai eu de la chance car justement, j'ai perdu mon lecteur de carte microSD, donc j'avais déjà une installation sur la carte, mais si je me loupais, j'étais fichu!

J'ai tout de même tenté le passage en F2FS comme expliqué sur ce tutoriel : http://linuxfr.org/wiki/raspberrypi-rem ... -formatage

Mais j'ai eu un soucis d'installation Linux sur mon PC Fixe... Donc j'ai abandonné... Je n'ai pas trouvé de solutions pour le faire sous windows directement! De toute façon, je me suis rendu compte que ma clé USB n'était pas au top en écriture... Je fais des sauvegardes avec w32diskimager, et j'ai du faire pas mal de tentatives par rapport à ce que je souhaitais faire. Mais les copies étaient extrêmement longues, de l'ordre d'une heure :cry: . Les copies étaient plus raisonnables, de l'ordre de 15-20min

Je vais voir si je ne peux pas trouver une clé USB plus performante, quoi que je ne sais pas si cela aura une grande influence pour mon utilisation : C'est surtout pour le cloud NextCloud, mais ça a l'air de bien tourner! Si c'est le cas, j'espère aussi que malgré une clé USB différente on peut "graver" l'image provenant d'une autre clé! A méditer!