Подготовка паравиртуализированного гостевого окружения с FreeBSD 8 для Xen |
[исправить] |
В заметке рассказано о подготовке образа гостевой системы с FreeBSD 8,
предназначенного для работы под управлением Xen в режиме паравиртуализации,
позволяющем добиться более высокой производительности по сравнению с
HVM-режимом (полная аппаратная виртуализация).
В настоящее время нет готовых бинарных образов ядра и системы, предназначенных
для установки в роли гостевой ОС. Придется создавать их вручную. Для начала
поставим FreeBSD обычным образом на диск или под управлением VirtualBox, после
чего займемся созданием образа, пригодного для использования в Xen DomU.
Создадим каркас будущего образа гостевой ОС (размер можно сразу изменить исходя из решаемых задач):
# truncate -s 256M freebsd.img
Привяжем к этому файлу виртуальный диск:
# mdconfig -f freebsd.img
Установим загрузчик, создадим дисковые разделы и отформатируем под UFS2 с включенными softupdates:
# fdisk -BI md0
# bsdlabel -wB md0s1
# newfs -U md0s1a
Монтируем локально созданную внутри файла ФС:
# mount /dev/md0s1a /mnt
В /usr/src текущей системы должен быть полный набор исходных текстов, обновим их:
# csup -h cvsup2.ru.FreeBSD.org -L 2 /usr/share/examples/cvsup/standard-supfile
Примечание: C 2012 года проект FreeBSD перешёл на использование Subversion.
Вместо cvsup следует использовать svnup (или freebsd-update для системы,
portsnap/pkg для портов):
cd /usr/ports/net/svnup && make install
svnup stable -h svn0.us-west.freebsd.org
svnup ports -h svn0.us-west.freebsd.org
Соберем ядро и мир
# make buildworld && make buildkernel KERNCONF=XEN
Установим итоговые собранные файлы на ранее подготовленный дисковый образ в
файле, примонтированный в /mnt:
# export DESTDIR=/mnt && make installworld && make installkernel KERNCONF=XEN && cd etc && make distribution
Адаптируем настройки для работы в качестве гостевой системы Xen.
В /mnt/etc/fstab добавим:
/dev/xbd0 / ufs rw 1 1
В /mnt/etc/ttys:
xc0 "/usr/libexec/getty Pc" vt100 on secure
Сохраним отдельно ядро гостевой системы, так как его потребуется скопировать для загрузки из dom0:
# cp /mnt/boot/kernel/kernel /some/place/freebsd-kernel
Отмонтируем виртуальный диск:
# umount /mnt
# mdconfig -d -u md0
В результате получены файл с гостевой системой freebsd.img и файл с ядром freebsd-kernel.
Конфигурируем управляющее окружение Xen (dom0):
Проверяем работает ли xen:
# xm list
Создаем файл конфигурации /etc/xen/freebsd:
kernel = "/virt/freebsd-8.0p2-i386-xen-domu-kernel"
memory = 512
name = "freebsd"
vif = [ '' ]
disk = [ 'file:/virt/freebsd-8.0p2-i386-xen-domu.img,hda,w' ]
extra = "boot_verbose=1"
extra += ",vfs.root.mountfrom=ufs:/dev/ad0s1a"
extra += ",kern.hz=100"
где, /virt/freebsd-8.0p2-i386-xen-domu-kernel путь к предварительно
скопированному в файловую систему dom0 подготовленного ранее ядра FreeBSD.
В /etc/xen/xend-config.sxp активируем сетевой мост для работы сети внутри FreeBSD:
#(network-script network-dummy)
(network-script network-bridge)
Запускаем гостевое окружение и сразу входим в консоль:
# xm create freebsd
# xm console freebsd
Из проблем, отмечена неработа настройки ifconfig_xn0="DHCP", для получения
адреса dhclient нужно запускать вручную.
|
|
|
|
Раздел: Корень / Безопасность / Виртуализация - Xen, OpenVZ, KVM, Qemu |