start:rasberry:boot_sd2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
start:rasberry:boot_sd2 [2019/06/24 15:27] – [Comment démarrer à partir d'un périphérique de stockage de masse USB sur un Raspberry Pi Trad Google] gerardadmin | start:rasberry:boot_sd2 [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== Booter sur cle USB ou DD sur RaspberryPI3 ===== | ||
+ | ==== -1- ==== | ||
+ | |||
+ | Le Raspberry Pi 3 est capable de booter depuis un stockage USB, disque dur externe ou clé USB, ce qui peut être une bénédiction pour les systèmes ayant de nombreuses lectures écritures. Les cartes SD supporte mal ce genre d’exercices, | ||
+ | |||
+ | L’opération est relativement simple, en quelques minutes on est capable d’activer le boot USB et le clonage du contenu de la carte vers le support externe. Tellement simple que cela peut aussi servir à créer des backups du système avec une clé USB de taille équivalente à la carte SD | ||
+ | |||
+ | Rendre compatible la partition /boot avec le lancement sur support USB | ||
+ | |||
+ | # Si raspbian lite il faut rpi-update : | ||
+ | sudo apt-get update; sudo apt-get install rpi-update | ||
+ | sudo BRANCH=next rpi-update | ||
+ | |||
+ | Ensuite, activer la fonction | ||
+ | |||
+ | echo program_usb_boot_mode=1 | sudo tee -a / | ||
+ | #Suivi d'un reboot du Raspberry PI 3 pour que ça soit pris en compte | ||
+ | sudo reboot | ||
+ | |||
+ | Après reboot, on vérifie que c’est actif, la bonne réponse est 17:3020000a | ||
+ | |||
+ | vcgencmd otp_dump | grep 17: | ||
+ | |||
+ | Maintenant vient le partitionnement du support externe, | ||
+ | |||
+ | # Pour trouver l' | ||
+ | sudo fdisk -l | ||
+ | # Maintenant le partitionnement | ||
+ | sudo parted /dev/sda | ||
+ | |||
+ | (parted) mktable msdos | ||
+ | Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? | ||
+ | Yes/No? Yes | ||
+ | (parted) mkpart primary fat32 0% 100M | ||
+ | (parted) mkpart primary ext4 100M 100% | ||
+ | (parted) print | ||
+ | Model: SanDisk Ultra (scsi) | ||
+ | Disk /dev/sda: 30.8GB | ||
+ | Sector size (logical/ | ||
+ | Partition Table: msdos | ||
+ | Disk Flags: | ||
+ | |||
+ | Number | ||
+ | | ||
+ | | ||
+ | # Pour en sortir, c'est un habituel " | ||
+ | |||
+ | Création des deux partitions boot et root | ||
+ | |||
+ | sudo mkfs.vfat -n BOOT -F 32 /dev/sda1 | ||
+ | sudo mkfs.ext4 /dev/sda2 | ||
+ | |||
+ | Montage et transfert de la carte SD vers le support externe, c’est assez rapide avec rsync | ||
+ | |||
+ | sudo mkdir /mnt/target | ||
+ | sudo mount /dev/sda2 / | ||
+ | sudo mkdir / | ||
+ | sudo mount /dev/sda1 / | ||
+ | sudo apt-get update; sudo apt-get install rsync | ||
+ | sudo rsync -ax --progress / /boot /mnt/target | ||
+ | |||
+ | Optionnellement, | ||
+ | |||
+ | cd /mnt/target | ||
+ | sudo mount --bind /dev dev | ||
+ | sudo mount --bind /sys sys | ||
+ | sudo mount --bind /proc proc | ||
+ | sudo chroot /mnt/target | ||
+ | rm / | ||
+ | dpkg-reconfigure openssh-server | ||
+ | exit | ||
+ | sudo umount dev | ||
+ | sudo umount sys | ||
+ | sudo umount proc | ||
+ | |||
+ | Dernière étape, rendre le nouveau boot actif sur le support externe | ||
+ | |||
+ | sudo sed -i " | ||
+ | sudo sed -i " | ||
+ | |||
+ | # Finir le taff en demontant et stoppant le système | ||
+ | cd ~ | ||
+ | sudo umount / | ||
+ | sudo umount /mnt/target | ||
+ | sudo poweroff | ||
+ | |||
+ | Déconnecter l’alimentation du Raspberry PI 3, retirer la carte SD, rebrancher | ||
+ | |||
+ | ==== -2- ==== | ||
+ | |||
+ | **Raspberry Pi : déplacer Raspbian sur un disque dur externe ou une clé USB ** | ||
+ | |||
+ | Par défaut, le système d' | ||
+ | |||
+ | On a l' | ||
+ | |||
+ | Les inconvénients sont la lenteur de l' | ||
+ | |||
+ | On peut choisir de déplacer le système : | ||
+ | |||
+ | *sur une clé USB pour disposer d'un espace plus important (peu de gains en revanche sur la durée de vie et la rapidité), | ||
+ | *sur un disque dur USB externe qui a tous les avantages sauf celui de la dépense électrique. | ||
+ | |||
+ | Le Raspberry Pi 3 est capable d' | ||
+ | |||
+ | Ce guide explique comment faire la migration du système depuis la carte SD sur le disque ou la clé USB. | ||
+ | Préparation de la migration | ||
+ | |||
+ | Pour commencer, il est préférable d' | ||
+ | |||
+ | Dans cet exemple, j'ai pris une clé USB ayant déjà servi. | ||
+ | |||
+ | |||
+ | |||
+ | On se connecte déjà en SSH au pi (remplacer lambda_user par votre utilisateur sur le Pi) | ||
+ | |||
+ | soozx@soozx: | ||
+ | |||
+ | |||
+ | |||
+ | et on arrête proprement le Pi : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | Après avoir débranché le Pi, on insère le disque USB puis on rebranche. | ||
+ | |||
+ | On se reconnecte sur le Pi : | ||
+ | |||
+ | soozx@soozx: | ||
+ | |||
+ | |||
+ | |||
+ | puis on liste les disques connectés : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
+ | sda 8:0 1 7,3G 0 disk | ||
+ | └─sda1 8:1 1 7,3G 0 part | ||
+ | mmcblk0 179:0 0 58,6G 0 disk | ||
+ | ├─mmcblk0p1 179:1 0 63M 0 part /boot | ||
+ | └─mmcblk0p2 179:2 0 3,9G 0 part / | ||
+ | |||
+ | |||
+ | |||
+ | Nous trouvons ici deux disques : | ||
+ | |||
+ | *sda avec une partition sda1 non montée | ||
+ | *mmcblk0 avec deux partitions mmcblk0p1 montée sur /boot et mmcblk0p2 montée sur / qui est la racine du système d' | ||
+ | |||
+ | L' | ||
+ | |||
+ | |||
+ | |||
+ | Nous installons si ce n'est pas déjà fait l' | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | Préparation du disque dur externe | ||
+ | |||
+ | Nous allons maintenant préparer le disque dur externe. | ||
+ | |||
+ | Cette étape est inutile si vous disposez déjà d'une partition inutilisée de taille suffisante et formatée en ext4 sur le disque dur. | ||
+ | |||
+ | Attention, les données présentes sur le disque vont être effacées. | ||
+ | |||
+ | |||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | Welcome to fdisk (util-linux 2.25.2). | ||
+ | Changes will remain in memory only, until you decide to write them. | ||
+ | Be careful before using the write command. | ||
+ | |||
+ | |||
+ | |||
+ | Par sécurité, nous vérifions que nous sommes bien sur le bon disque avec la commande ' | ||
+ | |||
+ | Command (m for help): p | ||
+ | Disk /dev/sda: 7,3 GiB, 7811891200 bytes, 15257600 sectors | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disklabel type: dos | ||
+ | Disk identifier: 0x0080ea51 | ||
+ | |||
+ | Device Boot Start End Sectors Size Id Type | ||
+ | /dev/sda1 * 2048 15257599 15255552 7,3G c W95 FAT32 (LBA) | ||
+ | |||
+ | Ici, nous avons un disque de 7.3G qui contient une seule partition en format FAT32. | ||
+ | |||
+ | |||
+ | |||
+ | Nous allons effacer la partition avec la commande ' | ||
+ | |||
+ | Command (m for help): d | ||
+ | Selected partition 1 | ||
+ | Partition 1 has been deleted. | ||
+ | |||
+ | Si vous avez plusieurs partitions, répéter cette commande pour chacune d' | ||
+ | |||
+ | |||
+ | |||
+ | Enfin, on écrit les changements sur le disque avec la commande ' | ||
+ | |||
+ | Command (m for help): w | ||
+ | The partition table has been altered. | ||
+ | Calling ioctl() to re-read partition table. | ||
+ | Syncing disks. | ||
+ | |||
+ | |||
+ | |||
+ | Nous allons maintenant créer une partition pour accueillir le système Raspbian (le boot ou démarrage devra rester sur la carte SD) : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | La commande ' | ||
+ | |||
+ | Command (m for help): n | ||
+ | Partition type | ||
+ | p primary (0 primary, 0 extended, 4 free) | ||
+ | e extended (container for logical partitions) | ||
+ | Select (default p): p [taper Entrée ou p] | ||
+ | |||
+ | Partition number (1-4, default 1): 1 [taper Entrée ou 1] | ||
+ | |||
+ | First sector (2048-15257599, | ||
+ | Last sector, +sectors or +size{K, | ||
+ | ou une taille suffisante par exemple +6G] | ||
+ | |||
+ | Created a new partition 1 of type ' | ||
+ | |||
+ | |||
+ | |||
+ | On écrit les changements avec ' | ||
+ | |||
+ | Command (m for help): w | ||
+ | The partition table has been altered. | ||
+ | Calling ioctl() to re-read partition table. | ||
+ | Syncing disks. | ||
+ | |||
+ | |||
+ | |||
+ | Nous allons ensuite formater la partition créée : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | Nous pouvons passer à la migration du système sur le disque. | ||
+ | Migration du système Raspbian sur le disque ou la clé USB | ||
+ | |||
+ | On commence par monter la partition nouvellement créée dans le répertoire mnt : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | Si on a des services qui tournent comme mysql (mariadb), apache, php7.0-fpm, il est préférable de les arrêter : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | De même, si on a installé log2ram, il faut arrêter ce service sinon les logs ne seront pas recopiés sur le disque : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | On peut même désactiver le service ensuite, car il n'a plus d' | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | Puis on copie l' | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | (...) | ||
+ | |||
+ | var/tmp/ | ||
+ | |||
+ | sent 985,682,776 bytes received 570,984 bytes 2, | ||
+ | total size is 983,418,703 speedup is 1.00 | ||
+ | |||
+ | |||
+ | |||
+ | On indique au programme de démarrage que le système se trouve maintenant sur le disque externe (par prudence, nous faisons une copie du fichier avant de le modifier si nous souhaitons revenir en arrière) : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | On recherche dans la ligne root=/dev/ ou root=PARTUUID | ||
+ | |||
+ | boot/ | ||
+ | |||
+ | |||
+ | |||
+ | Nous allons remplacer root=/ | ||
+ | |||
+ | / | ||
+ | |||
+ | |||
+ | |||
+ | Ctrl-o pour enregistrer, | ||
+ | |||
+ | |||
+ | |||
+ | Une autre modification de fichier pour que le programme de démarrage attende la mise en ligne du disque USB : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | |||
+ | |||
+ | A la fin du fichier, nous ajoutons program_usb_timeout=1 : | ||
+ | |||
+ | |||
+ | |||
+ | Ctrl-o pour enregistrer, | ||
+ | |||
+ | |||
+ | |||
+ | Enfin nous modifions la table des fichiers de fstab : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | mnt fstab dernière version | ||
+ | |||
+ | |||
+ | |||
+ | en remplaçant / | ||
+ | |||
+ | fstab modifié | ||
+ | |||
+ | |||
+ | |||
+ | Ctrl-o pour enregistrer, | ||
+ | |||
+ | |||
+ | Redémarrage et vérification | ||
+ | |||
+ | La migration sur le disque USB est terminée, nous pouvons redémarrer : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | |||
+ | soozx@soozx: | ||
+ | |||
+ | |||
+ | |||
+ | On vérifie avec la commande lsblk : | ||
+ | |||
+ | lambda_user@myweb: | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
+ | sda 8:0 1 7,3G 0 disk | ||
+ | └─sda1 8:1 1 7,3G 0 part / | ||
+ | mmcblk0 179:0 0 58,6G 0 disk | ||
+ | ├─mmcblk0p1 179:1 0 63M 0 part /boot | ||
+ | └─mmcblk0p2 179:2 0 3,9G 0 part | ||
+ | |||
+ | |||
+ | |||
+ | On voit ici que la partition / (c'est à dire le système d' | ||
+ | |||
+ | La partition mmcblk0p2 est quant à elle inutilisée. Elle contient toutefois la copie du système avant la migration. | ||
+ | |||
+ | |||
+ | ==== -3- ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | Le Raspberry Pi 3 est capable de booter depuis un stockage USB, disque dur externe ou clé USB, ce qui peut être une bénédiction pour les systèmes ayant de nombreuses lectures écritures. Les cartes SD supporte mal ce genre d’exercices, | ||
+ | |||
+ | L’opération est relativement simple, en quelques minutes on est capable d’activer le boot USB et le clonage du contenu de la carte vers le support externe. Tellement simple que cela peut aussi servir à créer des backups du système avec une clé USB de taille équivalente à la carte SD | ||
+ | |||
+ | Rendre compatible la partition /boot avec le lancement sur support USB | ||
+ | |||
+ | # Si raspbian lite il faut rpi-update : | ||
+ | sudo apt-get update; sudo apt-get install rpi-update | ||
+ | sudo BRANCH=next rpi-update | ||
+ | |||
+ | Ensuite, activer la fonction | ||
+ | |||
+ | echo program_usb_boot_mode=1 | sudo tee -a / | ||
+ | #Suivi d'un reboot du Raspberry PI 3 pour que ça soit pris en compte | ||
+ | sudo reboot | ||
+ | |||
+ | Après reboot, on vérifie que c’est actif, la bonne réponse est 17:3020000a | ||
+ | |||
+ | vcgencmd otp_dump | grep 17: | ||
+ | |||
+ | Maintenant vient le partitionnement du support externe, | ||
+ | |||
+ | # Pour trouver l' | ||
+ | sudo fdisk -l | ||
+ | # Maintenant le partitionnement | ||
+ | sudo parted /dev/sda | ||
+ | |||
+ | (parted) mktable msdos | ||
+ | Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? | ||
+ | Yes/No? Yes | ||
+ | (parted) mkpart primary fat32 0% 100M | ||
+ | (parted) mkpart primary ext4 100M 100% | ||
+ | (parted) print | ||
+ | Model: SanDisk Ultra (scsi) | ||
+ | Disk /dev/sda: 30.8GB | ||
+ | Sector size (logical/ | ||
+ | Partition Table: msdos | ||
+ | Disk Flags: | ||
+ | |||
+ | Number | ||
+ | | ||
+ | | ||
+ | # Pour en sortir, c'est un habituel " | ||
+ | |||
+ | Création des deux partitions boot et root | ||
+ | |||
+ | sudo mkfs.vfat -n BOOT -F 32 /dev/sda1 | ||
+ | sudo mkfs.ext4 /dev/sda2 | ||
+ | |||
+ | Montage et transfert de la carte SD vers le support externe, c’est assez rapide avec rsync | ||
+ | |||
+ | sudo mkdir /mnt/target | ||
+ | sudo mount /dev/sda2 / | ||
+ | sudo mkdir / | ||
+ | sudo mount /dev/sda1 / | ||
+ | sudo apt-get update; sudo apt-get install rsync | ||
+ | sudo rsync -ax --progress / /boot /mnt/target | ||
+ | |||
+ | Optionnellement, | ||
+ | |||
+ | cd /mnt/target | ||
+ | sudo mount --bind /dev dev | ||
+ | sudo mount --bind /sys sys | ||
+ | sudo mount --bind /proc proc | ||
+ | sudo chroot /mnt/target | ||
+ | rm / | ||
+ | dpkg-reconfigure openssh-server | ||
+ | exit | ||
+ | sudo umount dev | ||
+ | sudo umount sys | ||
+ | sudo umount proc | ||
+ | |||
+ | Dernière étape, rendre le nouveau boot actif sur le support externe | ||
+ | |||
+ | sudo sed -i " | ||
+ | sudo sed -i " | ||
+ | |||
+ | # Finir le taff en demontant et stoppant le système | ||
+ | cd ~ | ||
+ | sudo umount / | ||
+ | sudo umount /mnt/target | ||
+ | sudo poweroff | ||
+ | |||
+ | Déconnecter l’alimentation du Raspberry PI 3, retirer la carte SD, rebrancher, prier, ça boot, Ayé | ||
+ | |||
+ | |||
+ | |||
+ | ==== Comment démarrer à partir d'un périphérique de stockage de masse USB sur un Raspberry Pi Trad Google ==== | ||
+ | |||
+ | |||
+ | Le démarrage USB est disponible uniquement sur les modèles Raspberry Pi 3B, 3B +, 3A + et Raspberry Pi 2B v1.2. | ||
+ | |||
+ | Ce tutoriel explique comment démarrer votre Raspberry Pi à partir d'un périphérique de stockage de masse USB tel qu'un lecteur flash ou un disque dur USB. Soyez averti que cette fonctionnalité est expérimentale et ne fonctionne pas avec tous les périphériques de stockage de masse USB. Consultez ce billet de Gordon Hollingworth pour savoir pourquoi certains périphériques de stockage de masse USB ne fonctionnent pas et pour obtenir des informations générales. | ||
+ | Programme de démarrage USB | ||
+ | |||
+ | Le Raspberry Pi 3+ peut démarrer à partir de l'USB sans aucune modification, | ||
+ | |||
+ | Pour activer le bit de démarrage USB, le Raspberry Pi 3 doit être démarré à partir d'une carte SD avec une option de configuration pour activer le mode de démarrage USB. | ||
+ | |||
+ | Une fois ce bit défini, la carte SD n'est plus nécessaire. Notez que toute modification apportée à l'OTP est permanente et ne peut pas être annulée. | ||
+ | |||
+ | Vous pouvez utiliser n' | ||
+ | |||
+ | Commencez par préparer le répertoire / boot avec les fichiers de démarrage à jour (cette étape n'est pas nécessaire si vous utilisez la version 2017-04-10 de Raspbian / Raspbian Lite ou une version ultérieure): | ||
+ | |||
+ | $ sudo apt-get update && sudo apt-get upgrade | ||
+ | |||
+ | Activez ensuite le mode de démarrage USB avec ce code: | ||
+ | |||
+ | echo programme_usb_boot_mode = 1 | sudo tee -a / | ||
+ | |||
+ | Ceci ajoute program_usb_boot_mode = 1 à la fin de / | ||
+ | |||
+ | $ vcgencmd otp_dump | grep 17: | ||
+ | 17: 3020000a | ||
+ | |||
+ | Vérifiez que la sortie 0x3020000a est affichée. Si ce n'est pas le cas, le bit OTP n'a pas été programmé avec succès. Dans ce cas, recommencez la procédure de programmation. Si le bit n'est toujours pas activé, cela peut indiquer une erreur dans le matériel Pi lui-même. | ||
+ | |||
+ | Si vous le souhaitez, vous pouvez supprimer la ligne program_usb_boot_mode de config.txt. Ainsi, si vous insérez la carte SD dans un autre Raspberry Pi, elle ne programme pas le mode de démarrage USB. Assurez-vous qu'il n'y a pas de ligne vierge à la fin de config.txt. Vous pouvez modifier le fichier config.txt à l'aide de l' | ||
+ | Préparer le périphérique de stockage de masse USB | ||
+ | |||
+ | À partir de la version 2017-04-10 de Raspbian, vous pouvez installer un système Raspbian en état de fonctionnement sur un périphérique de stockage de masse USB en copiant l' | ||
+ | |||
+ | Une fois que vous avez fini d' | ||
+ | Démarrez votre Raspberry Pi à partir du périphérique de stockage de masse USB | ||
+ | |||
+ | Connectez le périphérique de stockage de masse USB à votre Raspberry Pi et allumez-le. Après cinq à dix secondes, le Raspberry Pi devrait commencer à démarrer et afficher l' | ||
+ | |||
+ | Notez que si le bit de démarrage USB est défini, vous n'avez pas besoin d' | ||
+ | |||
+ | |||
+ | ==== EEPROM de démarrage Raspberry Pi 4 ==== | ||
+ | |||
+ | Le Raspberry Pi 4 possède une EEPROM (4 Mo / 512 Ko) connectée à SPI, qui contient le code permettant de démarrer le système et remplace le fichier bootcode.bin précédemment trouvé dans la partition d’amorçage de la carte SD. Notez que si un bootcode.bin est présent dans la partition de démarrage de la carte SD dans un Pi 4, il est ignoré. | ||
+ | Pourquoi utiliser une EEPROM SPI? | ||
+ | |||
+ | La procédure de démarrage de Raspberry Pi 4 et la configuration de la mémoire SDRAM sont considérablement plus compliquées que sur les modèles Raspberry Pi précédents. Il y a donc plus de risques inhérents au code incorporé de manière permanente dans la ROM du SoC. | ||
+ | |||
+ | L'USB a été transféré sur un bus PCIe et le pilote Ethernet Gigabit est complètement différent des modèles précédents. Il était donc impossible de le fixer de manière permanente dans la ROM du SoC. | ||
+ | |||
+ | Une petite EEPROM SPI permet de corriger les bugs et d’ajouter des fonctionnalités après le lancement, sur le terrain | ||
+ | |||
+ | L' | ||
+ | |||
+ | === Démarrage PXE et USB === | ||
+ | |||
+ | La prise en charge de ces modes de démarrage supplémentaires sera ajoutée à l' | ||
+ | Le chargeur de démarrage fonctionne-t-il correctement? | ||
+ | |||
+ | Pour vérifier que le chargeur de démarrage fonctionne correctement, | ||
+ | récupération.bin | ||
+ | |||
+ | Si la mémoire EEPROM doit être mise à jour ou si elle est corrompue, elle peut être réinitialisée à l'aide d'une nouvelle carte SD avec une copie de recovery.bin dans la première partition d'une carte SD, formatée au format FAT. | ||
+ | |||
+ | recovery.bin est un utilitaire spécial qui s' | ||
+ | Protection en écriture de l' | ||
+ | |||
+ | Raspbian ne mettra à jour ni l' | ||
+ |