Plan (hide)
Il est fréquent d'avoir des problèmes avec sa carte SD sur un raspberry pi. Sauvegarder le contenu de cette dernière peut être utile. D'autre part vous pouvez également avoir envie de cloner votre carte SD sur une autre carte plus adaptée en taille par exemple.
1. Sauvegarde sous Linux
La méthode est très simple on va créer une image. Pour commencer il faut insérer la carte SD dans une machine sous Linux et vérifier le device correspondant.
% sudo fdisk -l Disque /dev/mmcblk0 : 7,4 GiB, 7969177600 octets, 15564800 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 : 0x00000000 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/mmcblk0p1 16 250047 250032 122,1M b W95 FAT32 /dev/mmcblk0p2 250048 15564799 15314752 7,3G 83 Linux
Il y a deux partitions dans cet exemple p1
et p2
.
% mkdir ~/Sauvegarde % sudo dd if=/dev/mmcblk0 of=~/Sauvegarde/Nas.img 15564800+0 enregistrements lus 15564800+0 enregistrements écrits 7969177600 octets (8,0 GB) copiés, 224,085 s, 35,6 MB/s
2. Restauration
Deux cas se présentent, la carte peut avoir la même taille ou une taille différente, il faut alors procéder différemment.
2.1 Taille identique
C'est la même carte SD ou elle a la même taille alors c'est pas compliqué. Vous insérez votre carte et vous copiez l'image sauvegardée dessus. Attention au device /dev/<lebondevice>
.
% sudo dd if=~/Sauvegarde/NAS.img of=/dev/mmcblk0
2.2 Taille différente
Dans un premier temps on procède de la même façon que précédemment. Vous insérez votre carte et vous copiez l'image sauvegardée dessus. Attention au device /dev/<lebondevice>
.
% sudo dd if=~/Sauvegarde/NAS.img of=/dev/mmcblk0
Vous avez maintenant une copie par exemple d'une carte de 8GB sur une carte de 16GB, cela fait de la place perdue. La solution consiste a retailler les partitions.
Pour l'exemple je n'avais de carte SD, j'ai donc utilisé une clef USB de 32GB pour illustrer. Le device n'est donc pas le même.
% sudo dd if=~/Sauvegarde/Nas.img of=/dev/sdb 15564800+0 enregistrements lus 15564800+0 enregistrements écrits 7969177600 octets (8,0 GB) copiés, 1264,77 s, 6,3 MB/s
On va maintenant éditer la table de partition et la modifier.
% sudo fdisk /dev/sdb Bienvenue dans fdisk (util-linux 2.26.2). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Commande (m pour l'aide) : p Disque /dev/sdb : 29,3 GiB, 31466323968 octets, 61457664 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 : 0x00000000 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sdb1 16 250047 250032 122,1M b W95 FAT32 /dev/sdb2 250048 15564799 15314752 7,3G 83 Linux
On supprime la partition 2.
Commande (m pour l'aide) : d Numéro de partition (1,2, 2 par défaut) : 2 La partition 2 a été supprimée.
On crée une nouvelle partition primaire.
Commande (m pour l'aide) : n Type de partition p primaire (1 primaire, 0 étendue, 3 libre) e étendue (conteneur pour partitions logiques) Sélectionnez (p par défaut) : p Numéro de partition (2-4, 2 par défaut) : Premier secteur (250048-61457663, 251904 par défaut) : 250048 Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (251904-61457663, 61457663 par défaut) : Une nouvelle partition 2 de type « Linux » et de taille 29,2 GiB a été créée. 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. % sudo fdisk /dev/sdb Bienvenue dans fdisk (util-linux 2.26.2). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Commande (m pour l'aide) : p Disque /dev/sdb : 29,3 GiB, 31466323968 octets, 61457664 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 : 0x00000000 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sdb1 16 250047 250032 122,1M b W95 FAT32 /dev/sdb2 251904 61457663 61205760 29,2G 83 Linux Commande (m pour l'aide) : q
La table de partition est correcte, il faut maintenant redimensionner le filesystem.
% sudo e2fsck -f /dev/sdb2 e2fsck 1.42.12 (29-Aug-2014) /dev/sdb2 : récupération du journal Passe 1 : vérification des i-noeuds, des blocs et des tailles Passe 2 : vérification de la structure des répertoires Passe 3 : vérification de la connectivité des répertoires Passe 4 : vérification des compteurs de référence Passe 5 : vérification de l'information du sommaire de groupe /dev/sdb2 : 24173/478608 fichiers (0.2% non contigüs), 308829/1914344 blocs % sudo resize2fs /dev/sdb2 resize2fs 1.42.12 (29-Aug-2014) En train de redimensionner le système de fichiers sur /dev/sdb2 à 7650952 (4k) blocs. The filesystem on /dev/sdb2 is now 7650952 (4k) blocks long.