Page 1 sur 2

[TUTO] Boot sur clé en F2FS

Posté : mer. 3 janv. 2018 15: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-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 !

Re: [TUTO] Boot sur clé en F2FS

Posté : ven. 5 janv. 2018 22: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é : ven. 5 janv. 2018 23: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 08: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 08: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 10: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 17: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!

Re: [TUTO] Boot sur clé en F2FS

Posté : sam. 20 janv. 2018 00:07
par tioker
Oups... quelques mardis plus tard.

J'ai pris le temps. Rappel: personne n'est parfait, moi c'est Linux Mint mon OS.
Donc effectivement très simplifié.
Sous Mint On met l'OS sur une carte SD + On met l'OS sur une clé USB
On met la carte SD dans le Raspberry et on le boot.
On paramètre comme il faut. Partie configure et apt-get du tuto
On met la clé USB dans le PI. On récupère ses caractéristiques et nom par un
lsblk -o +FSTYPE,PARTUUID,MODEL
On démonte la partition OS et on copie la partie SD sur celle USB (adapter les bonnes partitions)
sudo dd if=/dev/mmcblk0p2 of=/dev/sdb1 bs=2M
On crée un point de montage pour monter la nouvelle partition
sudo mkdir /media/pi/OS
On modifie le fstab sur la partition montée
sudo nano /media/pi/OS/etc/fstab
On modifie le cmdline du boot. Là évidemment on laisse ext4 !!
On reboot et on regarde si ça marche ...

Moi, pour tout vérifier, j'ai mis la partition boot qui est en FAT32 sur une clé 1GO - formatage simple et copie des fichiers.
Et quand j'ai booté sur PI, j'ai créé un fichier dans "Documens" pour vérifier que j'avais bien écrit sur la bonne partition (vérifié sous Mint).

Voilà, ça marche Mais

Au fur et à mesure que j'avançais, je me suis dit deux ou trois choses:
- j'aurai peut-être pu modifier mon fstab de la clé USB directement sous Mint sans passer par le PI ?
- Idem pour le Boot. Mint (mais Win aussi) me permet de modifier le cmdline avec les paramètres récupérés par un montage de la clé USB
- mais surtout si j'ai bien tout compris, j'ai un couple SD USB indissociable puisque la référence de la clé USB est sur la carte SD. Donc si je veux mettre un autre OS, je suis obligé de créer un nouveau couple (ou de modifier le cmsline de ma carte SD, pas partique).

Ai-je bien compris ?

Je rappelle que j'ai un RTPI3 qui accepte un boot sur USB mais pas mon RPI2 qui est un modèle BCN2835-a21041 de 2014. J'ai appliqué le tuto mais rien n'y a jamais fait.

Donc ce montage est parfait pour préserver la carte SD qui ne sert qu'au Boot, mais il n'atteindra pas la facilité du pur boot sur USB sans SD.

Avis aux experts: :geek: "est-ce que je ne me suis pas trop trompé ?" :?: .

Merci de vos retours. :D

PS: ah oui, pour ne pas l'avoir installé, j'ai pas trop compris l'utilité du F2FS. Est-ce spécifique à l'environnement Windows ? A SUIVRE...

Re: [TUTO] Boot sur clé en F2FS

Posté : sam. 20 janv. 2018 08:28
par dyox
Bonjour,

Pour répondre aux questionx :
j'aurai peut-être pu modifier mon fstab de la clé USB directement sous Mint sans passer par le PI ?
Oui.
Idem pour le Boot. Mint (mais Win aussi) me permet de modifier le cmdline avec les paramètres récupérés par un montage de la clé USB
Oui aussi (et précisé dans ce tuto ;) )
mais surtout si j'ai bien tout compris, j'ai un couple SD USB indissociable puisque la référence de la clé USB est sur la carte SD. Donc si je veux mettre un autre OS, je suis obligé de créer un nouveau couple (ou de modifier le cmsline de ma carte SD, pas partique).
Avec votre description, cest bien ça !
J'avais anticipé cette question, c'est pour ça que j'ai dit en complément d'information :
Si le PARTUUID ne vous plaît pas, remplacez-les par /dev/mmcblk0p1 et /dev/sda1 (ce que je préfère)
Avec ça vous devriez pouvoir changer la sd / MSD. Comme le nom est générique, cela ne devrait pas poser de problème.
A tester car je ne sais plus si j'ai fait l'essai. Après relecture de mon tuto, j'ai dû faire l"essai quand j'ai écrit :
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).
Je rappelle que j'ai un RTPI3 qui accepte un boot sur USB mais pas mon RPI2 qui est un modèle BCN2835-a21041 de 2014. J'ai appliqué le tuto mais rien n'y a jamais fait.
Euh, ici ce n'est pas le tuto pour le boot usb. Pour le boot usb sur la v2, c'est les fichiers bootcode.bin + timeout. C'est toujours expérimental et cela dépend beaucoup des MSD. Il y a une liste de clé qui sont compatibles (dans mon tuto, celui de François et sur le site officiel).
Donc ce montage est parfait pour préserver la carte SD qui ne sert qu'au Boot, mais il n'atteindra pas la facilité du pur boot sur USB sans SD.
J'ai une clé compatible sur la v3 où le boot est très rapide et une autre où il faut attendre facilement 30s. Dans ce cas là, ce tuto est fort pratique :D
Mais c'est vrai.
Avis aux experts: :geek: "est-ce que je ne me suis pas trop trompé ?" :?: .
Pas du tout
PS: ah oui, pour ne pas l'avoir installé, j'ai pas trop compris l'utilité du F2FS. Est-ce spécifique à l'environnement Windows ? A SUIVRE...
ha ! Là, une relecture s'impose car j'avais aussi anticipé cette question en donnant un lien, pour les curieux 8-)
C'est pour préserver les cellules NAND donc pour les clés, SSD, cartes mémoire...

Re: [TUTO] Boot sur clé en F2FS

Posté : sam. 20 janv. 2018 09:34
par tioker
Merci pour ces réponses.
Je vais prendre un peu de temps pour bien voir où je pourrai m'améliorer, où je ne suis pas allé au fond de votre tuto, et surtout où je pourrai lever la contrainte du couple SD USB.
Merci en tous les cas.