Суть такова — есть Debian + Xen 4.1.1, туда надо установить FreeBSD. Краткая справка, начиная с FreeBSD 8.0 умеет работать в Xen в режиме PV, до этого был доступен только режим HVM и только если ядро включает в себя нужные драйверы и опции. Так же, только i386 версия работает в режиме PV.
Существует 2 метода установки FreeBSD в Xen:
Так как у меня отсуствует другая машина на FreeBSD с хорошим аплоадом, я решил пойти по 2 методу.
Нам подтребуется:
Если у вас Mac OS X: едиственный VNC клиент который у меня заработал нормально это — TightVNC Java Viewer.
Первоначальный конфиг для xm:
Запускаем (xm create /path/to/freebsd.cfg), соеденяемся по VNC. Если у вас нет других доменов с VNC, то порт будет 5900. Если Dom0 находится за пределами видимости (за NAT например), то на локальной машине можно пробросить ssh тоннель. В нормальных ОС это делается так:
После этого можно соеденятся с доменом (в качестве сервера указать 127.0.0.1:5900). Сеть лучше настроить статиком, с DHCP бывают проблемы. Во время установки надо указать, что вы хотите src. Процесс установки не должен вызвать затруднений, однако у меня возникла проблема — lvm раздел который я создал был ровно 20gb, и когда я указал, что все 20 выделить под /, система попросила 64кб для загрузочника и по какой-то причине эти 64кб не отрезались от / и в результате я получил ошибку о нехватке места. Кстати, о именах дискоа: hda -> ad0, sda -> da0.
Чтобы FreeBSD работала в режиме PV, надо пересобрать ядро:
Теперь надо перенести ядро с DomU на Dom0:
Для того, чтобы к домену можно было подключиться через xm console, надо отредактировать фаил /etc/ttys:
Я оставляю ttyv1 включеной, чтобы можно было загрузиться в режиме HVM, нажать Alt+F1 и получить консоль, на всякий склучай.
freebsd.cfg для PV:
Теперь надо исправить настройку сети, так как тепеь сетевушка называется xn0, а не rl0. Все, на этом этапе у вас должна быть полностью рабочая система.
P.S.
Об ошибках прошу писать в личку.
UPD.
Скорость работы с диском:
Существует 2 метода установки FreeBSD в Xen:
- Создание образа системы на другой FreeBSD и перенос его в Xen
- Первоначальная установка в HVM и последующий перенос в PV
Так как у меня отсуствует другая машина на FreeBSD с хорошим аплоадом, я решил пойти по 2 методу.
Подготовка
Нам подтребуется:
- Настроеный dom0
- ISO образ установщика (FreeBSD 8.2 тоже должен подойти)
- VNC Клиент
Если у вас Mac OS X: едиственный VNC клиент который у меня заработал нормально это — TightVNC Java Viewer.
Первоначальный конфиг для xm:
kernel = "hvmloader"
builder='hvm'
memory = 256
name = "FreeBSD-Dev"
vif = [ 'type=ioemu' ]
disk = [
'phy:/dev/tank/freebsd--disk,ioemu:hda,w',
'file:/root/FreeBSD-9.0-BETA2-i386-dvd1.iso,hdc:cdrom,r'
]
device_model = 'qemu-dm'
boot="cd"
vnc=1
vnclisten="0.0.0.0"
vncpasswd='freebsdinstall'
serial='pty'
Установка
Запускаем (xm create /path/to/freebsd.cfg), соеденяемся по VNC. Если у вас нет других доменов с VNC, то порт будет 5900. Если Dom0 находится за пределами видимости (за NAT например), то на локальной машине можно пробросить ssh тоннель. В нормальных ОС это делается так:
ssh -L 5900:127.0.0.1:5900 xx.xx.xx.xx
После этого можно соеденятся с доменом (в качестве сервера указать 127.0.0.1:5900). Сеть лучше настроить статиком, с DHCP бывают проблемы. Во время установки надо указать, что вы хотите src. Процесс установки не должен вызвать затруднений, однако у меня возникла проблема — lvm раздел который я создал был ровно 20gb, и когда я указал, что все 20 выделить под /, система попросила 64кб для загрузочника и по какой-то причине эти 64кб не отрезались от / и в результате я получил ошибку о нехватке места. Кстати, о именах дискоа: hda -> ad0, sda -> da0.
Собираем ядро
Чтобы FreeBSD работала в режиме PV, надо пересобрать ядро:
cd /sys/i386/conf/
config XEN
cd ../compile/XEN ; make cleandepend && make depend && make && make install
Теперь надо перенести ядро с DomU на Dom0:
scp /boot/kernel/kernel user@ip:/path
Для того, чтобы к домену можно было подключиться через xm console, надо отредактировать фаил /etc/ttys:
...
xc0 "/usr/libexec/getty Pc" vt100 on secure
ttyv0 "/usr/libexec/getty Pc" xterm on secure
ttyv1 "/usr/libexec/getty Pc" xterm on secure
ttyv2 "/usr/libexec/getty Pc" xterm on secure
</p>
Я оставляю ttyv1 включеной, чтобы можно было загрузиться в режиме HVM, нажать Alt+F1 и получить консоль, на всякий склучай.
Запуск в режиме PV
freebsd.cfg для PV:
kernel = "/etc/xen/freebsd/kernel"
memory = 256
name = "FreeBSD0"
vif = [ '' ]
disk = [ 'phy:/dev/tank/freebsd--disk,ioemu:hda,w' ]
extra = "boot_verbose=1"
extra += ",vfs.root.mountfrom=ufs:/dev/ad0p2"
extra += ",kern.hz=100"
pae=1
Теперь надо исправить настройку сети, так как тепеь сетевушка называется xn0, а не rl0. Все, на этом этапе у вас должна быть полностью рабочая система.
P.S.
Об ошибках прошу писать в личку.
UPD.
Скорость работы с диском:
%time dd if=/dev/zero bs=1024k of=test count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 10.364163 secs (103601403 bytes/sec)
0.000u 3.694s 0:10.37 35.5% 25+4753k 6+8216io 0pf+0w
%time dd if=test bs=1024k of=/dev/null
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 8.904045 secs (120590340 bytes/sec)
0.000u 2.458s 0:08.97 27.3% 25+4906k 8225+0io 3pf+0w