Создание пустого образа SATA диска (для qemu) Далее используются подстановки ${_IMAGE_NAME_} - имя файла образа (например, 'empty.img') ${_IMAGE_SIZE_} - размер файла образа в мегабайтах (например, 32) 1) Создание пустого файла размером ${_IMAGE_SIZE_} # dd if=/dev/zero of=${_IMAGE_NAME_} bs=1M count=${_IMAGE_SIZE_} (Пример: dd if=/dev/zero of=empty.img bs=1M count=32) 2) Создание раздела # parted ${_IMAGE_NAME_} mklabel msdos (Пример: parted empty.img mklabel msdos) # parted -a optimal ${_IMAGE_NAME_} mkpart primary ext2 16 ${_IMAGE_SIZE_}M (Пример: parted -a optimal empty.img mkpart primary ext2 16 32M) # parted ${_IMAGE_NAME_} set 1 boot on (Пример: parted empty.img set 1 boot on) 3) Создание блочного устройства на основе образа Далее используется подстановка ${_BLK_DEV_} - имя файла блочного устройства (например, 'loop0p1') Необходимо выполнить команду # kpartx -a -v ${_IMAGE_NAME_} (Пример: kpartx -a -v empty.img) Команда выведет результат своей работы (Пример: add map loop0p1 (252:2): 0 32768 linear /dev/loop0 30720) Из этого вывода понадобится название устройства ${_BLK_DEV_} (в примере выше: loop0p1) /* Команду kpartx можно выполнить следующим образом, чтобы в выводе */ /* получить только имя файла блочного устройства: */ /* Пример: kpartx -a -v empty.img | awk '{print $3}' */ /* Вывод: loop0p1 */ 4) Создание файловой системы # mkfs.ext2 /dev/mapper/${_BLK_DEV_} (Пример: mkfs.ext2 /dev/mapper/loop0p1) # sync 5) Удаление блочного устройства # kpartx -v -d ${_IMAGE_NAME_} (Пример: kpartx -v -d empty.img)