Raspberry comment booter depuis l'USB (SSD) lorsqu'une carte SD est présente?

Bonjour,
J’ai un raspberry pi 4 qui tourne sous Bullseye 64 bits.
J’ai configuré le boot sur USB (disque SSD avec alimentation externe pour être sûr qu’il est opérationnel avant de redémarrer le PI) puis si non disponible sur SD :
sudi raspi-config → option 6 Options avancées
option A6 Ordre de démarrage
Démarrage USB B2.
Dans le slot micro SD du raspberry j’ai une SD contenant un clone (via SD Card Copier) de mon disque SSD.
Si je reboot mon Raspberry je démarre à chaque fois sur la SD (sauf si la SD n’est pas dans le slot bien sur !)
Comment booter depuis le SSD via USB lorsqu’une micro SD est dans le Pi ?
Je me sers de la micro SD pour faire une copie toutes ls semaines via rpi-clone de mon SSD c’est une sauvegarde lancée par la crontab…

MERCI

J’ai testé mon soucis avec Buster et Bullseye, il semblerait que le problème soit lorsque l’on a un clone du SSD sur la SD (lors d’une copie via rpi-clone)
par contre je ne vois toujours pas comment régler ce problème!

hello,

apparemment ta config 'b2" est la bonne !
l’hypothèse c’est que ton SSD met plus de 20 secondes a démarrer et que donc le Rpi démarre finalement sur la SD …

si c’est le cas tu dois pouvoir modifier le bootloader pour en augmentant le USB_MSD_DISCOVER_TIMEOUT a l’aide la commande sudo -E rpi-eeprom-config --edit

NB : je te conseille vivement avant de faire ce type de manip de trouver comment restaurer un bootloader sain !

j’ai trouvé ça ici:

Merci j’ai même
fait ceci :
sudo rpi-eeprom-config
qui me donne :
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
BOOT_ORDER=0xf14 //ici c’est bien la bonne config.

Mais je ne pense pas que cela soit du à un temps de démarrage trop long du SSD.
En effet j’ai mis un SSD avec alimentation externe démarrée avant le pi (j’ai aussi essayé avec un SSD alimenté par le port UBS du PI) et lorsque le contenu de la SD n’est pas un clone du SSD on boot bien sur l’USB (SSD) et non pas sur la SD il doit y avoir un contrôle sur le boot du Pi (fstab?) qui comme c’est un clone parfait du SSD confond la SD avec le SSD…
Je continue mes recherches et sui preneur de toutes idées.
merci encore
AU cours de mes recherches je me suis aperçu de ceci :
pi@raspberrypi:~ $ sudo blkid
/dev/sda1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 6229-BAA7 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 392a8b00-01 »
/dev/sda2: LABEL=« rootfs » UUID=« 7c7dfdc9-556c-4551-bb46-391b1dd27cc0 » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« 392a8b00-02 »
/dev/sdc1: LABEL=« SAUVEGARDES » UUID=« BC53-1C04 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 41505f42-01 »
/dev/sr0: BLOCK_SIZE=« 2048 » UUID=« 2013-11-21-16-45-01-00 » LABEL=« MegaFon » TYPE=« iso9660 » PTTYPE=« mac »
/dev/mmcblk0p1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 6229-BAA7 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 3203184d-01 »
/dev/mmcblk0p2: LABEL=« rootfs » UUID=« 7c7dfdc9-556c-4551-bb46-391b1dd27cc0 » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« 3203184d-02 »

La carte SD (/dev/mmcblk0p1) le bootfs à le même UUID (6229-BAA7) que le disque ssd (/dev/sda1) alors que normalement à ma connaissance un UUID est censé être unique…

clair que 20 secondes ça paraiît long mais il ne s’agit pas que du temps de démarrage du SSD il y a aussi le temps que met le Rpi à le trouver !

peut être faudrait il cocher la case 'New partition UUID" sur rpi-clone ?

mais ça ne solutionnera sans doute pas ton problème puisque si le Rpi trouve le SSD il devrait logiquement utiliser la partition boot sur /dev/sda1 et utiliser comme racine le « root= » indiqué dans cmdline.txt ( référencé normalement par son partUUID )

Bonjour, merci pour ta suggestion effectivement en cochant « new partition UUID » avec "SD Card Copier "cela fonctionne nickel comme ça cela confirme mes soupçons malgré le réglage du boot dans l’eeprom du pi 4 il n’apprécie pas les UUID identique.

https://github.com/billw2/rpi-clone

Par contre avec rpi-clone (qui me sert à faire mes copies identiques) je ne trouve pas comment générer des UUID différents à la copie… l’option -l sur la commande :
sudo rpi-clone -l mmcblk0 -v -U
permet de rendre la main du boot sur le SSD malgré la précense de la carte SD mais j’ai toujours des UUID identiques :
pi@raspberrypi:~ $ sudo blkid
/dev/sda1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 6229-BAA7 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 392a8b00-01 »
/dev/sda2: LABEL=« rootfs » UUID=« 7c7dfdc9-556c-4551-bb46-391b1dd27cc0 » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« 392a8b00-02 »
/dev/sdc1: LABEL=« SAUVEGARDES » UUID=« BC53-1C04 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 41505f42-01 »
/dev/sr0: BLOCK_SIZE=« 2048 » UUID=« 2013-11-21-16-45-01-00 » LABEL=« MegaFon » TYPE=« iso9660 » PTTYPE=« mac »
/dev/mmcblk0p1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 6229-BAA7 » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 3203184d-01 »
/dev/mmcblk0p2: LABEL=« rootfs » UUID=« 7c7dfdc9-556c-4551-bb46-391b1dd27cc0 » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« 3203184d-02 »

et le fait d’avoir des UUID identique pose des soucis au système du genre impossible d’éjecter la SD depuis le bureau il a tendance à confondre le SSD et la SD…
Du coup il faudrait que je trouve soit comment faire une copie avec rpi-clone avec un UUID différent (comme dans SD Card Copier) ou alors comment après copie changer les UUID des 2 partitions de la SD…
Merci

le plus simple est peut être de différencier deux types de sauvegarde:

. Sauvegarde du système en utilisant le clonage
le principe serait de conserver une image d’un système fonctionnel à jour; ce qui sous entend que ce clonage devra être fait à chaque modification ou mise à jour du système

. sauvegarde des données en utilisant rsync sur un autre support qui ne concernera que les données ( suivant l’usage que tu fais du poste par exemple les fichiers du serveur web, les bases de mariadb, les dossiers de développement, les bookmarks du navigateur web, etc.).

en cas de soucis on réinstalle le système à partir du clone et on récupère les données avec rsync.

NB: les supports de sauvegarde ne sont pas éternel et il est prudent de vérifier leur état et suivant les contraintes d’utiliser plusieurs supports ( avant un traitement qui modifie les données ou pour conserver une situation à un moment précis).

Oui en fait c’est déjà une peu beaucoup fait :
voici ma crontab :
#effectuer une sauvegarde de la base ruches tous les jours a 11h00 sur la cle USB SAUVEGARDES
00 11 * * * sudo bash /home/pi/script/sauvegarde >> /home/pi/script/sauvegarde.log 2>&1

#effectuer une sauvegarde de la base ruches tous les jours a 20h00 sur le dossier partage Sauvegarde_Raspberry2
00 20 * * * sudo bash /home/pi/script/sauvegarde1 >> /home/pi/script/sauvegarde1.log 2>&1

#effectuer une sauvegarde du dossier HTML une fois par semaine le lundi a 23h00 sur la cle USB SAUVEGARDES
00 23 * * 1 sudo bash /home/pi/script/sauvegarde2 >> /home/pi/script/sauvegarde2.log 2>&1

#effectuer une sauvegarde du dossier HTML une fois par semaine le jeudi a 22h00 sur le PC
00 22 * * 4 sudo bash /home/pi/script/sauvegarde3 >> /home/pi/script/sauvegarde3.log 2>&1

#effectuer une sauvegarde du dossier HTML une fois par semaine le mercredi a 22h00 sur le Medion26
00 22 * * 3 sudo bash /home/pi/script/sauvegarde4 >> /home/pi/script/sauvegarde4.log 2>&1

#effectuer une sauvegarde de la base ruches une fois par semaine le mardi a 21h00 sur le Medion26
00 21 * * 2 sudo bash /home/pi/script/sauvegarde5 >> /home/pi/script/sauvegarde5.log 2>&1

#effectuer une sauvegarde du dossier script une fois par mois le 1er a 23h30 sur le Medion26
30 23 1 * * sudo bash /home/pi/script/sauvegarde6 >> /home/pi/script/sauvegarde6.log 2>&1

#effectuer une sauvegarde du dossier script une fois par semaine le samedi a 22h00 sur la cle USB
30 22 * * 6 sudo bash /home/pi/script/sauvegarde7 >> /home/pi/script/sauvegarde7.log 2>&1

#effectuer une sauvegarde du dossier script une fois par semaine le vendredi a 22h00 sur le PC
00 22 * * 5 sudo bash /home/pi/script/sauvegarde8 >> /home/pi/script/sauvegarde8.log 2>&1

#effectuer une sauvegarde de la crontab et de la fstab une fois par semaine le vendredi a 01h00 sur le PC, la cle USB et Medion26
00 01 * * 5 sudo bash /home/pi/script/sauvegarde9 >> /home/pi/script/sauvegarde9.log 2>&1

#effectuer une sauvegarde de la base ruche une fois par jour 10h00 sur le Medion26 en FTP
00 10 * * * sudo bash /home/pi/script/sauvegarde_FTP1 >> /home/pi/script/sauvegarde_FTP1.log 2>&1
#23 18 * * * sudo bash /home/pi/script/commande0 >> /home/pi/script/sauvegarde_FTP1.log 2>&1

#effectuer une sauvegarde du dossier script une fois par semaine le dimanche a 09h00 sur le Medion26 en FTP
00 09 * * 0 sudo bash /home/pi/script/sauvegarde_FTP2 >> /home/pi/script/sauvegarde_FTP2.log 2>&1

#effectuer une sauvegarde du dossier HTML une fois par semaine le dimanche a 0h00 sur le Medion26 en FTP
00 00 * * 0 sudo bash /home/pi/script/sauvegarde_FTP3 >> /home/pi/script/sauvegarde_FTP3.log 2>&1

#effectuer une sauvegarde du disque de boot vers une carte SD une fois par semaine le dimanche a 3h00
00 03 * * 0 sudo bash /home/pi/script/copie_disque_boot >> /home/pi/script/copie_disque_boot.log 2>&1
pour résumer sauvegarde de la base du dossier script du dossier www très régulièrement
sur USB, PC, Serveur NAS en FTP et autre dossier!
Mais c’est quand même très pratique d’avoir une copie opérationnelle du système complet (tous les réglages, les SMS, mails,…autorisations, droits sur les dossiers,…

Sinon pour le soucis d’UUID identique j’ai un peu progressé j’ai réussi à changer l’UUID de la partition root (ext4)mais pas la boot (vfat):

pi@raspberrypi:~ $ sudo umount /dev/mmcblk0p1
pi@raspberrypi:~ $ sudo umount /dev/mmcblk0p2
pi@raspberrypi:~ $ sudo e2fsck -f /dev/mmcblk0p2

pi@raspberrypi:~ $ sudo tune2fs -U random /dev/mmcblk0p2

pi@raspberrypi:~ $ sudo tune2fs -U random /dev/mmcblk0p1
tune2fs 1.46.2 (28-Feb-2021)
tune2fs: Bad magic number in super-block while trying to open /dev/mmcblk0p1
/dev/mmcblk0p1 contains a vfat file system labelled ‹ bootfs ›

pi@raspberrypi:~ $ sudo blkid

/dev/sda1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 37CA-39EC » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« 747bb333-01 »

/dev/sda2: LABEL=« rootfs » UUID=« a4af13c6-d165-4cbd-a9f6-c961fef8255d » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« 747bb333-02 »

/dev/mmcblk0p1: LABEL_FATBOOT=« bootfs » LABEL=« bootfs » UUID=« 37CA-39EC » BLOCK_SIZE=« 512 » TYPE=« vfat » PARTUUID=« a5d75e8d-01 »

/dev/mmcblk0p2: LABEL=« rootfs » UUID=« fd4ae07c-811c-41a8-9062-55669a14b039 » BLOCK_SIZE=« 4096 » TYPE=« ext4 » PARTUUID=« a5d75e8d-02 »

Cela a bien fonctionné pour la partition root de type ext4 mais pas pour la partition boot en vfat…
A suivre

peut être avec mtools comme expliqué là:
https://schlemmersoft.de/en/node/180946

Il va falloir que je trouve un peu plus d’info sur mtools car la pas trop explicite pour moi, par contre j’ai essayé gparted (il faut aussi installer avec mtools) et la j’ai réussi à changer l’UUID de la partition exfat, cela doit donc (mtools être la bonne voie)

Merci

PS: si tu as déjà des liens ave plus d’exemple ou d’infos sur mtools je suis preneur!
Merci

la doc sur le web:

les man page de mlabel et de mtools.conf

après le plus sécure c’est dans doute d’essayer sur une vieille SD…

ajouter dans /etc/mtools.conf :

# # sd card boot sur /dev/mmcblk0p1
drive d: file="/dev/mmcblk0p1" exclusive

démonter la partition /dev/mmcblk0p1 (sudo umount /dev/mmcblk0p1)

puiis

sudo mlabel -vs d:
sudo mdir d:

donne le label , les fichiers et surtout l info que la carte est bien lue !

normalement avec :

sudo mlabel -vn d:

il devrait réécrire un UUID aléatoire
et avec :

sudo mlabel -vN 01234567 d:

ça devrait générer un uuid = 0123-4567

mais j’ai pas essayé les réécritures ( pas trop de SD en stock ! )

Ok merci pour toutes ses infos, je vais tester sur des SD et je reviendrais te tenir au courant de mes avancées!
Merci

J’ai fais ceci (script) pour modifier la copie.
sudo rpi-clone -l mmcblk0 -v -U >> /home/pi/script/copie_disque_boot.log
echo « Clonage terminé. » >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « blkid sortie clonage : » >> /home/pi/script/copie_disque_boot.log
sudo blkid >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo "Changement UUID partition 1 (vfat) : " >> /home/pi/script/copie_disque_boot.log
sudo mlabel -i /dev/mmcblk0p1 -n >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

sudo blkid >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « Renommage du disque boot, label disparu : » >> /home/pi/script/copie_disque_boot.log
sudo mlabel ::« bootfs » -i/dev/mmcblk0p1 >> /home/pi/script/copie_disque_boot.log

echo «  »>> /home/pi/script/copie_disque_boot.log

sudo blkid >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « Changement UUID disque rootfs : » >> /home/pi/script/copie_disque_boot.log

echo « Démontage partition 2 : » >> /home/pi/script/copie_disque_boot.log
sudo umount /dev/mmcblk0p2
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « Contrôle système fichier : »>> /home/pi/script/copie_disque_boot.log
sudo e2fsck -fy /dev/mmcblk0p2 >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « Changement aléatoire UUID partition 2 (ext4) : »>> /home/pi/script/copie_disque_boot.log
sudo tune2fs -U random /dev/mmcblk0p2 >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log
echo « Changement du nom (si besoin) de la partition 2 (ext4) : »>> /home/pi/script/copie_disque_boot.log
sudo tune2fs -L ROOTFS /dev/mmcblk0p2 >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log

echo « Nom visible (blkid) uniquement après reboot sauf via le bureau »>> /home/pi/script/copie_disque_boot.log
sudo blkid >> /home/pi/script/copie_disque_boot.log
echo «  »>> /home/pi/script/copie_disque_boot.log
echo « Changements terminés, pour rendre la SD bootable pensé à modifier dans la Sd /boot/cmdline.txt (mettre le nouveau PARTUUID). » >> /home/pi/script/copie_disque_boot.log

exit 0

bien joué !

Merci pour le partage :wink: