Conversions d'image disque

Certaines commandes permettent de faire des conversions de fichier à fichier. Mais les possibilités sont plus nombreuses si l'on se place dans le contexte classique du disque de stockage. On peut alors utiliser les commandes habituelles comme fdisk.

Pour travailler au niveau disque/partition sans avoir à utiliser un vrai disque, la commande losetup permet d'émuler un périphérique de type bloc à partir d'un fichier.

tar → raw

Le principe est de créer une image disque, la partitionner et d'y placer le tar.

Les droits d'administrateurs sont requis car cette technique utilise un périphérique virtuel.

Création d'une image vide

Le projet Qemu héberge un utilitaire de manipulation d'image nommé qemu-img.

qemu-img create disk.img 100M

Différents formats d'image peuvent être utilisés, et en particulier, le format raw (par défaut) ou QCOW2.

Partitionnement de l'image

Afin d'utiliser fdisk, l'image est montée en tant que périphérique loopback grâce à losetup. Cette opération ressemble à une ouverture de fichier.

% sudo losetup -vf disk.img
Loop device is /dev/loop0

L'option -f permet la sélection automatique d'une entrée de /dev qui sera affichée grâce à l'option -v.

On peut alors créer une partition, dans ce périphérique ; puis vérifier le résultat.

% printf 'n\np\n1\n\n\nw\n' | sudo fdisk /dev/loop0

% sudo fdisk -l /dev/loop0
Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/loop0p1               1          12       96358+  83  Linux

Il ne faut pas oublier de "fermer" le fichier image à la fin des modifications.

% sudo losetup -d /dev/loop0

Initialisation d'un système de fichiers

La table de partition étant créé, il faut maintenant ouvrir le fichier image au début de la partition. Il faut donc "sauter" cette table dont la taille est de 32256 octets (63 secteurs de 512 octets).

% sudo losetup -o 32256 -vf disk.img

% sudo losetup -a
/dev/loop0: [0806]:1003686 (disk.img), décalage 32256

On peut à présent initialiser un système de fichiers ext3 dans cette partition.

sudo mke2fs -j /dev/loop0

Décompression des fichiers

Le système de fichiers étant créé, il est possible de le monter afin d'y copier les fichiers de l'archive tar.

sudo mount /dev/loop0 /mnt
sudo tar xf disk.tar -C /mnt
sudo umount /mnt

Finalisation de l'image

Il ne reste plus qu'à libérer le fichier de son utilisation par losetup, ce qui revient à dire que l'on ferme le fichier.

sudo losetup -d /dev/loop0

tar → ext2

Un utilitaire permet de réaliser cette opération sans nécessiter de droits root sur la machine de développement : genext2fs.

à détailler...

Topic revision: r3 - 20 Sep 2011 - 11:21:37 - NicolasFrisoni
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback