Установка Xen на FreeBSD
С выпуском FreeBSD 8.0 был официально объявлена поддержка DomU Xen, а значит - это дает возможность установить FreeBSD в режиме паравиртуальная и использовать все возможности Xen FreeBSD.
Многие люди ждали этого, например, я ждал ее в течение года и использовал FreeBSD в HVM режиме, но это только режиме эмуляции. Но все-таки дождались! Итак, поехали: [-hide-]Прежде всего мы должны иметь апаратную поддержку виртуализации нашими процессорами. Думаю с этим проблем нет и у Вас такое оборудование есть, а поддержка виртуализации включена в BIOSе. Вы устанавливаете Linux на вашу платформу и в нем устанавливаете гипервизор Xen 3. Я выбрал Debian и установил на него Xen3.0, Вы можете скачать последнюю версию Xen на сайте http://www.xensource.com . Не забудьте скомпилировать hvmloader для поддержки HMV режима. На этом этапе Вы получили гипервизор Xen hypervisor (Dom0) на Linux xena:/etc/xen# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 3692 8 r----- 1799656.1 Подготовьте виртуальную машину для запуска в ней FreeBSD Подготовьте место на диске для виртуальной машины. Я использую LMV том. Скачайте образ FreeBSD8.0. Создайте конфигурационный файлик вашей виртуально машины. У Вас получится ,что-то на подобии этого: xena:/etc/xen#cat FreeBSD8 kernel = "/usr/lib/xen/boot/hvmloader" builder='hvm' memory = 1024 name = "FreeBSD8" vif = [ '' ] disk = [ 'phy:/dev/mylvm0/lvol9,hda,w', 'file:/.1/8.0-RELEASE-i386-dvd1.iso,hdc:cdrom,r' ] boot="cda" vnc=1 vncpasswd='' Запустите виртуальную машину и подключитесь к ней с помощью vncviewer с Вашей рабочей , Вы увидете процесс загрузки FreeBSD и стандартный визард sysinstall. xena:/etc/xen# xm create FreeBSD3 ![]() Установите FreeBSD как Вы обычно это делаете (настройте сеть, она нам понадобится ,чтобы скопировать в домен Dom0, а также установите исходные коды ядра) Когда FreeBSD будет установлена, Вы должны будете скомпилировать ядро с поддержкой Xen. Отредактируйте конфигурационный файлик ядра XEN так как Вам нужно, возможно Вы захотите добавить FIREWALL или драйвер устройства какого-либо. Вы должны добавить необходимые функции непосредственно в ядро, потому ,что не сможете загружать модули в ядро на работающей системе. freebsd#vi /sys/i386/conf/XEN Скомпилируйте ядро (но НЕПЕРЕГРУЖАЙТЕ СЕРВЕР) freebsd# config XEN Kernel build directory is ../compile/XEN Don't forget to do ``make cleandepend && make depend'' freebsd# cd ../compile/XEN ; make cleandepend && make depend ; make ; make install Скопируйте полученое ядро по сети на Dom0 freebsd#cd /boot/kernel/ freebsd#scp kernel : /usr/lib/xen/boot/kernel На FreeBSD отредактируйте /etc/ttys, выключите ttys и добавьте консоль xc0 freebsd#cat /etc/ttys … xc0 "/usr/libexec/getty Pc" vt100 on secure #ttyv0 "/usr/libexec/getty Pc" cons25u on secure ttyv1 "/usr/libexec/getty Pc" cons25u on secure #ttyv2 "/usr/libexec/getty Pc" cons25u on secure #ttyv3 "/usr/libexec/getty Pc" cons25u on secure … Примечание! Когда Вы отключаете виртуальные терминалы, Вы получаете только одну консоль и не сможете входить в систему через виртуальные терминалы. Когда Вы используете PVM режим, Вам не нужны tty, но для черного хода для себя, на случай если ,что-то случится, советую оставить tty (ttyv1) не закомментированым. Это даст Вам возможность войти в систему, если Вам понадобится перегрузить систему FreeBSD опять в HMV, для этого достаточно Alt+F1. Теперь вернемся к Xen и отредактируем конфигурационный файлик виртуально. Вы должны заменить kernel в Вашем конфигурационном файлике, установите путь к скопированому ядру FreeBSD8.0, отключите builder HVM и добавьте несколько extra параМБ. Файл конфигурации будет виглядеть приблизительно так: xena:/etc/xen#cat FreeBSD8 kernel = "/usr/lib/xen/boot/kernel" memory = 1024 name = "FreeBSD3 " vif = [ 'bridge=outeth0', 'bridge=mir111', 'bridge=mir113', 'bridge=mir114', 'bridge=mir115' ] disk = [ 'phy:/dev/mylvm0/lvol9,hda1,w' ] extra = "boot_verbose=1" extra += ",vfs.root.mountfrom=ufs:/dev/ad0s1a" extra += ",kern.hz=100" pae=1 В моём случае я использовал FreeBSD для сетевого анализатора для двух каналов интернет провайдеров и подсоеденил 5 сетевых интерфейсов, Вы делайте то, ,что нужно Вам. И наконец, Вы можете перезагрузить Вашу FreeBSD в DomU паравиртуальном (PVM) режиме. xena:/etc/xen#xm destroy FreeBSD3 xena:/etc/xen# xm create -c FreeBSD3 Copyright (c) 1992-2009 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 8.0-RELEASE #4: Fri Nov 27 14:31:55 EET 2009 root@f8.vicotec.com.ua:/usr/src/sys/i386/compile/XEN Xen reported: 1994.999 MHz processor. Timecounter "ixen" frequency 1000000000 Hz quality 0 CPU: Intel(R) Xeon(R) CPU E5405 @ 2.00GHz (1995.00-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x10676 Stepping = 6 Features ![]() Features2 ![]() AMD Features ![]() AMD Features2 ![]() TSC: P-state invariant Instruction TLB: 4 KB Pages, 4-way set associative, 128 entries 1st-level instruction cache: 32 KB, 8-way set associative, 64 byte line size 1st-level data cache: 32 KB, 8-way set associative, 64 byte line size L2 cache: 6144 kbytes, 16-way associative, 64 bytes/line real memory = 1073741824 (1024 MB) Physical memory chunk(s): 0x000000000074c000 - 0x000000003ecb2fff, 1045852160 bytes (255335 pages) avail memory = 1041969152 (993 MB) APIC: Using the MPTable enumerator. SMP: Added CPU 0 (BSP) ULE: setup cpu 0 [XEN] IPI cpu ![]() [XEN] IPI cpu ![]() Event-channel device installed. random: kbd0 at kbdmux0 nfslock: pseudo-device mem: Pentium Pro MTRR support enabled null: io: Grant table initialized xenbus0: on motherboard xc0: on motherboard [XEN] xen_rtc_probe: probing Hypervisor RTC clock rtc0: on motherboard [XEN] xen_rtc_attach: attaching Hypervisor RTC clock rtc0: registered as a time-of-day clock (resolution 1000000us) npx0: INT 16 interface Device configuration finished. procfs registered Timecounters tick every 10.000 msec ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to deny, logging disabled lo0: bpf attached [XEN] hypervisor wallclock nudged; nudging TOD. xbd0: 10000MB at device/vbd/769 on xenbus0 xbd0: attaching as ad0 GEOM: new disk ad0 xn0: at device/vif/0 on xenbus0 xn0: bpf attached xn0: Ethernet address: 00:16:3e:59:50:18 xn1: at device/vif/1 on xenbus0 xn1: bpf attached xn1: Ethernet address: 00:16:3e:7e:17:4b xn2: at device/vif/2 on xenbus0 xn2: bpf attached xn2: Ethernet address: 00:16:3e ![]() xn3: at device/vif/3 on xenbus0 xn3: bpf attached xn3: Ethernet address: 00:16:3e:5a:c5:f7 xn4: at device/vif/4 on xenbus0 xn4: bpf attached xn4: Ethernet address: 00:16:3e ![]() GEOM: ad0s1: geometry does not match label (16h,63s != 255h,63s). Trying to mount root from ufs:/dev/ad0s1a rtc0: [XEN] xen_rtc_gettime rtc0: [XEN] xen_rtc_gettime: wallclock 1252060496 sec; 285148455 nsec rtc0: [XEN] xen_rtc_gettime: uptime 7272294 sec; 498480766 nsec rtc0: [XEN] xen_rtc_gettime: TOD 1259332790 sec; 783629221 nsec start_init: trying /sbin/init login: Наслаждайтесь! Заходите в FreeBSD и используйте ее. freebsd# uname -a FreeBSD freebsd.ita.com.ua 8.0-RELEASE FreeBSD 8.0-RELEASE #4: Fri Nov 27 14:31:55 EET 2009 root@freebsd.ita.com.ua:/usr/src/sys/i386/compile/XEN i386 В Xen: xena:/etc/xen# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 3692 8 r----- 1800450.2 FreeBSD 117 1024 1 r----- 137712.0 Вот и все. Надеюсь у Вас все получилось.[-hide-] |