FreeBSD в Xen
Материал из Xgu.ru
- Короткий URL: xen/freebsd
Перевод и редактирование: Игорь Чубин
Эта страница посвящена вопросам запуска FreeBSD в паравиртуальном режиме и в режиме аппаратной виртуализации в системе Xen.
В её основе лежит перевод FreeBSD/Xen Howto.
Содержание
|
[править] Запуск в паравиртуальном домене
[править] Как установить FreeBSD в domU
К сожалению, статья как и файлы бородатые и установить систему по этому HOWTO невозможно. Вот довольно актуальная статья для 8-ой ветки. http://www.ita.com.ua/rus/articles.htm?id=34
Для инсталляции FreeBSD в домене domU потребуется несколько файлов:
- ядра freebsd-XENU_INSTALL & freebsd-XENU
- конфигурационный файл Xen (freebsd_xen_INSTALL)
- файл-образ, на который будет устанавливаться система.
1. Если вы хотите использовать файловую систему, базирующуюся на файле, сначала нужно создать файл-образ. Делается это так:
%# dd if=/dev/zero of=freesd_xen_INSTALL.img bs=1024k count=1000
Эта команда создаёт пустой образ размером 1GB. Вы можете менять параметры исходя из собственных потребностей.
2. Убедитесь, что файл ядра и конфигурационный файл виртуальной машины находятся в нужном месте. Обычно конфигурационный файл помещается в /etc/xen/vm (где vm это имя виртуальной машины),
3. Для инсталляции FreeBSD в domU обязательно нужно чтобы в конфигурационном файле были строки:
kernel = "/Path/To/Kernel/freebsd-XENU_INSTALL" #kernel = "/Path/To/Kernel/freebsd-XENU" extra += ",vfs.root.mountfrom=ufs:/dev/md0" #extra += ",vfs.root.mountfrom=ufs:/dev/md0/xbd769s1a"
4. Теперь можно начать инсталляцию. Домен создаётся как обычно:
%# xm create -c /Path/To/Config/freebsd_xen_INSTALL
После того как домен загрузится, на экране появится приглашение о выборе консоли на которой будет выполняться продолжение инсталляции. Выбирайте
2 ...................... VT100 or compatible terminal
Дальше на экране появится знакомое диалоговое окно "Sysinstall Menu". Первое, что нужно в нём сделать это изменить название релиза с 7.0-CURRENT на RELEASE той версии, которою вы хотите установить. Это связано с тем, что Xen портирован в 7.0-CURRENT, и ядра RELEASE с поддержкой Xen на сегодняшний день нет. Изменить название релиза можно в меню "Options".
|
При инсталляции 6.1-RELEASE процесс может зависнуть на этапе "Extracting base in / directory", в то время как инсталляция 6.0-RELEASE проходит успешно. Можно поэкспериментировать, но я вас предупредил. |
5. После выбора релиза FreeBSD переходите к обычному процессу инсталляции. В диалоговом окне FDISK будет показана геометрия 0 cyls/0 heads/0 sectors, и размер диска для использования тоже 0. Нужно задать геометрию вручную, нажав клавишу G. Введите какую-нибудь бредовую геометрию, например 1000/1000/1000 - sysinstall заругается на то что вы ввели бред, а затем предложит рабочий вариант.
6. Инсталляция через FTP была проверена. Она работает. Другие методы инсталляции по сети, тоже должны работать. Можно выбирать тот метод, который подходит, а дальше всё сделает sysinstall.
7. Как только процесс инсталляции завершится, можно сказать, что всё готово. НО! Перед тем как перезагрузить систему, нужно ещё кое-что исправить. В главном меню инсталлятора нужно выбрать пункт Configure, а в нём TTYS. После этого нажать Yes и отредактировать файл /etc/ttys. В файл нужно закомментировать все строки с ttyv и добавить одну строку.
Изменённый файл будет выглядеть так:
xc0 "/usr/libexec/getty Pc" vt100 on secure #ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals #ttyv1 "/usr/libexec/getty Pc" cons25 on secure #ttyv2 "/usr/libexec/getty Pc" cons25 on secure #ttyv3 "/usr/libexec/getty Pc" cons25 on secure #ttyv4 "/usr/libexec/getty Pc" cons25 on secure #ttyv5 "/usr/libexec/getty Pc" cons25 on secure #ttyv6 "/usr/libexec/getty Pc" cons25 on secure #ttyv7 "/usr/libexec/getty Pc" cons25 on secure #ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
8. Инсталляция завершена. Нужно изменить конфигурационный файл домена и запустить систему:
#kernel = "/Path/To/Kernel/freebsd-XENU_INSTALL" kernel = "/Path/To/Kernel/freebsd-XENU" #extra += ",vfs.root.mountfrom=ufs:/dev/md0" extra += ",vfs.root.mountfrom=ufs:/dev/md0/xbd769s1a"
9. Теперь можно перезагрузить домен, или с помощью собственно sysinstall или командой
%# xm reboot domainID
в домене 0.
Можно погасить домен командой
%# xm shutdown domainID
а потом заново запустить его.
Если вы выберете перезагрузку, то убедитесь, что domainID у домена изменился (как правило, увеличился на 1):
%# xm list
С помощью команды
%# xm console domainID
можно подключиться к консоли свежеустановленной системы.
[править] Как использовать ядро freebsd-XENU для непосредственного запуска
Ниже описываются шаги, которые необходимо сделать, если вы предпочитаете использовать существующую систему, вместо того чтобы инсталлировать новую.
Потребуются файлы:
- ядро (freebsd-XENU)
- конфигурационный файл Xen (freebsd_xen)
Будем по-прежнему использовать виртуальный диск, базирующийся на файле. Для случая с настоящим жёстким диском, нужны будут некоторые изменения.
1. Создайте файл для образа файловой системы. Поскольку мы не хотим инсталлировать систему, а хотим просто скопировать файлы, то созданием пустого файла, как раньше, дело не кончится. Нужны более сложные действия, показанные ниже.
Создайте файловую систему образа:
%# dd if=/dev/zero of=freesd_xen.img bs=1024k count=1000 %# mdconfig -a -t vnode -f freebsd_xen.img -u 0 %# bsdlabel -e md0 # отредактируйте md0, создайте как минимум /(md0a) и swap(md0b) %# newfs md0a
Затем нужно подмонтировать устройство /dev/md0a и скопировать в него данные с существующей системы FreeBSD. С этим хорошо справятся команды dump и restore.
2. После того как образ создан, нужно его немного подправить, для того чтобы он мог работать под Xen.
- Отредактируйте файл /etc/fstab. Необходимость этого редактирования в том, что Xen ничего не знает о ad0, ad0s1 или чего-то похожего.
# Device Mountpoint FStype Options Dump Pass# /dev/xbd769b none swap sw 0 0 /dev/xbd769a / ufs rw 1 1
- Отредактируйте файл /etc/ttys. Нужно добавить одну строку и закомментировать все строки ttyv. xc0 это имя консоли, которое понимает Xen.
xc0 "/usr/libexec/getty Pc" vt100 on secure #ttyv0 "/usr/libexec/getty Pc" cons25 on secure ...
- Отредактируйте файл /etc/rc.conf. Поменяйте имя карты на xn0. Сетевые карты Xen в FreeBSD начинаются с префикса xn.
ifconfig_xn0="inet 192.168.1.103 netmask 255.255.255.0"
[править] Проблемы с запуском FreeBSD в паравиртуальном домене Xen
Если у вас возникли проблемы с выполнением вышеописанной процедуры, убедитесь, что поддержка PAE или везде есть, или её везде нет:
- в гипервизоре Xen;
- в ядре домена dom0;
- в ядре FreeBSD в домене domU.
Подробнее: [1].
В списке рассылки Xen неоднократно сообщалось об успешном запуске FreeBSD по вышеописанной процедуре на гипервизоре Xen 3.0.2. Однако, в более новых версиях появилась ошибка, которая может привести к тому, что домен FreeBSD запускаться не сможет [2].
Если запустить домен не удаётся, и вы получаете сообщение об ошибке:
Error: (22, 'Invalid argument') ERROR: Initial guest OS requires too much space (0xc08MB is greater than 256MB limit)
попробуйте сделать следующее:
%# KERNEL=freebsd-XENU %# objcopy $KERNEL -R __xen_guest %# echo -n "LOADER=generic,GUEST_OS=freebsd,GUEST_VER=7.0,XEN_VER=xen-3.0,BSD_SYMTAB,VIRT_BASE=0xC0000000~" | tr '~' '\000' > __xen_guest %# objcopy $KERNEL --add-section __xen_guest=__xen_guest %# rm __xen_guest
Проблема связана с тем, что Xen 3.0.3 (и старше) требует наличия установки VIRTUAL_BASE=0xC0000000 в секции __xen_guest ядра. Представленная выше последовательность команд выполняет такую модификацию.
Посмотреть секцию __xen_guest ядра можно так:
%# objdump -j __xen_guest -s freebsd-XENU
[править] Получение исходников порта FreeBSD на Xen
You can get a copy of my perforce branch via a cvsup mirror using cvsup10.freebsd.org or cvsup18.freebsd.org. There is more information at: http://wiki.freebsd.org/FreeBSD/Xen I still need to track down a bug in Xen. As far as I can tell writable pagetables don't always preserve the OS-reserved bits.
[править] Инсталляция и запуск в HVM-домене
|
Для выполнения процедуры понадобится:
|
[править] Подготовка хост-системы
Выполните подготовку хост-системы (домена 0 Xen) как описано на странице Инсталляция Xen или другим способом.
В ходе инсталляции FreeBSD доступ к виртуальной машине будет осуществляться через VNC-сервер, встроенный в Xen. По умолчанию сервер привязан к интерфейсу loopback и доступен только по адресу 127.0.0.1.
Если необходимо работать с VNC-консолью с другой машины, можно пойти двумя путями:
- (более безопасный) Перенести порт VNC на неё с помощью SSH (см. подробнее на странице SSH);
- (более простой) Разрешить доступ к VNC-консоли с других машин.
Для этого нужно отредактировать файл /etc/xen/xend-config.sxp, в котором найти и изменить параметры:
(vnc-listen '0.0.0.0')
и
(vnc-password 'PASSWORD')
Если последний параметр не установить, доступ по VNC будет разрешён без пароля.
[править] Проверка на поддержку VMX-расширений
Хост-система должна поддерживать VMX-расширения процессора (см. Аппаратные требования Xen).
Убедиться в наличии поддержки VMX можно так.
Для процессоров Intel:
# xm dmesg | grep VMX (XEN) VMXON is done (XEN) VMXON is done ... (XEN) VMXON is done (XEN) VMXON is done (XEN) VMXON is done #
Если используется процессор AMD:
# xm dmesg | grep -i svm (XEN) AMD SVM Extension is enabled for cpu 0. (XEN) AMD SVM Extension is enabled for cpu 1.
В общем случае:
# xm info | grep caps hw_caps : 178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
hvm-3.0-x86_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.
Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и, если вы этого еще не сделали, задействуйте поддержку VT.
Возможно, BIOS вашей материнской платы искусственно отключает виртуализацию. В этом случае нужно обновить или исправить BIOS (см. например GA-M59SLI-S4).
[править] Подготовка образа инсталляционного диска
Можно использовать непосредственно диск с инсталлятором FreeBSD, а можно предварительно создать с него образ. ISO-образы также могуть быть загружены из Интернета, с одного из зеркал FreeBSD.
Пусть, мы выполняем инсталляцию FreeBSD 7 (что вообще не обязательно), загружаем диск из сети, и инсталляцию также будем выполнять по сети (поэтому будем использовать диск bootonly):
%# cd /Volumes/ISO/FreeBSD %# wget ftp://ftp.ua.freebsd.org/pub/FreeBSD/snapshots/200710/7.0-CURRENT-200710-i386-bootonly.iso
[править] Подготовка конфигурационного файла домена Xen
Необходимо создать конфигурационный файл виртуальной машины, в которой будет работать FreeBSD.
Можно использовать распространяемый с дистрибутивом Xen пример и доработать его, а можно воспользоваться этим примером:
$ grep -v ^# /etc/xen/freebsd-7-hvm | grep -vx '' kernel = "hvmloader" builder='hvm' memory = 1024 shadow_memory = 8 name = "freebsd-7-hvm" vif = [ 'type=ioemu, bridge=service0, mac=00:16:3e:03:00:c3' ] disk = [ 'file:/xen/images/freebsd-7-hvm.img,hda,w', 'file:/Volumes/ISO/FreeBSD/7.0-CURRENT-200710-i386-bootonly.iso,hdc:cdrom,r' ] device_model = 'qemu-dm' boot="d" sdl=0 vnc=1 vncpasswd='' stdvga=0 serial='pty' usb=1
Параметры, использованные в этом конфигурационном файле (с полным списком можно ознакомиться в «Руководстве пользователя Xen»):
- kernel - VMX firmware loader, /usr/lib/xen/boot/vmxloader
- builder - Функции сборки домена. VMX-домены используют vmx builder
- vif - Опционально определяет MAC адрес и/или режим моста для сетевого интерфейса. Если значение MAC не указано, то назначается случайный адрес. Есть возможность задать параметр type=ioemu для использования ioemu в VMX NIC. Если это значение не определено, то vbd используется как в паравиртуальных("нормальных", с модифицированным ядром) доменах.
- disk - Определяет дисковые устройства, к которым гостевой домен должен иметь доступ. Если для домена используется физический носитель в качестве диска, то он должен быть описан строкой типа:
phy:UNAME,ioemu:DEV,MODE,
где UNAME - имя устройства, DEV - имя диска, как его видит домен и MODE принимает значения r для read-only и w для read-write. Если это значение не определено, то ioemu используется как паравиртуальных доменах.
Если используется образ диска, то строка принимает вид:
file:FILEPATH,ioemu:DEV,MODE
Если используется больше одного диска, то они разделяются запятой. Например:
disk = ['file:/var/images/image1.img,ioemu:hda,w', 'file:/var/images/image2.img,ioemu:hdb,w']
- boot - Загрузка с floppy (a), hard disk (c) или CD-ROM (d).
- device_model - Инструмент эмуляции устройств для VMX-домена. Могут быть изменены параметры, приведенные ниже.
- sdl - Задействует библиотеку SDL для отображения графики, по умолчанию равно "0" (отключено)
- vnc - Задействует библиотеку VNC для отображения графики, по умолчанию равно "0" (отключено)
- serial - Перенаправление последовательных портов гостевого домена на реальное устройство.
- usb - Включение поддержки USB без указания специфического устройства. По умолчанию эта функция отключена, в случае же определения параметра usbdevice, ее необходимо задействовать.
- usbdevice - Включение поддержки конкретных устройств. Например, поддержка мыши PS/2 через USB:
usbdevice='mouse'
- localtime - Установка локального времени. По умолчанию равно "0", т.е UTC
- enable-audio - Поддержка звука. Находится в разработке.
- full-screen - Поддержка полноэкранного режима. Находится в разработке.
- nographic - Другой способ перенаправить вывод на последовательный порт. В этом случае опции 'sdl' или 'vnc' не работают. Использование данного режима не рекомендуется.
[править] Подготовка диска для виртуальной машины
В виртуальной машине, на которую будет устанавливаться FreeBSD должен быть свой (виртуальный) жёсткий диск.
В качестве виртуального жёсткого диска можно использовать:
- файл в хост-системе;
- блочное устройство в хост-системе, которым может быть:
- физический жёсткий диски или его раздел;
- том LVM;
- сетевое или другое хранилище, доступное в виде блочного устройства.
В случае если будет использоваться файл, его нужно создать и указать в конфигурационном файле виртуальной машины в качестве диска.
%$ grep disk /etc/xen/freebsd-7-hvm | grep -v ^# disk = [ 'file:/xen/images/freebsd-7-hvm.img,hda,w', 'file:/Volumes/ISO/FreeBSD/7.0-CURRENT-200710-i386-bootonly.iso,hdc:cdrom,r' ]
Создание файла проще всего выполнить с помощью команды dd. Здесь создаётся разреженный файл размером 10G:
%$ sudo dd if=/dev/zero of=/xen/images/freebsd-7-hvm.img bs=1k seek=4096k count=1 1+0 записей считано 1+0 записей написано скопировано 1024 байта (1,0 kB), 4,6e-05 секунд, 22,3 MB/s %$ ls -l /xen/images/freebsd-7-hvm.img -rw-r--r-- 1 root root 4294968320 2007-09-23 12:17 /xen/images/freebsd-7-hvm.img
[править] Первый запуск
После того как
- Xen в домене 0 установлен и настроен;
- Есть образ инсталляционного диска FreeBSD (или доступен сам диск);
- Создан файл для диска виртуальной машины (или доступно нечто вместо него);
- Создан конфигурационный файл новой виртуальной машины
виртуальную машину можно запускать.
Запуск выполняется с помощью команды:
%$ sudo xm create freebsd-7-hvm Using config file "./freebsd-7-hvm". Started domain freebsd-7-hvm
Если старт прошёл успешно,
новый домен появится в списке
доменов, работающих в хост-системе:
%$ sudo xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1000 1 r----- 706.4 freebsd-7-hvm 7 1032 1 ------ 0.5
После того как виртуальная машина запущена, можно подключиться к её экрану с помощью VNC.
Используем vncviewer (в Debian GNU/Linux он находится в пакете xvncviewer):
$ vncviewer 127.0.0.1:0 VNC viewer version 3.3.7 - built Dec 30 2006 12:48:54 Copyright (C) 2002-2003 RealVNC Ltd. Copyright (C) 1994-2000 AT&T Laboratories Cambridge. See http://www.realvnc.com for information on VNC. VNC server supports protocol version 3.3 (viewer 3.3) No authentication needed Desktop name "HVMXEN-freebsd-7-hvm" Connected to VNC server, using protocol version 3.3 ...
Программа покажет экран загрузчика инсталлятора операционной системы.
При загрузке ядра могут возникнуть проблемы.
Если так произошло, нужно попробовать загрузиться с отключенным ACPI.
%# xm destroy freebsd-7-hvm %# xm create freebsd-7-hvm %# vncviewer localhost:0
(в появившемся меню выбрать пункт загрузки с отключенным ACPI).
[править] Инсталляция операционной системы
Инсталляция выполняется традиционно. После того как инсталляция завершится, система уйдёт на перезагрузку и соединение VNC потеряется. Для его восстановления нужно вызывать vncviewer повторно.
[править] Использование виртуальной последовательной консоли
Для того чтобы к HVM-домену с FreeBSD можно было подключаться с помощью команды xm console, необходимо вывести консоль системы на последовательный порт.
Для этого необходимо в конфигурационном файле /boot/loader.conf указать:
console="comconsole"
После этого нужно отредактировать файл /etc/ttys и указать в нём в записи ttyd0 on вместо off и vt100 вместо dialup.
Подробнее:
- Setting Up the Serial Console (англ.)
[править] Паравиртуальные драйверы для HVM-домена с FreeBSD
[править] Дополнительная информация
Нужно подчистить ссылки |
Процедура запуска FreeBSD в паравиртуальном режиме в Xen:
- http://wikitest.freebsd.org/YuanJue
- http://www.yuanjue.net/xen/howto.html
- http://txrx.org/xen/
- http://unix.derkeiler.com/Mailing-Lists/FreeBSD/current/2006-09/msg00553.html
- http://wiki.xensource.com/xenwiki/FreeBSDdomU
- http://wiki.freebsd.org/FreeBSD/Xen
- HOWTO: Create a FreeBSD 8 i386 Xen PV domU (англ.)
Другая информация:
- http://www.fsmware.com/xenofreebsd/7.0/STATUS - текущее состояние порта
- Uptime, FreeBSD on Xen and true love. (or is it stalking? I never can tell.) - статья на kuro5hin
- http://www.nabble.com/Should-Xen-be-a-sub-arch-or-a-build-option--t4670031.html — дискуссия по поводу того, как будет указываться поддержка Xen в конфиге ядра FreeBSD
- http://www.nabble.com/Xen-Status-%3A-FreeBSD-current-as-Dom-U.-tf4629695.html
- http://lists.freebsd.org/pipermail/freebsd-current/2007-August/076400.html
Обсуждения:
- Обсуждение на Sysadmins.ru Xen и FreeBSD, стр. 2, стр. 3 (сохранённая копия)
|
---|