Table of Contents

Comment graver un image système

Cet article présente les différentes méthodes pour graver une image d'un système sur une carte SD ou Micro-SD afin de pouvoir démarrer un Raspberry-Pi facilement.

Méthode 1: Ligne de commande

Une fois la carte SD branchée sur la machine (via un connecteur spécifique ou un lecteur de carte USB), il est nécessaire de connaître le nom du périphérique (au sens du système d’exploitation). Par exemple, il y a de grandes chances que le disque dur principal soit /dev/sda.

Avec la commande dmesg on peut déterminer ce nom :

usb 1-1.6.3: USB disconnect, device number 49
usb 1-1.6.3: new high speed USB device number 50 using ehci_hcd
usb 1-1.6.3: New USB device found, idVendor=8564, idProduct=4000
usb 1-1.6.3: New USB device strings: Mfr=3, Product=4, SerialNumber=5
usb 1-1.6.3: Product: Transcend
usb 1-1.6.3: Manufacturer: TS-RDF5 
usb 1-1.6.3: SerialNumber: 000000000039
usb 1-1.6.3: configuration #1 chosen from 1 choice
scsi12 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 50
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 12:0:0:0: Direct-Access     TS-RDF5  SD  Transcend    TS37 PQ: 0 ANSI: 6
sd 12:0:0:0: Attached scsi generic sg8 type 0
sd 12:0:0:0: [sdi] 62148608 512-byte logical blocks: (31.8 GB/29.6 GiB)
sd 12:0:0:0: [sdi] Write Protect is off
sd 12:0:0:0: [sdi] Mode Sense: 23 00 00 00
sd 12:0:0:0: [sdi] Assuming drive cache: write through
sd 12:0:0:0: [sdi] Assuming drive cache: write through
 sdi: sdi1 sdi2
 sdi2: <bsd:bad subpartition - ignored
 >
sd 12:0:0:0: [sdi] Assuming drive cache: write through
sd 12:0:0:0: [sdi] Attached SCSI removable disk

Dans l'ewemple, le périphérique est sdi.

On peut aussi déterminer ce nom en utilisant la commande df -h.

On peut alors, utiliser la commande dd pour faire la copie:

# dd if=FreeBSD-10.1-STABLE-arm-armv6-RPI-B-20150509-r282689.img of=/dev/sdi bs=1M
953+1 enregistrements lus
953+1 enregistrements écrits
1000000000 octets (1,0 GB) copiés, 171,722 s, 5,8 MB/s

Ce qui signifie :

On peut utiliser la commande ddrescue pour faire le transfert:

sudo ddrescue -D --force FreeBSD-12.0-RELEASE-arm64-aarch64-RPI3.img /dev/sdc

La commande dd écrasera les données sur le périphérique spécifié (Si le carte SD contient déjà une table de partition, le système peut la monter automatiquement lors de l'insertion. Démonter ou éjecter tous les volumes montés à partir de la carte micro SD. Ensuite, utiliser la commande dd pour copier l'image sur le carte micro SD. La commande dd prendra quelques minutes).

On peut enchaîner les commandes d'extraction et de transfert sur la carte SD:

xzcat CentOS-Userland-8-aarch64-RaspberryPI-Minimal-4-sda.raw.xz | dd of=$/path/to/sd/card status=progress bs=4M conv=sync

Pour utiliser lee paramètre 'status=progress' de dd il faut d'abord vérifier que le paramètre est pris en charge. Ce n'est pas obligatoire mais cela permet de suivre l'état du taux de transfert vers la carte SD. Le paramètre 'bs=4M' est également utilisé pour un taux de transfert plus rapide, car la plupart des cartes SD ont une taille de bloc d'effacement de 4 Mo.

Méthode 2: Raspberry Pi Imager

La fondation Raspberry Pi a annoncé la sortie d’un outil maison pour faciliter la création des cartes SD, Raspberry Pi Imager, et ce depuis n’importe quel OS.

On va donc voir comment installer Raspbian (ou autre) sur votre carte SD avec Raspberry Pi Imager:

Méthode 3: Balena Etcher

balenaEtcher est un nouveau logiciel qui permet de graver des images disque (ISO, IMG, ZIP…) sur des clés USB et des cartes SD à l'instar du logiciel Rufus.:

Quelques minutes plus tard, la carte SD est prête et on peut l’insérer dans le Raspberry Pi.

Méthode 4: graver une image sur eMMC

Télécharger le référentiel usbboot Raspberry Pi, afin d'installer une bibliothèque USB requise sur l'ordinateur et créer l'exécutable rpiboot permettant de monter le stockage sur un ordinateur.

Tout d'abord, il faut s'assurer que la bibliothèque libusb est installée :

sudo apt install libusb-1.0-0-dev

Cloner le dépôt usbboot sur l'ordinateur :

git clone --depth=1 https://github.com/raspberrypi/usbboot

Se placer dans le répertoire usbboot

remplacer include <libusb.h> par include <libusb-1.0/libusb.h> dans le fichier main.c

compiler rpiboot :

cd usbboot
sed -i 's|include <libusb.h>|include <libusb-1.0/libusb.h>|g' main.c
make

Utiliser l'exécutable rpiboot créé dans le répertoire, pour monter le stockage eMMC :

sudo ./rpiboot

Le volume de démarrage devrait être monté sur l'ordinateur Linux. On remarquera également que la LED D2 s'allume ; cela signifie qu'il y a une activité de lecture/écriture de disque sur l'eMMC.

À ce stade, le stockage eMMC se comporte comme une carte microSD ou une clé USB que l'on aurait branchée sur l'ordinateur. On peut donc utiliser une application telle que Raspberry Pi Imager pour flasher le système d'exploitation Raspberry Pi (ou tout autre système d'exploitation) sur l'eMMC.