ГлавнаяРегистрацияВходВ закладки

Главная » Статьи » FreeBSD » Xen
Установка Xen на FreeBSD
Автор: admin  Раздел: Xen
С выпуском 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
Featuresxbfebfbff
Features2xce33d
AMD Featuresx20100000
AMD Features2x1
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 irq=128 vector=RESCHEDULE_VECTOR (0)
[XEN] IPI cpu irq=129 vector=CALL_FUNCTION_VECTOR (1)
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:3ee:3e:5a
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:3e8:59:38
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-]
Просмотров: 7445
Дата: 2011-07-15 01:06:06
Комментариев: 0
Источник: