Rapsberry Pi - retailler le fichier img

Vous avez une procédure de configuration ou un conseil pour configurer un matériel particulier, partagez votre expérience dans cette partie.

Rapsberry Pi - retailler le fichier img

Messagede le Manchot Masqué » Jeu 01 Sep 2016, 20:45

Astuce originale trouvée sur http://raspberrypi.stackexchange.com/questions/46450/reduce-ubuntu-mate-16-04-img-file-size/

Le contexte

Après avoir récupéré l'image de la Ubuntu Mate sur https://ubuntu-mate.org/download/ pour l'installer sur mon Rpi2, j'ai donc voulu l'installer sur ma carte micro-sd comme indiqué sur le site de la Mate :
Code: Select All Code
apt-get install gddrescue xz-utils
unxz ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img.xz
ddrescue -D --force ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img /dev/sdx

avec sdx = sdc dans mon cas. Et là, c'est le drame :
Code: Select All Code
# ddrescue -D --force ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img /dev/sdc
GNU ddrescue 1.19
Press Ctrl-C to interrupt
rescued:     7892 MB,  errsize:       0 B,  current rate:     655 kB/s
   ipos:     7892 MB,   errors:       0,    average rate:    5293 kB/s
   opos:     7892 MB, run time:   24.85 m,  successful read:       0 s ago
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: Write error: No space left on device

Mince : pas assez de place sur ma carte qui est pourtant sensée être une 8Go... Réflexe 1 : essayer de comprendre l'erreur en vérifiant le système de fichier par acquis de conscience :
Code: Select All Code
fsck.ext4 /dev/sdc2
e2fsck 1.42.13 (17-May-2015)
La taille du système de fichiers (selon le superbloc) est de 1949440 blocs
La taille physique du périphérique est de 1910272 blocs
Le superbloc ou la table des partitions est peut-être corrompue !
Arrêter<o>? oui

Il y a effectivement un problème : l'image officielle prévue pour le RPi est trop grande pour ma carte (peut-être aussi que ma carte à des secteurs HS, n'étant plus, il est vrai, de première jeunesse...).
Et là le réflexe windowsien primaire voudrait qu'on se jette sur le net pour aller fissa acheter une nouvelle carte plus grande ! Pas de chance pour les commerciaux : notre GNU/Linux a tout ce qu'il faut pour pallier le problème !
On commence par utiliser gparted pour retailler la partition /dev/sdc2 et laisser environ 300Mo d'espace vide côté droit sur /dev/sdc2 :
Code: Select All Code
losetup /dev/loop0 ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img
partprobe /dev/loop0
gparted /dev/loop0

Une fois les changements appliqués dans gparted, c'est
Code: Select All Code
# losetup -d /dev/loop0
# fdisk -lu ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img
Disque ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img : 7,5 GiB, 8053063680 octets, 15728640 secteurs
Unités : sectors of 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x343d2bfe

Périphérique                                      Amorçage  Start      Fin Secteurs  Size Id Type
ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img1 *          2048   133119   131072   64M  c W95 FAT32 (LBA)
ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img2          133120 15042559 14909440  7,1G 83 Linux

Ce qui nous intéresse ici est le dernier secteur 14909440. Un petit
Code: Select All Code
truncate --size=$[(14909440+1)*512] ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img

Et notre nouvelle image est prête à être envoyée sur la carte SD. On refait donc la commande ddrescue ci-dessus et on obtient au final :
Code: Select All Code
Finished

qui nous dit que tout s'est bien passé !
Il est clair qu'un petit script qui lirait la taille réellement disponible sur la carte SD, calculerait la taille maxi de la partition /dev/sdc2, et appliquerait les opération en conséquence, serait un plus non négligeable pour les débutants...
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
 
Messages: 314
Inscription: Lun 26 Mai 2008, 21:05
Localisation: Guebwiller
Distribution: Debian, Ubuntu
Niveau: Moitié plein !

Retourner vers Sur un matériel

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron