J'ai besoin de créer une image de disque brut pour une utilisation dans une machine virtuelle, mais je dois créer les partitions avant de créer le système de fichiers ou l'installation du système d'exploitation.
Quelqu'un peut-il décrire un processus pour faire cela?
Créez d'abord une image de disque brut vide (25 Go dans ce cas):
# dd if=/dev/zero of=disk.img bs=1024k seek=25600 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 2.7301e-05 s, 0.0 kB/s
# ls -lh
total 2.0G
-rw-r--r-- 1 root root 25G Dec 13 11:13 disk.img
Donnez-lui une table de partition:
# parted disk.img mklabel msdos
Montez comme un dispositif de bouclage (le moyen le plus simple de définir des cylindres, des têtes et des secteurs):
# losetup -f disk.img
# losetup -a
/dev/loop0: [0801]:12059103 (/path/to/disk.img)
Vérifiez qu'il semble être un élément de bloc valide:
# fdisk /dev/loop0
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/loop0: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000db005
Device Boot Start End Blocks Id System
Ensuite, utilisez fdisk
pour la partitionner comme vous le souhaitez:
# fdisk /dev/loop0
Lorsque vous avez terminé, vous devez détester le périphérique (il aura besoin d'une démapping et de démontage en premier):
# losetup -d /dev/loop0
Procédure entièrement automatisée
Créer un my.img
Image avec une seule partition ext4:
Sudo apt-get install kpartx
img='my.img'
dd if=/dev/zero of="$img" bs=512 count=131072
printf 'o\nn\np\n1\n\n\nw\n' | fdisk "$img"
Sudo kpartx -av "$img"
Sudo mke2fs -t ext4 /dev/mapper/loop0p1
mkdir d
Sudo mount /dev/mapper/loop0p1 d
# Do something to the ext partition.
Sudo touch a
Sudo umount d
Sudo kpartx -dv "$img"
Testé sur Ubuntu 14.04.
Les parties "dures" sont:
montage du fichier image avec plusieurs périphériques de partition de boucle. Ici, nous avons utilisé kpartx
, mais il existe d'autres méthodes: Comment monter une partition à partir d'une image créée par DD d'un périphérique de blocage (E.G. HDD) sous Linux?
créer des partitions non interactivement. Ici, nous venons de passer à fdisk
comme mentionné à l'adresse suivante: Création et formation d'une partition à l'aide d'un script Bash