Blog personnel de Jesus Forain où les principaux sujets sont l'informatique, la technologie, le spatial mais aussi divers sujets.
Filtrer par date
Derniers commentaires
Bloquer la popup "Connectez-vous à YouTube" avatar de Jesus Forain Jesus Forain mercredi 16 décembre 2020 à 13:01

Merci pour le commentaire

Bloquer la popup "Connectez-vous à YouTube" ToscanSeplante (non inscrit) mercredi 16 décembre 2020 à 12:40

Je suis sur Chrome et ça marche niquel !Gros merci !

Éclipse de Soleil du 20 mars 2015 __invité__ dimanche 20 septembre 2020 à 01:29

Hola buenas noche mi numero es 646933333 luis ablame estoi interesado para comprarte el atracion jamaica de feria gracias

Éclipse de Soleil du 20 mars 2015 Eric (non inscrit) jeudi 05 novembre 2015 à 13:51

Si l'aérotrain renaissait de nos jours aurait il un moteur linéaire ? Félicitations pour le sujet de l'aérotrain sur turbo Kermis. Vivement un article sur l'aérotrain et l'explication des moteurs linéaires sur ce blog 👍🏼

Éclipse de Soleil du 20 mars 2015 Eric (non inscrit) jeudi 05 novembre 2015 à 13:46

Pourrais tu faire un article sur le moteur électrique linéaire ? Merci à toi

Éclipse de Soleil du 20 mars 2015 avatar de Fandemanèges Fandemanèges mercredi 28 octobre 2015 à 12:08

Quand tu auras le temps pourras tu faire un article sur l'aérotrain ? Merci à toi.

Éclipse de Soleil du 20 mars 2015 avatar de Fandemanèges Fandemanèges jeudi 20 août 2015 à 19:52

Cela serait possible d'avoir un article sur le fonctionnement du coussin d'air ? Merci

Tester ses regex en direct jean samedi 07 février 2015 à 17:50

Pas mal ton site de regex!

Un serveur chez soi avatar de Jesus Forain Jesus Forain lundi 10 février 2014 à 19:09

Je crois que toutes les marques se valent plus ou moins niveau fiabilité, il faut repérer des modèles qui t'intéressent et chercher sur Google ce qu'en pensent les gens.

Un serveur chez soi avatar de Pat91 Pat91 dimanche 09 février 2014 à 22:24

Je compte changer d'ordinateur, pour l'instant j'ai un Dell. Peux tu me conseiller une marque Jesus Forain s'il te plais. C'est très important. Merci à toi.

Réduire la taille d'une image de carte SD d'un Raspberry Pi

Quand tu crée une image de la carte SD d'un Raspberry avec un logiciel comme Win32DiskImager, ça réalise une copie bit à bit de la carte SD ce qui fait que ton fichier image sera de la même taille que ta carte SD et ce quelque soit l'espace occupé. Si tu as 20 Go d'utilisés sur une carte de 128 Go ton fichier image fera 128 Go et sera essentiellement composé d'espace vide!
Bien sûr tu peux compresser le fichier en ZIP, tu vas gagner de la place mais c'est long, peu pratique et il te faudra de la place pour faire ça.

La méthode que je vais t'expliquer consiste à réduire la taille de la partition à l'intérieur du fichier image et ce sans avoir besoin d'espace disque supplémentaire. Ceci permet aussi de copier une carte sur une autre de plus petite taille, bien entendu la carte devra être plus grande que ce qu'occupent les fichiers. Par exemple tu pourras copier le dump d'une carte de 128 Go où il n'y a réellement que 20 Go d'occupés sur une carte de 32 Go.

Ceci te sera également utile pour cloner une carte SD sur une autre car bien que tu aie 2 cartes SD de même capacité, du même constructeur et du même modèle, leur capacité peut être différente de quelques octets. Si ta carte a des octets en plus par rapport à ton fichier image ça ne posera pas de problème, en revanche si ce sont des octets en moins tu risques d'avoir des problèmes.

Ton image de carte SD comporte 2 partitions, une au format FAT32 de petite taille servant au boot et que l'on ne va pas toucher, et une autre au format EXT4 que l'on va redimensionner.

Attention!
On modifie directement le fichier image, si tu as peur de faire une fausse manip fais une copie du fichier image.

 

Montage de l'image

On va monter le fichier image comme un disque virtuel.

Vérifie qu'un périphérique /dev/loopX est libre où X est un numéro, par exemple /dev/loop0

losetup

Soit la commande ne renvoie rien, ce qui signifie qu'aucun périphérique n'est utilisé, soit elle renvoie la liste des périphériques utilisés. Dans ce cas prends un numéro non utilisé.

On monte l'image comme un disque virtuel.
Dans l'exemple on monte le fichier imageCarteSD.img sur le périphérique /dev/loop0.

losetup /dev/loop0 imageCarteSD.img

On dit au système de recharger la table des partitions du périphérique /dev/loop0

partprobe /dev/loop0

Liste les partitions du disque virtuel /dev/loop0

lsblk /dev/loop0

Tu obtiens un résultat de ce genre.
Les partitions ont pour nom le périphérique, loop0 dans cet exemple suivi de la lette p pour partition suivi du numéro de la partition, 1 ou 2 dans cet exemple. La partition qui nous intéresse est la plus grosse, loop0p2

NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0       7:0    0 59,5G  0 loop
├─loop0p1 259:0    0  256M  0 part
└─loop0p2 259:1    0 59,2G  0 part

 

Vérification du filesystem

Vérifier la partition N°2, /dev/loop0p2 qui est celle que l'on va redimensionner

e2fsck -f /dev/loop0p2

Exemple de résultat

e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootfs: 309168/3837504 files (0.4% non-contiguous), 5842781/15525376 blocks

 

Redimensionnement du filesystem

On passe à l'étape du redimensionnent du système de fichiers, l'option -M indique de minimiser le filesystem le plus possible (uniquement l'espace occupé)

resize2fs -p /dev/loop0p2 -M

Maintenant, tu n'a plus qu'à patienter c'est l'étape la plus longue, la durée de cette étape dépend de la taille du fichier image et des performances de ton matériel. Des X s'affichent pour montrer la progression

resize2fs 1.46.2 (28-Feb-2021)
Resizing the filesystem on /dev/loop0p2 to 6032828 (4k) blocks.
Begin pass 2 (max = 4001911)
Relocating blocks             XXXXXXXX--------------------------------

Voilà le résultat obtenu quand la commande s'est terminée

resize2fs 1.46.2 (28-Feb-2021)
Resizing the filesystem on /dev/loop0p2 to 6032828 (4k) blocks.
Begin pass 2 (max = 4001911)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 474)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 41009)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0p2 is now 6032828 (4k) blocks long.

 

Redimensionnement de la partition

On récupère le nombre de blocs occupés par le filesystem et leur taille. La commande retournant pas mal d'infos, le grep permet de filtrer la sortie avec seulement ce qui nous intéresse.

dumpe2fs -h /dev/loop0p2 | grep "Block count\|Block size"

Résultat

dumpe2fs 1.46.2 (28-Feb-2021)
Block count:              6032828
Block size:               4096

On regarde la taille des blocs de notre fichier image

fdisk -l PIDEV_backup.img | grep Units

Résultat

Units: sectors of 1 * 512 = 512 bytes

Les blocs de notre fichier image font 512 octets.

Il faut calculer où se termine la partition en nombre de blocs de 512 octets grâce à ce calcul:

(Block count × Block size) / Units + 1 = fin de la partition

Par sécurité on ajoute 1 bloc d'où le “+ 1” dans le calcul.

Dans notre exemple

(6032828 × 4096) / 512 + 1 = 48262625

Astuce pour faire directement le calcul dans la ligne de commande

echo $(((6032828 * 4096) / 512 + 1))

On redimensionne la partition avec fdisk

fdisk /dev/loop0

Tu arrives dans le shell interactif de fdisk. Rien n'est modifié tant que tu n'a pas écris les modifications avec w.

Affiche la table des partitions avec l'option p, et retiens la valeur du “Start” (532480)  de la partition N°2 /dev/loop0p2 

Command (m for help): p
Disk /dev/loop0: 59,48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfccf3316

Device       Boot  Start       End   Sectors  Size Id Type
/dev/loop0p1        8192    532479    524288  256M  c W95 FAT32 (LBA)
/dev/loop0p2      532480 124735487 124203008 59,2G 83 Linux

Command (m for help):

Supprime la partition N°2 avec d et 2. L'opération peut faire peur mais on ne supprime pas les données, seulement la partition.

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help):

Crée une nouvelle partition avec les commandes n, p, 2.

First sector: valeur “Start” de la seconde partition relevée précédemment ⇒ 532480.
Last sector: valeur calculée de la fin de la partition avec un “+” devant ⇒ +48262625
À la question “Do you want to remove the signature?” réponds non, choix n

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-124735487, default 2048): 532480
Last sector, +/-sectors or +/-size{K,M,G,T,P} (532480-124735487, default 124735487): +48262625

Created a new partition 2 of type 'Linux' and of size 23 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help):

Affiche le nouveau partitionnement avec p

Command (m for help): p

Disk /dev/loop0: 59,48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfccf3316

Device       Boot  Start      End  Sectors  Size Id Type
/dev/loop0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/loop0p2      532480 48795105 48262626   23G 83 Linux

Command (m for help):

Tu remarqueras que la seconde partition /dev/loop0p2 a réduite en taille.
Gardes en mémoire la valeur de “End ” (48795105) de la dernière partition, /dev/loop0p2 tu en auras besoin pour la suite.

Enregistre les modifications avec w.
Ignore le message d'erreur “Re-reading the partition table failed.: Argument invalide”

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Argument invalide

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

 

Redimensionnement du fichier image

Détache le disque virtuel

losetup -d /dev/loop0

Redimensionne le fichier image.

Il faut calculer la nouvelle taille du fichier pour dire où le tronquer

(fin dernière partition + 1) × taille bloc = taille du fichier

On ajoute 1 bloc par sécurité d'où le “+ 1” dans le calcul
Pour rappel la taille des blocs de notre fichier image c'est 512 octets, donnés par la commande fdisk -l

(48795105 + 1) × 512 = 24983094272

Pour faire le calcul dans la ligne de commande

echo $(((48795105 + 1) * 512))

Tronque le fichier à la taille calculée précédemment

truncate -s 24983094272 imageCarteSD.img

C'est terminé!

Tu peux constater avec la commande ls que ton fichier a diminué de taille.

Pour vérifier tu peux monter l'image comme décrit dans ce post.

partager sur Facebook
Écrire un commentaire

Pour insérer une vidéo YouTube:
   Sur YouTube, cliquez sur le bouton "Partager" en dessous de la vidéo, copiez le lien (Exemple: http://youtu.be/p_kXgnvsUuo) et
   collez-le sans le modifier dans le commentaire.
Votre adresse Ip est enregistrée avec votre message.

Message
Envoi d'images
Déposez les images ici ou utilisez le formulaire.

Envoi de fichiers
Déposez les fichiers ici ou utilisez le formulaire. 2 Mo max par fichier.
Attention! vous n'êtes pas connecté, vous postez en mode invité.