Rapsberry Pi - retailler le fichier img
Publié : jeu. 01 sept. 2016, 20:45
Astuce originale trouvée sur http://raspberrypi.stackexchange.com/qu ... 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 :
avec sdx = sdc dans mon cas. Et là, c'est le drame :
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 :
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 :
Une fois les changements appliqués dans gparted, c'est
Ce qui nous intéresse ici est le dernier secteur 14909440. Un petit
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 :
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...
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 : Tout sélectionner
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
Code : Tout sélectionner
# 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
Code : Tout sélectionner
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
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 : Tout sélectionner
losetup /dev/loop0 ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img
partprobe /dev/loop0
gparted /dev/loop0
Code : Tout sélectionner
# 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
Code : Tout sélectionner
truncate --size=$[(14909440+1)*512] ubuntu-mate-16.04-desktop-armhf-raspberry-pi.img
Code : Tout sélectionner
Finished
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...