Создание образа виртуальной машины позволяет выполнить все необходимые настройки в системе и поставить системные пакеты, которые могут потребоваться, затем упаковать всю конфигурацию в образ из которого можно будет создавать сколько угодно много гостевых систем. Работа с образами iso для KVM будет рассмотрена в рамках данного материала.
Образ представляет собой iso для KVM который используется при создании новых серверов
Создаем образ, на основе которого в дальнейшем можно будет делать новые сервера
Изначально потребуется .img, выделенный под гостевую систему. Создаем его следующей командой
qemu-img create imagename.img 1G
После выполнения команды в текущем каталоге можно будет наблюдать файл imagename.img
Далее указываем в качестве первого жесткого диска hda только что созданный imagename.img, имя файла .iso и объем памяти, который будет выделяться машине
qemu -hda imagename.img -cdrom name.iso -boot d -m 512
Опция -boot d обеспечит загрузку с cdrom
После выполнения команды запускается гостевая система, если она создается на десктоп машине запустится графический интерфейс в котором будет предложено продолжить установку
Сейчас поскольку загрузились с imagename.img выделим на нем партиции и установим операционную систему на него
На гостевой системе:
fdisk /dev/hda
Партиции выделяем именно на диске hda, который указали изначально — создадим одну партицию
Просмотреть список существующих
p
Создаем новую партицию
n
Выбираем тип Primary
p
Номер партиции 1
1
Далее дважды нажимаем «Ввод» при указании начала и конца партиции — в этом случае она займет весь диск
Записываем изменения
w
На этом с партициями закончено. Обращаемся к скрипту, запускающему установку ОС
./install-ubuntu
Файл находим в среди тех, что находятся в iso внутри которого сейчас находимся
В процессе установки указываем партицию /dev/hda1, остальные запрашиваемые опции можно оставить по-умолчанию
По окончании процесса система будет установлена в файл-образ iso для KVM
Выключаем гостевую машину в графическом интерфейсе (если используется дескотоп версия) или командой shotdown -h now в консоли.
Сейчас мы можем загрузиться в .img файл
Ищем информацию об опциях загрузки, потребуется использовать «c» для загрузки с жесткого диска
qemu —help | grep boot
qemu -hda imagename.img -cdrom name.iso —boot c -m 256
Или можно не использовать более cdrom и загрузиться сразу в .img файл
qemu -hda imagename.img -m 512
Гостевая система из imagename.img запускается и начинается процесс установки
Все сделанные изменения сейчас (например, установленные пакеты) будут сохранены в .img файл, его можно копировать через dd в HD, затем примонтировать и попасть внутрь через chroot
Chroot в .img файле KVM
Ранее был создан файл imagename.img, который теперь требуется примонтировать в произвольную точку файловой системы, например в /mnt
mount -o loop name.img /mnt
Может возникнуть ошибка
mount: you must specify the filesystem type
Причина ошибки в том, что файловая система на предыдущем шаге была создана только на одной партиции, не на всем диске — исправить это можно с помощью parted
parted name.img
unit
B
Последняя команда выведет информацию о всех существующих в name.img партициях, в примере она одна и имеет тип файловой системы ext3
Также в выводе присутсвует значение в байтах, с которого начинается партиция и значение на котором она заканчивается. Потребуется значение для начала — это 32256
Выходим из parted
q
mount -o loop,offset=32256 name.img /mnt
После указания offset монтирование завершается корректно
cd /mnt
Все внесенные изменения будут отражаться в .img файле, но операционная система на данном этапе еще не запускается из него
Выполняем chroot
chroot /mnt
Если возникает ошибка, непосредственно указываем оболочку
chroot /mnt /bin/sh
Оболочка shell будет запущена на гостевой системе и мы окажется внутри виртуальной машины
Сейчас гостевая машина недоступна по сети, чтобы исправить этот момент (в случае если сетевые настройки хосты получают автоматически по DHCP) достаточно выполнить:
dhcp eth0
Сейчас из консоли гостевой системы должны быть доступны узлы во внешнем мире
ping ya.ru
Читайте также про KVM виртуализацию в Linux