Ceci & Tati

Howto Gentoo Server with Xen Dom0 2.6.21 and DomUs 2.6.25 – part 1

от на юли.11, 2008, категории Линукс, Мрежата

Преди да започна да пиша това howto срешнах доста спънки 🙁 , но в крайна сметка всичко заработи както трябва. Преди да се спра на Xen паравиртуализация пробвах пълна виртуализация с Qemu и KVM. Сториха ми се  малко бавнички за моя проект :), както и не ми хареса идеята за VNC връзка към виртуалната машина, накратко много ресурс за нищо.

1. Кратка информация.

За пълната виртуализация самия процесор трябва да поддържа (хардуерна) виртуализация, такива са изискванията на Xen, Qemu и KVM!.

egrep ‘(vmx|svm)’ /proc/cpuinfo

Ако тази команда не ви върне никакъв отговор, следователно трябва да забравите, че с Xen или KVM ще може да подкарате например WindowsXP или нещо различно от линукс!
Накратко за Intel процесори в реда flags: трябва да има „vmx“, а за AMD процесори в реда flags: трябва да има  „svm“.

Хардуерът ми е следния:

INTEL-1 src # cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2400.088
cache size : 4096 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic sep mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc pni ssse3 cx16 lahf_lm
bogomips : 4801.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2400.088
cache size : 4096 KB
physical id : 1
siblings : 1
core id : 0
cpu cores : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic sep mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc up pni ssse3 cx16 lahf_lm
bogomips : 4801.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2400.088
cache size : 4096 KB
physical id : 2
siblings : 1
core id : 0
cpu cores : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic sep mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc up pni ssse3 cx16 lahf_lm
bogomips : 4801.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2400.088
cache size : 4096 KB
physical id : 3
siblings : 1
core id : 0
cpu cores : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu de tsc msr pae cx8 apic sep mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc up pni ssse3 cx16 lahf_lm
bogomips : 4801.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

Една малка забележка: в горните редове никъде във flags: не пише „vmx“, няма и как да пише, защото зареденото ядро е Dom0, а не обикновено ядро без Xen поддръжка! Но нека тогава видим какво поддържа моето Dom0 ядро:

INTEL-1 / # xm dmesg | grep hvm -i
(XEN) HVM: VMX enable

От горния ред веднага се разбира, че Dom0 поддържа HVM (аналогично процесора има vmx) и на DomUs може да се инсталира WindowsXP :).

INTEL-1 src # lspci
00:00.0 Host bridge: Intel Corporation E7230/3000/3010 Memory Controller Hub
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.4 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 (rev 01)
00:1c.5 PCI bridge: Intel Corporation 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
01:00.0 PCI bridge: Intel Corporation 6702PXH PCI Express-to-PCI Bridge A (rev 09)
04:00.0 Ethernet controller: Intel Corporation 82573E Gigabit Ethernet Controller (Copper) (rev 03)
04:00.3 Serial controller: Intel Corporation Active Management Technology – SOL (rev 03)
04:00.4 IPMI SMIC interface: Intel Corporation 82573E KCS (Active Management) (rev 03)
05:01.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
05:04.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)
05:05.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)


Забравих да напиша, че след като си сглобих машината първата ми работа беше да вляза в BIOS-a и да разреша хардуерната виртуализация. В противен случай нямаше да ми е разрешен „vmx“ флага, въпреки че процесора я поддържа!

2. Инсталиране на Gentoo. За разлика от останалите Linux операционни системи Gentoo се инсталира малко по-продължително, за допълнителна информация моеже да прочетете тук.

2.1. Разделяне на харддиска.

INTEL-1 ~ # fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda1 * 1 12 96358+ 83 Linux
/dev/sda2 13 377 2931862+ 82 Linux swap / Solaris
/dev/sda3 378 11927 92775375 83 Linux
/dev/sda4 11928 60801 392580405 83 Linux

2.2. Редактиране на /etc/fstab

cat /etc/fstab
# /etc/fstab: static file system information.

#
UUID=11bcad6d-f31d-4173-a7f1-e3702c8a1bf3 /boot reiserfs noatime 1 2
UUID=da7cac60-ed25-4fe3-8ecf-4b38e568a0cc none swap sw 0 0
UUID=a388882e-d864-4e87-87b7-dc3f60bb40aa / reiserfs noatime 0 1
UUID=3dca2705-caaf-4517-a859-1da90cac90a7 /home xfs noatime 0 1

/dev/cdrom /mnt/cdrom audo noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0

shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
none /proc proc defaults 0 0

Ако се чудите от къде се взе това UUID, то се получава по следния начин.

INTEL-1 ~ # vol_id /dev/sda1 | grep UUID_ENC
ID_FS_UUID_ENC=11bcad6d-f31d-4173-a7f1-e3702c8a1bf3

Идеята е, например ако харддиска от слот „sda“ бъде преместен на слот „sdb“, пак да зареди операционната система, без да се редактират файловете grub.conf и fstab.

2.3. Редактиране на /etc/make.conf

Ако искате да оптимизирате вашата операционна система спрямо хардуера ви, наблегнете на секцията „CFLAGS and CXXFLAGS“. За да определите точните променливи прочетете  тук.

Моите  CFLAGS, USE и GENTOO_MIRRORS са следните.

INTEL-1 xen # cat /etc/make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /etc/make.conf.example for a more detailed example.
CFLAGS=“-march=nocona -O2 -pipe -fomit-frame-pointer“
CXXFLAGS=“${CFLAGS}“
# This should not be changed unless you know exactly what you are doing. You
# should probably be using a different stage, instead.
CHOST=“x86_64-pc-linux-gnu“

GENTOO_MIRRORS=“http://mirrors.ludost.net/gentoo“

USE=“-gtk -X -gnome -kde samba jpeg php apache2 bzip cgi curl ftp gd imap mysql posix postgres spell snmp truetype xml zip xinetd utf8 ldap slang radius clamav opensslcrypt bzip2 logrotate odbc extensions lm_sensors“

2.4. Избор на профил.

За профил съм избрал „/etc/make.profile -> /usr/portage/profiles/default/linux/amd64/2008.0/server“

Забележка: В точка 2 съм наблегнал на по-интересните моменти по време на инсталиране, а не на цялостното инсталиране. Това е един дълъг и сладък процес, който понякога може да отнеме доста време 🙂 .

3. Инсталиране на Xen.

След като сте инсталирали Gentoo на вашият компютър, рестартирайте го и се логнете в конзолата, започва забавната част :).
Задължително прочетете тази статия преди да продължите с Xen инсталацията.

Малко информация за моят portage преди инсталацията.

INTEL-1 ~ # emerge –info
Portage 2.1.4.4 (default/linux/amd64/2008.0/server, gcc-4.1.2, glibc-2.6.1-r0, 2.6.21-xen x86_64)
===========================
System uname: 2.6.21-xen x86_64 Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
Timestamp of tree: Fri, 04 Jul 2008 11:03:01 +0000
app-shells/bash: 3.2_p33
dev-lang/python: 2.4.4-r13
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox: 1.2.18.1-r2
sys-devel/autoconf: 2.61-r1
sys-devel/automake: 1.9.6-r2, 1.10.1
sys-devel/binutils: 2.18-r1
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.23-r3
ACCEPT_KEYWORDS=“amd64″
CBUILD=“x86_64-pc-linux-gnu“
CFLAGS=“-march=nocona -O2 -pipe -fomit-frame-pointer“
CHOST=“x86_64-pc-linux-gnu“
CONFIG_PROTECT=“/etc /var/bind“
CONFIG_PROTECT_MASK=“/etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d“
CXXFLAGS=“-march=nocona -O2 -pipe -fomit-frame-pointer“
DISTDIR=“/usr/portage/distfiles“
FEATURES=“distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch“
GENTOO_MIRRORS=“http://mirrors.ludost.net/gentoo“
PKGDIR=“/usr/portage/packages“
PORTAGE_RSYNC_OPTS=“–recursive –links –safe-links –perms –times –compress –force –whole-file –delete –stats –timeout=180 –exclude=/distfiles –exclude=/local –exclude=/packages“
PORTAGE_TMPDIR=“/var/tmp“
PORTDIR=“/usr/portage“
SYNC=“rsync://rsync.gentoo.org/gentoo-portage“

3.1. Подготовка за инсталиране:

Определяне с какви възможности да се компилират пакетите.

INTEL-1 portage # cat /etc/portage/package.use
net-firewall/iptables extensions ipv6
app-misc/mc -slang -unicode samba
app-emulation/xen-tools hvm screen
dev-lang/python sqlite
dev-lang/php ctype pcre session unicode

Разрешавам последните нестабилни версии на програмите да се инсталират. Уж нестабилни, но до сега не съм патил :).

INTEL-1 portage # cat /etc/portage/package.keywords
app-emulation/xen ~x86
app-emulation/xen-tools ~x86
sys-kernel/xen-sources ~x86

3.2 Инсталиране на сорса:

INTEL-1 xen # emerge -av xen-sources xen-tools xen

These are the packages that would be merged, in order:

Calculating dependencies… done!
[ebuild R ] sys-kernel/xen-sources-2.6.21 USE=“-build -symlink“ 0 kB
[ebuild R ] app-emulation/xen-tools-3.2.1 USE=“hvm screen -custom-cflags -debug -doc -pygrub“ 0 kB
[ebuild R ] app-emulation/xen-3.2.1 USE=“-custom-cflags -debug -pae“ 0 kB

Total: 3 packages (3 reinstalls), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No]

3.3. Настройка на Xen и мрежата.

touch /etc/xen/scripts/network-dummy

nano /etc/xen/xend-config.sxp
#(network-script network-bridge)
(network-script network-dummy)

Създавам празен файл „/etc/xen/scripts/network-dummy“. Редактирам файла „/etc/xen/xend-config.sxp“, коментирайки реда „(network-script network-bridge)“ и добавяйки реда „(network-script network-dummy)“.

nano /etc/conf.d/net
config_eth0=( „null“ )

vlans_eth0=“117 118″
config_eth0_117=( „null“ )
config_eth0_118=( „null“ )

config_eth1=( „null“ )

config_eth2=( „null“ )
config_eth3=( „null“ )

bridge_xenbr0=“eth0″
config_xenbr0=(
„192.168.10.8 netmask 255.255.255.0“
)
brctl_xenbr0=(
„setfd 0“
„sethello 0“
„stp off“
)

bridge_xenbr1=“eth0.117″
config_xenbr1=(
„10.10.5.8 netmask 255.255.255.0“
)
brctl_xenbr1=(
„setfd 0“
„sethello 0“
„stp off“
)

#bridge_xenbr2=““
config_xenbr2=( „null“ )
brctl_xenbr2=(
„setfd 0“
„sethello 0“
„stp off“
)

#bridge_xenbr3=““
config_xenbr3=( „null“ )
brctl_xenbr3=(
„setfd 0“
„sethello 0“
„stp off“
)

#bridge_xenbr4=““
config_xenbr4=( „null“ )
brctl_xenbr4=(
„setfd 0“
„sethello 0“
„stp off“
)

bridge_xenbr5=“eth0.118″
config_xenbr5=(
„10.10.6.8 netmask 255.255.255.0“
)
brctl_xenbr5=(
„setfd 0“
„sethello 0“
„stp off“
)

4. Инсталиране на Xen0 ядро (xen-sources-2.6.21)

4.1. Подготовка за компилиране на новото Dom0 ядро.

След:

INTEL-1 ~ # ls /usr/src/linux -l
lrwxrwxrwx 1 root root 16 Jul  8 15:46 /usr/src/linux -> linux-2.6.21-xen

cd /usr/src/linux
make menuconfig

наблегнете много на долните менюта, за да няма после, ама аз не …. :).

Processor type and features –>
Subarchitecture Type (PC-compatible) –>
Processor family (Generic-x86-64) –>
[*] Enable Xen compatible kernel
/dev/cpu/microcode – Intel CPU microcode support
/dev/cpu/*/msr – Model-specific register support
/dev/cpu/*/cpuid – CPU information support
[*] Symmetric multi-processing support
Preemption Model (No Forced Preemption (Server)) –>
[*] Preempt The Big Kernel Lock
Memory model (Flat Memory) –>
(32) Maximum number of CPUs (2-256)
[*] Support for hot-pluggable CPUs (EXPERIMENTAL)
[*] kernel crash dumps (EXPERIMENTAL)
(0x200000) Physical address where the kernel is loaded
[*] Enable seccomp to safely compute untrusted bytecode
[ ] Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)
Timer frequency (100 HZ) –>
[ ] Function reordering

В горното меню съм включил Xen поддръжка в ядрото което по-късно ще компилирам.

XEN –>
[*] Privileged Guest (domain 0)
<*> Backend driver support
<*> Block-device backend driver
<*> Block-device tap backend driver
<*> Network-device backend driver
[ ] Pipelined transmitter (DANGEROUS)
<*> Network-device loopback driver
<*> PCI-device backend driver
PCI Backend Mode (Virtual PCI) –>
[ ] PCI Backend Debugging
< > TPM-device backend driver
< > Block-device frontend driver
< > Network-device frontend driver
< > Framebuffer-device frontend driver
[*] Scrub memory before freeing it to Xen
[*] Disable serial port drivers
<*> Export Xen attributes in sysfs
Xen version compatibility (no compatibility code) –>

Networking –>
Networking options –>
TCP/IP networking
<*> IP: tunneling
<*> 802.1d Ethernet Bridging

„IP: tunneling“ се използва когато Xen ще използва DomU с поддръжка на „hvm“ (на виртуалната машината ще бъде инсталиран Win98, WinXP или нещо подобно). При зареждането на дадената виртуална машина, освен стандартния си мрежов интерфейс примерно „vif14.0“ се зарежда и „tap0“ интерфейс. За целта веднага компилирам и инсталирам необходимите пакети за управление на тези мрежови интерфейси.

emerge -av sys-apps/usermode-utilities net-misc/bridge-utils

echo „tun“ >> /etc/modules.autoload.d/kernel-2.6

Device Drivers –>
Block devices –>
<M> Loopback device support

echo „loop max_loop=256“ >> /etc/modules.autoload.d/kernel-2.6

Device Drivers –>
Character devices –>
< > ACP Modem (Mwave) support

ACP Modem поддръжката е забраних, защото постоянно ми гърмеше компилирането на ядрото!

4.2. Инсталиране и настройка на genkernel.

emerge -av genkernel

wget http://blog.sharcom.org/docs/files/xen/xen0.tar
tar -xf xen0.tar -C /usr/share/genkernel/
rm xen0.tar

Редактиране на файла „/etc/genkernel.conf“

…….

MENUCONFIG=“yes“
BOOTSPLASH=“no“
ARCH_OVERRIDE=“xen0″
BOOTLOADER=“grub“

……

Във файла „genkernel.conf“ горните променливи трябва да са с показаните стойностите, ако някоя от горните променливи липсва то е добавете обезателно.

4.3. Компилиране и инсталиране на новото ядро и модулите за него с помоща на  genkernel.

genkernel all –kernel-config=/config-xen0-2.6.21-xen

Като config-xen0-2.6.21-xen е подготвен предварително от мен и можете да го изтеглите от тук.

4.4 Редактиране на файла „/boot/grub/menu.lst“
След като genkernel е компилирал и инсталирал новото ви ядро и модулите за него, задължително си редактирайте файла /boot/grub/menu.lst (символична връзка на файла grub.conf), той трябва да изглежда така.

cat /boot/grub/menu.lst
default 0
timeout 5

#dolnia red zadalvitelno go komentirajte ako vi e raskomentiran 4e stava mazalo!
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux (2.6.21-xen Dom0)
root (hd0,0)
kernel /boot/xen.gz dom0_mem=1024M
module /boot/kernel-genkernel-xen0-2.6.21-xen root=/dev/ram0 init=/linuxrc console=tty0 real_root=UUID=a388882e-d864-4e87-87b7-dc3f60bb40aa
module /boot/initramfs-genkernel-xen0-2.6.21-xen

Отначало пробвах с „dom0_mem=98M“, системата направо заби (като свиня в тиня) при зареждането, затова му зададох стойност 1GB и работата заспа. Също така отначало бях пропуснал „console=tty0“ и машината ми работеше със скоростта на мравка и се чудех какво стана :).

След като приключите, рестартирате компютъра и зареждате с новото ядро 🙂 .

__ __ _____ ____ _
\ \/ /___ _ __ |___ / |___ \ / |
\ // _ \ ‘_ \ |_ \ __) | | |
/ \ __/ | | | ___) | / __/ _| |
/_/\_\___|_| |_| |____(_)_____(_)_|

(XEN) Xen version 3.2.1 (root@(none)) (gcc version 4.1.1 (Gentoo 4.1.1-r3)) Mon Jun 9 22:42:26 GMT 2008
(XEN) Latest ChangeSet: unavailable
(XEN) Command line: dom0_mem=1024M
(XEN) Video information:
(XEN) VGA is text mode 80×25, font 8×16
(XEN) VBE/DDC methods: V2; EDID transfer time: 2 seconds
(XEN) Disc information:
(XEN) Found 1 MBR signatures
(XEN) Found 1 EDD information structures
(XEN) Xen-e820 RAM map:

4.5. Зареждане на Xen демона.

/etc/init.d/xend start
/etc/init.d/xendomains start

rc-update add xend default
rc-update add xendomains default

5. Инсталиране на WindowsXP на DomU.

5.1. Създавам един празен имидж „WinXP.img“ на който по-късно ще инсталирам WindowsXP, както и копирам лицензирания си 🙂 windows на имидж „winxp.iso“.

mkdir /home/xen
dd if=/dev/zero of=/home/xen/images/WinXP.img bs=1M count=4096
dd if=/dev/cdrom of=/home/xen/winxp.iso

5.2. Създавам файла „/etc/xen/winxp“

kernel = „/usr/lib/xen/boot/hvmloader“
builder = ‘hvm’
memory = 512
name = „winxp“
vcpus = 1

#vif = [ ‘type=ioemu, bridge=xenbr0’ ]
vif = [ ‘type=ioemu, mac=00:16:3e:09:f0:12, bridge=xenbr0’, ‘type=ieomu, mac=00:16:3e:09:f0:13, bridge=xenbr1’]

disk = [ ‘tap:aio:/home/xen/WinXP.img,ioemu:hda,w’ , ‘tap:aio:/home/xen/winxp.iso,ioemu:hdc:cdrom,r’ ]

device_model = ‘/usr/lib/xen/bin/qemu-dm’
ne2000=0
boot=’d’
vnc=1
#10.10.5.8 e adresa na edin ot morejvite interfeisi na dom0
vnclisten=’10.10.5.8′
vncviewer=1
sdl=0

5.3. Инсталиране на Windows

INTEL-1 / # xm create winxp
Using config file „/etc/xen/winxp“.
VNC= 1
Started domain winxp

INTEL-1 / # xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 4 r–– 1238.4
winxp 15 512 1 -b–- 10.0

vncviewer 10.10.5.8

Чрез VNC клиент се логвате към дадената DomU машина и започвате спокойно да си инсталирате windows-a, след като приключите с инсталацията не забравяйте да промените реда boot=’d’ на boot=’c’ във файла „/etc/xen/winxp“

snapshot7a.png

6. Инсталиране на Gentoo на DomU.

6.1. Компилиране и инсталиране на DomU ядро и модулите за него.

cd /usr/src/linux-2.6.25-gentoo-r6/
ARCH=i386 make menuconfig

Processor type and features –>
[ ] Tickless System (Dynamic Ticks)
[ ] High Resolution Timer Support
[*] Symmetric multi-processing support
Subarchitecture Type (PC-compatible) –>
[*] Single-depth WCHAN output
[*] Paravirtualized guest support –>
Processor family (Core 2/newer Xeon) –>
Generic x86 support
HPET Timer Support
(32) Maximum number of CPUs (2-255)
[ ] SMT (Hyperthreading) scheduler support
[*] Multi-core scheduler support
Preemption Model (No Forced Preemption (Server)) –>
[ ] Machine Check Exception
[*] Enable VM86 support
< > Toshiba Laptop support
< > Dell laptop support
[ ] Enable X86 board specific fixups for reboot
/dev/cpu/microcode – Intel IA32 CPU microcode support
/dev/cpu/*/msr – Model-specific register support
/dev/cpu/*/cpuid – CPU information support
High Memory Support (64GB) –>
Memory split (3G/1G user/kernel split) –>
-*- PAE (Physical Address Extension) Support
Memory model (Flat Memory) –>
-*- 64 bit Memory and IO resources (EXPERIMENTAL)
[ ] Allocate 3rd-level pagetables from highmem
[ ] Math emulation
[ ] MTRR (Memory Type Range Register) support
[*] Enable kernel irq balancing
[*] Enable seccomp to safely compute untrusted bytecode
Timer frequency (100 HZ) –>
[ ] kexec system call
[*] kernel crash dumps (EXPERIMENTAL)
(0x200000) Physical address where the kernel is loaded
[ ] Build a relocatable kernel (EXPERIMENTAL)
(0x100000) Alignment value to which kernel should be aligned
[*] Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL)
[*] Compat VDSO support

Bus options (PCI etc.) –>
[ ] PCI support
[ ] ISA support
[ ] MCA support
< > NatSemi SCx200 support
PCCard (PCMCIA/CardBus) support –>

Моят „.config“ файл може да изтеглите от тук.

ARCH=i386 make
ARCH=i386 make modules_install
cp /usr/src/linux-2.6.25-gentoo-r6/vmlinux /boot/kernel-xenU-2.6.25-xen

Xen не работи с „/usr/src/linux-2.6.25-gentoo-r6/arch/i386/boot/bzImage“ файла, той работи с „.ELF“ формат на ядрото, а това е файла „/usr/src/linux-2.6.25-gentoo-r6/vmlinux“ който в случая е с размер 5MB.
Модулите на това ядро са инсталирани (намират се) в „/lib/modules/2.6.25-gentoo-r6“, но на Dom0 не са му нужни и те стоят като архив 🙂 . По-късно като инсталирам Gentoo-DomUs OS тези модули ще ги копирам … .

6.2. Инсталиране на Gentoo-DomU OS(Прави се по същия начин както и Gentoo-DomU OS в точка 3, без да се инсталира ядро, модули и бут менажер).

dd if=/dev/zero of=/home/xen/gentoo-i386-1 bs=1M seek=4095 count=1
mkreiserfs -f /home/xen/gentoo-i386-1

mkdir -p /mnt/gentoo
mount -o loop /home/xen/gentoo-i386- /mnt/gentoo

dd if=/dev/zero of=/mnt/gentoo/swap bs=1M count=256
mkswap /mnt/gentoo/swap

#След което си изтегляте наново stage3 ако не го пазите вече и last-portage и продължавате да си инсталирате gentoo-domU по стандартния си начин.

cp -a /lib/modules/2.6.25-gentoo-r6/ /mnt/gentoo/lib/modules
cp /etc/make.conf /mnt/gentoo/etc/
cp -R /etc/portage /mnt/gentoo/etc/

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
вече се намирате в root-a na Gentoo-DomU OS!

Инсталирате си каквото се сетите 🙂 на воля и накрая редактирате файла „/etc/inittab“:

в секцията „# TERMINALS“ като последен ред добавяте реда:
co:2345:respawn:/sbin/agetty hvc0 9600 vt100-nav

echo hvc0 >> /etc/securetty

Горните два реда са необходима защото няма как иначе да се логнете в конзолата на DomUs OS. Стандартната конзола /dev/ttyX забива точно преди логина, за целта използвам конзолата на Xen – hvc която работи отлично!

6.3. Създавам файла “/etc/xen/gentoo-i386-1″

# general
name = „gentoo-i386-1“;
memory = 512;

# booting
kernel = „/boot/kernel-xenU-2.6.25-xen“;

extra = „console=hvc0“;
pae = 1;

# virtual harddisk
disk = [ „file:/home/xen/gentoo-i386-1,xvda,w“ ];
root = „/dev/xvda ro“;

# virtual network
vif = [ ‘mac=00:01:02:33:44:a1, bridge=xenbr2’, ‘mac=00:01:02:33:44:a2, bridge=xenbr3’ , ‘mac=00:01:02:33:44:a3, bridge=xenbr0’ ];
#dhcp = „dhcp“;

cpus = „3“;

6.4. Зареждане на DomU OS – gentoo-i386-1

INTEL-1 ~ # xm create gentoo-i386-1 -c
Using config file „/etc/xen/gentoo-i386-1“.
Started domain gentoo-i386-1
Reserving virtual address space above 0xf57fe000
Linux version 2.6.25-gentoo-r6 (root@INTEL-1) (gcc version 4.1.2 (Gentoo 4.1.2 p1.1)) #1 SMP Fri Jul 4 14:54:01 GMT 2008
BIOS-provided physical RAM map:
Xen: 0000000000000000 – 000000000009f000 (usable)
Xen: 0000000000100000 – 0000000020000000 (usable)
0MB HIGHMEM available.
512MB LOWMEM available.
Scan SMP from c0000000 for 1024 bytes.
Scan SMP from c009fc00 for 1024 bytes.
Scan SMP from c00f0000 for 65536 bytes.
NX (Execute Disable) protection: active
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 131072
HighMem 131072 -> 131072
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 131072
DMI not present or invalid.
Allocating PCI resources starting at 30000000 (gap: 20000000:e0000000)
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
Kernel command line: root=/dev/xvda ro console=hvc0
Local APIC disabled by BIOS – you can enable it with „lapic“
Enabling fast FPU save and restore… done.
Enabling unmasked SIMD FPU exception support… done.
Initializing CPU#0
PID hash table entries: 2048 (order: 11, 8192 bytes)
Detected 2400.084 MHz processor.
Console: colour dummy device 80×25
console [hvc0] enabled
………
………
* Setting system clock using the hardware clock [UTC] … [ ok ]
* Configuring kernel parameters … [ ok ]
* Updating environment … [ ok ]
* Cleaning /var/lock, /var/run … [ ok ]
* Cleaning /tmp directory … [ ok ]
* Setting hostname to gentoo-i386-1 … [ ok ]
* Loading key mappings … [ ok ]
* Setting terminal encoding to utf8 … [ ok ]
* Setting user font … [ ok ]
* Starting lo
* Bringing up lo
* 127.0.0.1/8
[ ok ]
* Adding routes
* 127.0.0.0/8 … [ ok ]
* Initializing random number generator … [ ok ]
INIT: Entering runlevel: 3
* Starting syslog-ng … [ ok ]
* Starting eth0
* Bringing up eth0
* 192.168.111.3
[ ok ]
* Starting eth1
* Bringing up eth1
* 192.168.113.3
[ ok ]
* Adding routes
* default gw 192.168.113.1 … [ ok ]
* Starting eth2
* Bringing up eth2
* 192.168.116.1
[ ok ]
* Mounting network filesystems … [ ok ]
* Checking proftpd configuration … [ ok ]
* Starting proftpd … [ ok ]
* Starting sshd … [ ok ]
* Starting vixie-cron … [ ok ]
* Starting local … [ ok ]

This is gentoo-i386-1.sharcom.org (Linux i686 2.6.25-gentoo-r6) 13:13:54

gentoo-i386-1 login:

6.5. Кратки допълнения:

gentoo-i386-1 login: root
Password:
Last login: Thu Jul 10 17:18:16 2008 on hvc0
root@gentoo-i386-1 ~ # cat /etc/conf.d/local.start
# /etc/conf.d/local.start

# This is a good place to load any misc programs
# on startup (use &>/dev/null to hide output)

#/usr/sbin/pppoe-start

/usr/sbin/ethtool -K eth0 tx off
/usr/sbin/ethtool -K eth1 tx off
/usr/sbin/ethtool -K eth2 tx off

root@gentoo-i386-1 ~ #

След като навързах две три виртуални машини последователно реших да пробвам как работи шейпването (tc iproute2), беше пълен провал 🙁 , бях задал 100kbit upload на eth0 но се получи 230kbit upload. След като се поразрових за този проблем, разбрах че чек сумата на пакетите е грешна наблюдавайки с „tcpdump -i eth0 -n -vv“ и решението било да се изключи „tx off“ на всички виртуални мрежови карти за да може шейпърите да заработят коректно.

root@gentoo-i386-1 ~ # cat /etc/conf.d/net

config_eth0=( „192.168.111.3 netmask 255.255.255.0“ )
config_eth1=( „192.168.113.3 netmask 255.255.255.0“ )
routes_eth1=( „default gw 192.168.113.1“ )
config_eth2=( „192.168.116.1 netmask 255.255.255.0“ )

root@gentoo-i386-1 ~ #

root@gentoo-i386-1 ~ # cat /etc/fstab
#

/dev/xvda / reiserfs noatime 0 1
/swap none swap sw 0 0

proc /proc proc defaults 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
root@gentoo-i386-1 ~ #

Използвана литература:

Setup config:
http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo
http://gentoo-wiki.com/HOWTO_Virtual_Xen_Servers_and_Gentoo
http://www.linuxtopia.org/online_books/centos5/centos_5_xen_virtualization/index.html
http://www.opennet.ru/base/sys/xen_guide.txt.html
http://jailtime.org/
https://help.ubuntu.com/community/XenVirtualMachine

Network config:
http://renial.net/weblog/2007/02/27/xen-vlan/
http://wiki.xensource.com/xenwiki/XenNetworking
http://www.felipe-alfaro.org/blog/2006/07/21/xen-network
http://www.shorewall.net/XenMyWay-Routed.html


5 Comments for this entry

  • Илия Няголов

    Може и да не редактирате файла /etc/genkernel, а да пробвате това:

    genkernel all –kernel-config=/usr/src/config-xen –no-mrproper –arch-override=x86-xen0 –kerneldir=/usr/src/linux-2.6.21-xen/

    Ако ви вдигне някаква грешка то добавете следния ред в файла /usr/share/genkernel/x86-xen0:
    ARCH=“x86_64″

  • Марто

    С какъв инструмент наблюдаваш машината? Имам същата, но не мога да намеря нищо прилично за наблюдаване на параметрите на хардуера (температура и разни други екстри).

  • Илия Няголов

    До Марто. Аз ползвам Cacti + SNMP + Perl/Scripts и съм много доволен. Наблюдавам броя на процесите, натоварване на ядрата, заетостта на памет, натоварването на виртуалните машини, трафика на интерфейсите и т.н.т.
    Да се надявам че поне малко съм ти бил полезен :).

  • Ник

    Всичкото Cacti+SNMP на реалната мащина ли е инсталирано? Не е ли загуба на прекалено много ресурс по този начин? Питам, тъй като аз самия доста се замислям дали да не подходя по подобен начин, но си мисля че е по-добре да се инсталира на специално отделена за това виртуална машина, да няма мешавия dom0 с такива неща….

  • Илия Няголов

    Всичко е инсталирано на Dom0 и не виждам особено да се мъчи :). На мен едната DomU е виртуална хостинг машина, а друга DomU е билинг система за по-специални клиенти.

Вашият коментар

*
За да докажете че не сте бот, въведете този код
Anti-Spam Image

Нещто не намирате ли?

Потърси в блога ми:

Моля Ви не прекалявайте с информацията!