Déplacer la partition de boot du Raspberry Pi (Raspbian)

envol

Raspbian s'installe sur deux partitions d'une micro-carte SD : une pour le démarrage (boot), l'autre pour le système d'exploitation.

 

Dans un précédent article, nous avons vu comment déplacer le système Raspbian sur un disque dur externe ou une clé USB.

Sur la micro-carte SD, seule la première partition d'une taille de 42M reste nécessaire.

On peut vouloir récupérer cette carte pour en utiliser une plus petite.

Cet article montre la procédure pour recopier le secteur de démarrage (MBR) et la partition de boot sur une autre micro-carte SD.

Pour cela, il faut disposer d'un ordinateur fonctionnant sous Linux (ou utiliser une distribution live Linux sous Windows), on ne peut pas le faire directement depuis le Raspberry Pi.

 

ATTENTION : CE TUTORIEL DEPLACE UNIQUEMENT LE DEMARRAGE ET NON PAS L'INTEGRALITE DU SYSTEME.

Première étape : recopier le Master Boot Record (MBR) et la partition de démarrage de la carte SD d'origine

 

Pour démarrer, Raspbian a besoin des informations contenues dans le MBR (ce sont les premiers octets situés sur la carte) et la partition de boot (dénommée mmcblk0p1 sur le Pi lorsque l'on fait la commande lsblk).

 

On arrête le Pi proprement, en se connectant dessus et en tapant dans un terminal :

$ sudo halt

 

Débrancher l'alimentation et enlever la carte SD du Raspberry Pi.

 

Sur un ordinateur tournant sous Linux, sans insérer la carte SD, faire la commande :

$ lsblk
 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 sda 8:0 0 931,5G 0 disk
 ├─sda1 8:1 0 250M 0 part /boot/efi
 ├─sda2 8:2 0 250M 0 part /boot
 └─sda3 8:3 0 550G 0 part /
 sr0

 

Ici, nous avons un ordinateur avec un disque dur (sda) divisé en 3 partitions.

 

Après avoir inséré la carte SD, refaire la commande :

$ lsblk
 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 sda 8:0 0 931,5G 0 disk
 ├─sda1 8:1 0 250M 0 part /boot/efi
 ├─sda2 8:2 0 250M 0 part /boot
 └─sda3 8:3 0 550G 0 part /
 sdc 8:32 1 7,4G 1 disk
 ├─sdc1 8:33 1 42M 1 part
 └─sdc2 8:2 0 7,3G 0 part
 sr0

 

Le nouveau device qui apparaît représente la carte SD sur laquelle est installé Raspbian : sdc avec deux partitions. La partition sdc1 est la partition de boot, la sdc2, l'ancienne partition du système que nous avons déjà déménagé.

 

Pour transférer la partition de démarrage de cette carte sur une plus petite, nous allons avoir besoin de recopier :

  • le Master Boot Record : les premiers octets sur la carte sdc (ils ne sont pas inclus dans les partitions),
  • la première partition (ici sdc1) qui contient la partition boot.

 

Nous allons pour cela utiliser la commande dd sous Linux, qui fait une copie image octet par octet, complètement identique.

Nous allons créer un sous-répertoire pour enregistrer ces copies...

$ mkdir ~/pi_boot
$ cd ~/pi_boot

 

... puis créer les copies :

$ sudo dd if=/dev/sdc of=pi_mbr.iso bs=512 count=1
 1+0 enregistrements lus
 1+0 enregistrements écrits
 512 bytes copied, 0,00348547 s, 147 kB/s

$ sudo dd if=/dev/sdc1 of=pi_boot.iso
 86016+0 enregistrements lus
 86016+0 enregistrements écrits
 44040192 bytes (44 MB, 42 MiB) copied, 2,73904 s, 16,1 MB/s

 

Nous avons donc maintenant 2 fichiers image :

  • pi_mbr.iso (le MBR)
  • pi_boot.iso (la partition de démarrage).

 

On retire la carte SD source de l'ordinateur puis on insère la carte SD sur laquelle on souhaite recopier le démarrage.

Deuxième étape : préparer la nouvelle carte SD

Après avoir inséré la nouvelle carte SD de destination, refaire la commande lsblk pour l'inspecter :

$ lsblk
 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 sda 8:0 0 931,5G 0 disk
 ├─sda1 8:1 0 250M 0 part /boot/efi
 ├─sda2 8:2 0 250M 0 part /boot
 └─sda3 8:3 0 550G 0 part /
 sdc 8:32 1 1,2G 0 disk 
 ├─sdc1 8:33 1 55,2M 0 part 
 └─sdc2 8:34 1 1G 0 part
 sr0 11:0 1 1024M 0 rom

 

Dans cet exemple, la nouvelle carte est de taille 1,2 Go. Elle est de nouveau sur sdc et contient deux partitions sdc1 et sdc2.

 

ATTENTION : avant d'effectuer les commandes suivantes, bien repérer le nom de device de la carte sd ($ lsblk). Dans cet exemple, il s'agit de sdc. Remplacer par celui qui correspond à votre situation !!!

Partitionnement de la nouvelle carte SD

Nous allons utiliser l'application fdisk qui va nous permettre d'effacer ces partitions (attention, les données de cette carte seront perdues) et de créer celle dont nous aurons besoin pour la partition de démarrage boot.

$ sudo fdisk /dev/sdc

Bienvenue dans fdisk (util-linux 2.30.1).
 Les modifications resteront en mémoire jusqu'à écriture.
 Soyez prudent avant d'utiliser la commande d'écriture.



Commande (m pour l'aide) :

 

La commande p (print) va afficher les partitions présentes :

 

Commande (m pour l'aide) : p
 Disque /dev/sdc : 1,2 GiB, 6288100 octets, 122814 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x60a56ecc

Périphérique Amorçage Début Fin Secteurs Taille Id Type
 /dev/sdc1 2048 115000 112953 55,2M c W95 FAT32 (LBA)
 /dev/sdc2 116736 2213887 2097152 1G 83 Linux

 

Nous allons ensuite utiliser la commande "d" (delete) pour effacer toutes les partitions présentes (à faire autant de fois qu'il y a de partitions) :

Commande (m pour l'aide) : d
 Numéro de partition (1,2, 2 par défaut) : Entrée

La partition 2 a été supprimée.

Commande (m pour l'aide) : d
 Partition 1 sélectionnée Entrée
 La partition 1 a été supprimée.

 

Nous allons maintenant créer la partition de démarrage avec la commande "n"  que l'on définit en partition primaire, numérotée 1, débutant au secteur 8192 et terminant au secteur 94207 ce qui donnera une taille totale de 42M (éventuellement, il faudra confirmer que l'on efface la signature vfat s'il y en avait une déjà présente) :

Commande (m pour l'aide) : n
 Type de partition
 p primaire (0 primaire, 0 étendue, 4 libre)
 e étendue (conteneur pour partitions logiques)
 Sélectionnez (p par défaut) : p
 Numéro de partition (1-4, 1 par défaut) : 1
 Premier secteur (2048-122814463, 2048 par défaut) : 8192
 Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (8192-122814463, 122814463 par défaut) : 94207

Une nouvelle partition 1 de type « Linux » et de taille 42 MiB a été créée.
 
La partition #1 contient une signature vfat.

Voulez-vous supprimer la signature ? [O]ui/[N]on : O

The signature will be removed by a write command.

 

Nous allons maintenant donner comme système de fichiers pour cette partition le type FAT 32 LBA avec la commande "t" (type) et "c" pour le type FAT32-lba :

Commande (m pour l'aide) : t
 Partition 1 sélectionnée
 Code Hexa (taper L pour afficher tous les codes) :c
 Type de partition « Linux » modifié en « W95 FAT32 (LBA) ».

 

Pour le moment, nous n'avons rien changé effectivement sur la carte SD. Pour écrire les différents changements sur la carte, on termine par la commande "w" (write). Pour sortir sans enregistrer les changements "q" pour quit :

Commande (m pour l'aide) : w
 La table de partitions a été altérée.
 Appel d'ioctl() pour relire la table de partitions.
 Synchronisation des disques.

Troisième et dernière étape : recopier le secteur de démarrage sur la nouvelle carte SD

 

La nouvelle carte SD toujours dans l'ordinateur, se mettre dans le répertoire où l'on a fait les copies du démarrage :

$ cd ~/pi_boot

 

ATTENTION : avant d'effectuer les commandes suivantes, bien repérer le nom de device de la carte sd ($ lsblk). Dans cet exemple, il s'agit de sdc. Remplacer par celui qui correspond à votre situation !!!

 

Copier avec la commande "dd" les images extraites de la carte d'origine :

$ sudo dd if=pi_mbr.iso of=/dev/sdc bs=446 count=1
1+0 enregistrements lus
1+0 enregistrements écrits
446 bytes copied, 0,00229464 s, 194 kB/s

 

$ sudo dd if=pi_boot.iso of=/dev/sdc1
86016+0 enregistrements lus
86016+0 enregistrements écrits
44040192 bytes (44 MB, 42 MiB) copied, 9,97469 s, 4,4 MB/s

 

Voilà, nous avons terminé.

 

Il suffit d'insérer la nouvelle carte SD dans le Raspberry Pi puis de l'allumer. Le Pi devrait redémarrer sans problème avec la nouvelle carte.

Si cela n'a pas fonctionné, l'ancienne carte reste toujours utilisable.

You may also like...

1 Response

  1. BrigZ dit :

    Bonjour SoozX

    Très bien expliqué,
    toujours utile, pouvoir réutiliser une ancienne carte SD de petite capacité juste pour la partition boot,
    et puis on peu aussi configurer pour placer le système d’exploitation, le data sur… une ou autre clé supplémentaire, hdd, ssd, … usb

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *