Disques virtuels - Format brut - Formatage - Montage

Mise à jour : Debian 11.1 / Bullseye

Sommaire

1 - Principe

1.1 - Cas général

$ qemu-img create disk.img 1G

$ qemu-img create -f qcow2 -o size=1G,preallocation=metadata disk.qcow2

est équivalent à un disque non partitionné

$ sudo parted disk.img -s mklabel gpt
$ sudo parted disk.img mkpart boot vfat 2M 200M mkpart root ext2 200M 100%

ne sont pas directement compatibles. Une étape supplémentaire (création de périphériques boucle) est nécessaire. Elle associe aux partitions des boucles de nom /dev/loopxy ayant les propriétés de périphériques bloc, utilisables avec ces utilitaires

1.2 - Cas des partitions déjà formatées

$ sudo parted debian.img unit b print
...
Number Start End Size File system Name Flags
1 1048576B 537919487B 536870912B fat32 boot, esp
2 537919488B 20450377727B 19912458240B ext4
3 20450377728B 21473787903B 1023410176B linux-swap(v1)
$ sudo mount -o loop,offset=263192576 debian.img /mnt
$ lsblk -f /dev/loop?
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 vfat 95DC-12D0 467,4M 9% /mnt

2 - Cas général

2.1 - Assignation globale

$ sudo losetup --show -P -f disk.img
/dev/loop1
$ ls -l /dev/loop1*
brw-rw---- 1 root disk 7, 1 23 nov. 19:12 /dev/loop1
brw-rw---- 1 root disk 259, 5 23 nov. 19:12 /dev/loop1p1
brw-rw---- 1 root disk 259, 6 23 nov. 19:12 /dev/loop1p2
brw-rw---- 1 root disk 259, 6 23 nov. 19:12 /dev/loop1p2 brw-rw---- 1 root disk 259, 6 23 nov. 19:12 /dev/loop1p2

ou

$ lsblk -f /dev/loop1
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop10
├─loop1p1 vfat 12D9-B72D
├─loop1p2 ext4 ba98f324-a01a-438c-9856-2bd977982e57
├─loop1p3 swap bb326bcd-bf13-41b1-b615-9bdc2aa3be19
└─loop1p4

2.2 - Assignation unitaire

$ sudo parted disk.img unit b print |grep Number -A1
Number Start End Size File system Name Flags
1 1048576B 500170751B 499122176B fat32 EFI boot, esp
$ sudo losetup --find --show -o 1048576 disk.img
/dev/loop2

2.3 - Utilisation

$ sudo mkfs.ext4 /dev/loop1p4

$ sudo fsck -n /dev/loop1p4
...
/dev/loop1p4 : propre, 11/516096 fichiers, 57844/2061568 blocs

$ lsblk -f /dev/loop1p4
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop10p4 ext4 93046d9d-2fec-42b7-993a-ff5851127a7d
$ sudo mount /dev/loop1p1 /mnt
$ df -Th /dev/loop10p1
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/loop10p1 vfat 476M 6,6M 469M 2% /mnt
$ sudo mkdir /mnt/EFI/BOOT
$ sudo cp /mnt/EFI/debian/grubx64.efi /mnt/EFI/BOOT/bootx64.efi
$ sudo umount /mnt
$ sudo losetup -d /dev/loop10

2.4 - Gestion des boucles

$ sudo losetup --list
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop1 0 0 0 0 /home/XXXXXX/debian/disk.img 0 512
$ sudo losetup -j disk.img
/dev/loop0: [66308]:1872889 (/home/XXXXXX/debian/disk.img)
$ sudo losetup --detach /dev/loop10
$ sudo losetup -D