Boot sd Card et Buster sur SSD avec RPi4

Bonjour, ne voulant pas me planter car mon syteme sur sd Card est fonctionnel, pour ne pas dire qu’il tourne comme une horloge, je viens de recevoir un SSD 500 GB j’ai fais 2 partitions de 250GB en ext4.
Une pour le systeme, l’autre pour stocker des données diverses.
Je voudrais faire le boot sur carte sd et que le SSD prenne le relais pour le systeme une fois la phase de démarrage passée.
Merci par avance de vos conseils! :slightly_smiling_face:

hello,

je suppose que tu as raspbian « buster » et un Rpi4 …

Le principe c’est d’indiquer au systeme ou il va trouver le root (/) dans le fichier /boot/cmdline.txt et dans /etc/fstab ).

etape 1 :

tu copies ton root sur ta sd dans la partition de ton disque dur vide :

oui mais comment ?

etape 2 :

une fois la copie terminée,
retailler la partition du SSD sinon elle reste a la taille de celle de la sd !
sudo resize2fs /dev/sda2 ( ou /dev/sda2 est bien sur la partition root (/)

etape 3 :

  • dans une console tu fais :
    sudo blkid
  • tu branches ton disque et tu refais :
    sudo blkid

les nouvelles partitions qui apparaissent sont celles de ton disque ( non ? sisi ! :wink: )
l’info a conserver c est le PARTUUID du /dev/sda2 .

sur la partition root du disque dur il faut changer le /etc/fstab comme ça :
#PARTUUID=d9bnfnnn-Xx / ext4 defaults,noatime 0 1
PARTUUID=XXXXXXXXX / ext4 defaults,noatime 0 1

tu mets en commentaire l’ancien root
et tu crées une ligne avec le partuuid de ta partition root ( / )

etape 4 :

NB : avant de modifier ton /boot/cmdline.txt fais en une sauvegarde ! )
sudo cp /boot/cmdline.txt /boot/cmdline.sav

ds /boot/cmdline.txt de la sd tu remplaces:
root=PARTUUID=nnnnnnnnnn
par le PARTUUID de la partition root de ton ssd donné par le dernier blkid

en fait là on dit au système où il va chercher le root ( / )

etape 5 :

et si j’ai bien tout compris tu as alors ton /boot toujours sur ta sd et ton /root sur ton SSD.

reste plus qu"à croiser les doigts et à redémarrer.

(source : https://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/ )

NB je pense que le choix de /dev/sda2 n’est pas anodin si tu utilises /dev/sda1, je suppose que le resize2fs va te bouffer tout l’espace - adieu la partition « data » !
erratum : en fait non suivant le manpage il s’arrete a la fin de la partition !

PS : je ne suis pas sur que pour un SSD l’options defaults ds le /etc/fstab soit le meilleur choix. sur le mien sur un PC linux je l’ai viré ( je me souviens plus pourquoi mais ça tient à la gestion de l’espace libre et ça doit dépendre du type de disque ! il y a pléthore d’info sur le web la dessus !)

Merci beaucoup,je vais me pencher sur ça des que j’aurai un peu de temps… et une fois que j’aurai bien assimilé les manips, je veux pas me louper :yum:
Je n’ai pas pensé a jetter un oeil sur framboise 314… quel âne …
Merci encore :slightly_smiling_face:
Question bete, j’ai partitionné mon SSD en 2 parttion ext4 de 250Go, mes 2 partitions sont de type /dev/sdb1 et /dev/sdb2, pourquoi elles ne sont pas /dev/sda1, comme dans ton exemple?

le /dev/sd? est attribué au démarrage tu dois avoir un autre disque ou une cle usb dessus le premier qu il trouve sda le deuxieme sdb,…
et si tu en montes un après le démarrage il utilisera la lettre suivante sdc etc.
d 'ou l intérêt d utiliser le PARTUUID plutot que /dev/sd? ds /etc/fstab pour être sur d’être sur la « bonne » partition.

tu pourras aussi ajouter ta partition « data » ds /etc/fstab pourr qu’elle soit monté à chaque démarrage :
PARTUUID=XXXXXXXXX /home/pi/Work ext4 defaults,noatime 0 1

et créer un repertoire Work
mkdir /home/pi/Work ou autre chose bien sur tant que c est le même que ds fstab !

Donc dans mon exemple:
pi@raspberrypi:~ $ sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT=« boot » LABEL=« boot » UUID=« 3FFE-CDCA » TYPE=« vfat » PARTUUID=« 46bcb669-01 »
/dev/mmcblk0p2: LABEL=« rootfs » UUID=« 3122c401-b3c6-4d27-8e0d-6708a7613aed » TYPE=« ext4 » PARTUUID=« 46bcb669-02 »
/dev/sdb1: LABEL=« systeme » UUID=« 81dcb962-c190-48c5-b363-a1ef212250ad » TYPE=« ext4 » PARTUUID="0dd3253d-01"
/dev/sdb2: LABEL=« divers » UUID=« 0ff98f53-507a-4b4e-8f93-00852a225e74 » TYPE=« ext4 » PARTUUID=« 0dd3253d-02 »
/dev/mmcblk0: PTUUID=« 46bcb669 » PTTYPE=« dos »
pi@raspberrypi:~ $
Je peux copier avec sudo dd la parttion root de ma sdcard sur la partition que j’ai nommée « systeme » sur mon ssd qui pour PARTUUID=« 0dd3253d-01 »
Une fois toutes le manip et modifs faites, si le Pi4 demarre avec un clé usb et le ssd pas de probleme ça bootera comme il faut?

yes !
si tu as redémarrer ton Rpi refais quant même le blkid pour être sur que ça a pas bouger ! et si tu as toujours systeme sur /dev/sdb1, tu mets sudo dd if=/dev/mmcblk0p2 of=/dev/sdb1 et ça devrait coller.

en fait le dd est dangereux pour la partition après le of= ( output file ) donc c’est surtout de celle là qui faut être vraiment sur au risque de détruire une partition qui fait pas partie de la manip !

Pour le resize, si j’en crois le manpage ( man resize2fs ) :« If size parameter is not specified, it will default to
the size of the partition. » donc l’agrandissement de ta parttiion sdb1 lui donnera la taille que tu as donné à cette partition. (250 Go)

une fois modifier le cmdline.txt et le fstab avec le bon PARTUUID et la bonne syntaxe ( ça vaut le coup de relire les modifs saisies ! ) y a pas de raison que ça redémarre pas correctement et même normalement plus vite !

Bonjour et merci pour toutes tes précisions !
Je me lancerai ce week-end je préfère faire ça au calme.
Merci encore!

Petit retour apres un essai entre le fromage et le dessert apres avoir sauvegardé mon systeme sur une autre SD…
Pas tres concluant…
Dans le Terminal:
pi@raspberrypi:~ $ sudo dd if=/dev/mmcblk0p2 of=/dev/sda1
dd: écriture vers ‹ /dev/sda1 ›: Aucun espace disponible sur le périphérique
3735593+0 enregistrements lus
3735592+0 enregistrements écrits
1912623104 octets (1,9 GB, 1,8 GiB) copiés, 51,9619 s, 36,8 MB/s
pi@raspberrypi:~ $
Jusque là, ca pourrait aller, non?
Ensuite ça se gate…


Je suis obligé de monter la partition a la main, et il me met Type de partition inconnue…
Je vais aller finir mon dessert :yum:

j’ai fait quelques modifs dans le post qui détaille la procédure; j’ai mis le resize juste après la copie par dd ( au cas ou le resize change les valeur données par le blkid - le partuuid)

Pour ton problème il devrait disparaître après un redémarrage ou même peut être un sync , histoire que le noyau soit au courant des modifs sur le disque.
(source : man sync )

ça c’est plus bizarre et surtout que le nombre d enregistrements lus est supérieur à celui écrit …
ta carte sd est saine ?

sinon je viens de m’apercevoir que le dd copie tellement a l’identique le disque qu’il copie aussi le uuid pour le partuuid j’en sais rien mais en faisant un blkid avec ta sd et ton ssd tu seras fixé. Il y a des chances que le resize change ces valeurs…

Bonjour,
j’ai refait une copie avec dd et apres debranché rebranché le SSD tout est rentré dans l’ordre.
Seul bemol au moment de resize, il m’a demandé de faire une reparation de la partition, la commande m’échappe impossible de la retrouver dans l’historique car j’ai basculé sur le SSD.
J’ai eu un message d’erreur avec Chromium mais depuis, ça l’air de fonctionner…
En revenche sais tu comment je pourrais faire disparaitre la SDcard qui apparait dans les volumes montés?
Je crains les manip hasardeuse de mes filles :smile:

!
Merci beaucoup pour ton aide et tes infos precieuses! :grinning:

une des solutions pour empêcher les « manips hasardeuses » se serait de monter l’ancienne partition rootfs en lecture seule. ( on la voit mais on peut pas la modifier )
pour ça tu mets la mets ds /etc/fstab en read only :
/dev/mmcblk0p2 /mnt/old_root_ro ext4 ro,noatime 0 2

et tu crées le point de montage :
mkdir /mnt/old_root_ro

il doit y avoir d’autres solution en modifiant la config de LXDE si ça t’intéresses tu peux regarder ici :

pourquoi faire simple quand on peut faire compliqué :wink:

Super je vais regarder tout ça et cette fois, c’est vraiment pour ce week end :slight_smile:
Tu es un maitre!
Ps: au sujet du read only, j’ai lu que ca pouvait poser des problemes lors de mises a jour du noyau ou de bas niveau.
Donc je prefere laisser comme ça…
Je vais briefer ma petite famille :wink:
Une question quel logiciel me conseillerez tu ou quelle ligne de commande magique pour sauvegarder mon SSD? Car j’utiliser regulierement SD Card Copier jusque là, mais comme son nom l’indique il ne gere que les carte :slight_smile:

d’abord le « maître » il s"est gravement gouré ! il a juste oublier que la copie du rootfs alors qu’il est monté, n’était vraiment pas une bonne idée ! même si ça semble être la solution préconiser par le tuto de framboise.

pourquoi ? ben parce que le système écrit régulièrement sur le rootfs ( notamment des logs ) ce qui fait que cette partition évolue et comme les écritures sont pas bêtement séquentiel et bien la copie elle est toute vérolée d’où peut-être les erreur lors du resize.

Même la copie entre la carte sd et une clé USB sur un autre PC n’a pas donné de résultat correct ! je suppose que ça doit tenir à la façon dont ces périphériques sont organisé d’ou certainement le programme SD card copier. (les 512 premiers octets seraient organiser d’une façon particulière sur la sd de la Rpi ! mais j’en sais rien et ça dépasse mon domaine de compétence ! )

Donc la solution que j’ai finalement utilsée c’est de copier l’image de buster originale (2019-09-26-raspbian-buster-full.img) sur une clé usb ( ça doit marcher aussi sur un disque ) avec juste une table de partition MBR et de la « resizer » avec gparted et eventuellement de créer une autre partition. l’inconvénient c’est que ça laisse un espace vide devant ( l’emplacement de la partition de boot de l’image qui n’est pas utile puisqu’au derniere nouvelle, le Rpi4 ne pouvait pas entierement booté sur un périphérique externe- 250Mo de perdu que jai partitionner et formater en fat32)

ensuite une fois les modifs faites dans /etc/fstab et /boot/cmdline.txt , le reboot propose l’installation du systeme ( choisir sa langue, le mot de passe Wifi, les mises a jour ) à partir du périphérique externe.

pour les sauvegardes sur raspberry je ne sauvegarde que les données du /home et certains fichiers de config de /etc donc j’ai pas d’outils complexes ; je copie betement les données sur un disque externe. sinon regarde tar qui compresse et crée une archive a partir d’un fichier ou d’un repertoire complet pratique pour sauvegarder tout le /home par exemple.
(source : tar [Wiki ubuntu-fr] )

pour virer les icônes de la carte sd sur le bureau c’est dans le menu Préferencces/Appearence settings/
il suffit de décocher la case « Mounted disks ».

(le MBR : Structure du MBR et des tables des partitions sur le disque dur )
(gparted : GParted -- Manuel de GParted )

Bonjour,
Pourquoi ne pas utiliser l’ utilitaire rpi-clone.
C’est ce que j’utilise pour passer le système sur un ssd sur mes RPI 3b et 3b+ .Je démarre le RPI avec la carte SD, ensuite je tape la commande sudo rpi-clone sda -f quand c’est terminé, je stop le RPI, j’ enlève la carte SD et je redémarre le RPI,
L’utilitaire RPI-CLONE et sont mode d’ emploi se trouve ici https://github.com/billw2/rpi-clone

sur Rpi4 a ma connaissance on ne peut pas mettre tout le système ( /boot et /roofs ) sur un périphérique externe.
(source:Raspberry Pi Documentation - Raspberry Pi hardware)

si rpi-clone « sait » cloner que le /rootfs peut être ça marcherait ! à tester !

En fait je me suis mal expliqué,
je voulais juste cloner la carte sur le msata . Et ensuite démarrer sur la SD avec la partition Root sur le msata.
J’ai donc monté mon RPI 4 avec la carte d’ extension suptronic X856, et un disque msata, j’ai démarré mon système, cloner la carte SD avec rpi-clone:
ichel@RASPI-240:~ $ sudo rpi-clone sda -f

Booted disk: mmcblk0 63.9GB Destination disk: sda 500.1GB

Part Size FS Label Part Size FS Label
1 /boot 268.3MB fat32 –
2 root 63.6GB ext4 rootfs

== Initialize: IMAGE mmcblk0 partition table to sda - forced by option ==
1 /boot (54.3MB used) : IMAGE to sda1 FSCK
2 root (5.7GB used) : RESIZE(499.8GB) MKFS SYNC to sda2

Run setup script : no
Verbose mode : no
-----------------------:
** WARNING ** : All destination disk sda data will be overwritten!
: The partition structure will be imaged from mmcblk0.
-----------------------:

Initialize and clone to the destination disk sda? (yes/no): yes
Optional destination ext type file system label (16 chars max):

Initializing
Imaging past the start of /boot partition 2.
=> dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=268 …
Resizing last partition to end of disk …
Resize success.
Changing destination Disk ID …
Delaying so partprobe can update /dev entries …
=> fsck -p /dev/sda1 …
=> mkfs -t ext4 /dev/sda2 …

Syncing file systems (can take a long time)
Syncing mounted partitions:
Mounting /dev/sda2 on /mnt/clone
=> rsync // /mnt/clone with-root-excludes …
Mounting /dev/sda1 on /mnt/clone/boot
=> rsync /boot/ /mnt/clone/boot …

Editing /mnt/clone/boot/cmdline.txt PARTUUID to use 37a21902
Editing /mnt/clone/etc/fstab PARTUUID to use 37a21902

Done with clone to /dev/sda
Start - 16:35:35 End - 16:39:36 Elapsed Time - 4:01

Cloned partitions are mounted on /mnt/clone for inspection or customizing.
Hit Enter when ready to unmount the /dev/sda partitions …

ensuite j’ ai modifié le fichier cmdline avec la nouvelle PARTUUID. Puis reboot .
et voici le résultat:
df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 458G 5,4G 429G 2% /
devtmpfs 1,8G 0 1,8G 0% /dev
tmpfs 2,0G 0 2,0G 0% /dev/shm
tmpfs 2,0G 9,5M 1,9G 1% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup
/dev/sda1 253M 53M 200M 21% /boot
tmpfs 391M 0 391M 0% /run/user/1000
tmpfs 391M 0 391M 0% /run/user/1001
.
Seul problème la partition BOOT est dans /dev/sda1

Bonsoir,
Encore merci a vous pour vos conseils et vos retour!
Apres 2 jours d’utilisation du systeme sur le SSD, croisons les doigts, ça tourne impeccable.
Le confort du SSD est incontestable, surtout a l’ecriture je trouve.
Effectivement les erreurs qui sont apparue lors du resize viennent sans doute des modifs du rootfs. apparement les erreurs ont bien été corrigées.
C’est clair que l’ideal est de faire la bascule du boot SSD lors de l’install du systeme, plutot que 4 mois apres comme dans mon cas, j’apprehendai la fausse manip.
Oui pour les icones des « mounted Disks » j’avais vu dans les Prefs, mais j’aime bien avoir mes clé USb sur le bureau donc je laisse comme ça :wink:
Pour la sauvegarde, il ya aussi la possibilité du dd of depuis le SSD vers le support de sauvegarde, non? Ca risque d’etre un peu long mais bon.
Je vais me pencher sur rpi-clone.
Merci encore :slight_smile: