Предстала передо мной задача установить паравиртуальные ОС Debian на сервер Xen. Версия Xen у меня 4.0.1-2, версия Debian - 6 (Squeeze), не важно - 32 или 64 бита. В интернете есть несколько статей на эту же тему, оперирующих установкой паравиртуального Debian напрямую, без использования HVM. Эти статьи были совершенно бесполезны для Lenny из-за того, что ни по одной из них установить Debian 5 у меня не получилось (неважно - каким методом предлагали совершать установку). На текущий момент по планете шествует Squeeze и его прямую установку я обязательно проверю в ближайшее время (есть хороший задел, чтобы установка сразу паравиртуальной системы получилась).
Итак, эту статью можно смело использовать для:
А) Установки Debian 6 Squeeze с нуля через установку сначала в HVM-домен и далее - преобразование в паравиртуальный,
Б) Для конвертирования уже существующей HVM-версии Debian Squeeze в паравиртуальный режим.
Начнем. Если у Вас Debian уже установлен в HVM DomU - двигайтесь сразу к пункту "после установки".
1) Создаем HVM домен.
# cd /etc/xen
# mkdir vm_debian
# cd vm_debian
Создаем диск для системы, например, 10Гб
# dd if=/dev/zero of=hdd0 bs=1M count=10240
Создаем конфиг HVM-домена для Debian-системы. Назовем файл vm.cfg. Содержание файла:
kernel = 'hvmloader'
builder = 'hvm'
memory = '256'
device_model = '/usr/lib/xen/bin/qemu-dm'
disk = [ 'tap:aio:/etc/xen/vm_debian/hdd0,hda,w', 'tap:aio:/etc/xen/iso/debian-6.0.1a-amd64-i386-netinst.iso,hdc:cdrom,r' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:99' ]
name = 'vm_debian'
boot = 'd'
vnc = 1
sdl = 0
apic = 1
acpi = 1
localtime = 0
vcpus = 1
pae = 1
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
vncconsole = 0
stdvga = 0
videoram = 16
shadow_memory = 8
Предполагается, что образ установочного диска лежит у Вас в /etc/xen/iso/debian-6.0.1a-amd64-i386-netinst.iso, иначе укажите свой путь.
Запускаем домен:
# xm create vm_debian/vm.cfg
2) Присоединяемся с помощью VNC Viewer к Xen к только что созданному домену. Предполагается, что Вы уже работали с Xen и имеете представление - что такое VNC Viewer и как им цепляться. Если нет - на этом же сайте есть статья по Xen с описанием - что это такое и с чем это едят.
Теперь устанавливайте Debian как обычно, как Вы делали бы это на голом железе.
3) После окончания установки и перезагрузки у Вас снова запустится установщик с диска. Но нам нужно попасть в установленную систему, а не в инсталлер. Поэтому останавливаем машину вручную с Xen-сервера и меняем конфиг:
# xm destroy vm_debian
И в файле vm.cfg меняем значение "boot = 'd'" на "boot = 'c'":
boot = 'c'
Запускаем машину и снова подцепляемся к ней через VNC.
# xm create vm_debian/vm.cfg
4) После установки
После установки, либо же, если Вы хотите перевести HVM-машину Debian в паравиртуальную среду - следуем дальше.
Итак, мы подцеплены через VNC к машине и видим ее консоль. Логинимся под root.
5) Нам нужен SSH.
Т.к. мы собираемся установить внутри Debian HVM паравиртуальное ядро, а после этого скопировать его во-вне, на сервер Xen, то нам нужен настроенный SSH-сервер на гостевой машине. Если он уже настроен - великолепно. Если нет - действуем:
# aptitude install openssh-server
# /etc/init.d/ssh start
Настройки по-умолчанию, конечно, не шибко секьюрные, однако мы их всегда успеем поменять впоследствии.
6) Устанавливаем xen-совместимое ядро.
Для того, чтобы Xen смог работать с нашей машиной, нам необходимо xen-совместимое ядро. Самый простой способ - установить это ядро на самой виртуальной машине, а потом - скопировать на сервер Xen.
# aptitude install linux-image-xen-686
Тут предполагается использование мета-пакета, указывающего на самое свежее ядро для текущей ОС по-умолчанию. И 32-битного гостя. Для 64-битного гостя вместо 686 используйте amd64. Если ядро другое - то указывайте соответственно.
7) Теперь правим парочку файлов:
/etc/inittab:
меняем в строке "1:2345:respawn:/sbin/getty 38400 tty1" значение tty1 на hvc0:
1:2345:respawn:/sbin/getty 38400 hvc0
/etc/securetty:
Убедитесь, что в этом файле присутствует запись hvc0:
ЗЫ. В Lenny файл назывался securetab, внимательнее!
# cat /etc/securetty | grep hvc0
hvc0
Если нет - добавьте.
Это позволяет ОС вывод консоли направить на устройство HVC0, которое является Xen-консолью. Иначе ОС будет загружаться до надписи "Starting local scripts" и тут вешаться, т.к. tty1 Xen не видит.
8) Копируем ядро из гостевого домена на сервер Xen.
На сервере Xen:
# cd /etc/xen/vm_debian
# scp root@192.168.0.2:/boot/initrd.img-2.6.32-5-xen-686 ./
# scp root@192.168.0.2:/boot/vmlinuz-2.6.32-5-xen-686 ./
Если доступ под root через ssh у Вас закрыт - используйте другого пользователя. Вместо 192.168.0.2 подставьте IP-адрес гостевой машины.
9) Выключаем гостевую машину и создаем PV-конфиг для нее на сервере.
На госте:
# shutdown -Ph now
На сервере:
# xm list | grep vm_debian
выполняем, пока не увидим, что машина выключилась.
Сохраним HVM-конфиг на всякий случай:
# mv vm.cfg vm.hvm
И в файл vm.cfg положим следующий конфиг:
kernel = "/etc/xen/vm_debian/vmlinuz-2.6.26-2-xen-686"
ramdisk = "/etc/xen/vm_debian/initrd.img-2.6.26-2-xen-686"
root = "root=/dev/xvda1 ro console=hvc0"
memory = '256'
disk = [ 'file:/etc/xen/vm_debian/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:99' ]
name = 'vm_debian'
#boot = 'c'
vnc = 1
sdl = 0
apic = 1
acpi = 1
localtime = 0
vcpus = 1
pae = 1
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
vncconsole = 1
stdvga = 0
videoram = 16
shadow_memory = 8
timer_mode = 1
Тут мы видим, что вместо устройства sda в гостевой домен Debian будет передано устройство xvda. Так-же видим, что вместо "tap:aio:" TAP-интерфейса используется LOOP-интерфейс "file:". К сожалению, даже Squeeze заставить работать с TAP-интерфейсом у меня не получилось, потому пользуем LOOP-интерфейс (с учетом паравиртуализации - скорость там приличная).
10) Запускаем паравиртуализированного гостя
# xm create -c vm_debian/vm.cfg
Ключ -c указывает Xen сразу присоединиться к консоли машины, что позволяет в реал-тайм видеть процесс загрузки ОС.
Отключиться от консоли можно сочетанием клавишь Ctrl+]
В любое другое время подключиться к консоли можно с помощью команды xm console:
# xm console vm_debian
Все, машина загрузилась и радует нас своей работой.
Комментарии
Оставить комментарий
Операционная система LINUX
Термины: Операционная система LINUX