Debian – instalacja xen
apt-get install xen-hypervisor-4.0-amd64 linux-image-2.6.32-5-xen-amd64
Jeśli ma być nie tylko parawirtualizacja, ale HVM to należy zainstalować też:
# apt-get install xen-qemu-dm-4.0
w /boot/grub/grub.cfg zmienić default na 4
# reboot
i teraz można uruchamiać maszyny wirtualne przez:
# xm create -c /xen/test.cfg
Xen – konfiguracja dwóch interfejsów eth0 i eth1 jako bridge
Aby uruchomić w xen dwa interfejsy widoczne dla gości jako bridge należy stworzyć skrypt, np. o nazwie /etc/xen/scripts/network-multi-bridge a w nim:
#!/bin/sh
dir=$(dirname "$0")
script=/etc/xen/scripts/network-bridge
# eth0
$script "$@" netdev=eth0 vifnum=0 bridge=xenbr0
# eth1
$script "$@" netdev=eth1 vifnum=1 bridge=xenbr1
exit 0
Dajemy mu prawa do wykonywania:
chmod a+x /scripts/network-multi-bridge
W /etc/xen/xend-config.sxp zamiast:
(network-script network-bridge)
wpisujemy:
(network-script network-multi-bridge)
Restartujemy xend:
/etc/init.d/xend restart
I teraz już możemy konfigurować sieć gościa wpisując w pliku gościa np.
vif = [ 'bridge=xenbr0,mac=00:16:3E:00:00:02','bridge=xenbr1,mac=00:16:3E:00:00:03' ]
xen Error: ‘NoneType’ object has no attribute ‘rfind’
Xen podczas uruchamiania gościa HVM mówi:
xen Error: ‘NoneType’ object has no attribute ‘rfind’
To prawdopodobnie oznacza, że nie ma zainstalowanego xen-qemu-dm-4.0, w Debianie jest to ten pakiet. Należy go doinstalować:
apt-get install xen-qemu-dm-4.0
Xen 4.0 Domain ‘name’ does not exist
Zgodnie z instrukacjami zrobiłem w name.cfg linię:
vif = ['type=ioemu, bridge=xenbr0']
ale pojawiał się błąd:
Domain 'name' does not exist
pomogła zmiana powyższego na:
vif = [ ]
Pełny plik konfiguracyjny to:
import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'
kernel = "/usr/lib/xen-4.0/boot/hvmloader"
builder='hvm'
memory = 512
shadow_memory = 8
name = "name"
vif = [ ]
disk = [ 'phy:/dev/bla/partwin,hda,w' ]
device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
boot="dc"
sdl=0
vnc=1
vncconsole=1
vncpasswd='haslo'
stdvga=0
serial='pty'
usbdevice='tablet'
Konsola domU w Xen 4.0
Kernel gościa zatrzymuje się na:
Entering runlevel: 2
Starting enhanced syslogd: rsyslogd.
Starting periodic command scheduler: crond.
Aby otrzymać poniżej konsolę, należy w systemie gościa skonfigurować inittab aby uruchamiał getty dla hvc0 a nie tty. W pliku /etc/inittab zmieniamy linię:
1:2345:respawn:/sbin/getty 38400 tty1
na
1:2345:respawn:/sbin/getty 38400 hvc0
Aby móc się logować jako root należy także dodać do /dev/securetty: hvc0
Z Hypervisorem 3.x działało dodanie w pliku konfiguracyjnym gościa linii:
extra = 'console=hvc0 xencons=tty'
przy wersji 4.0 to już nie działa i pomaga to co powyżej.
Instalacja systemu Debian Lenny jako gość dla Xen
dd if=/dev/zero of=nazwa-disk.img bs=1 count=0 seek=10G
dd if=/dev/zero of=nazwa-swap.img bs=1 count=0 seek=100M
mkfs.ext3 nazwa-disk.img (trzeba odpowiedzieć Y)
mkswap nazwa-swap.img
mount -o loop disk.img /xen/mnt/nazwa
debootstrap lenny /xen/mnt/nazwa ftp://ftp.icm.edu.pl/pub/Linux/dist/debian
umount /xen/mnt/nazwa
Należy utworzyć plik konfiguracyjny dla gościa, np.:
kernel = ‘/boot/vmlinuz-2.6.26-2-xen-686′
ramdisk = ‘/boot/initrd.img-2.6.26-2-xen-686′
memory = ’512′
extra = ‘console=hvc0 xencons=tty’
disk=['file:/xen/zab-disk.img,sda2,w']
name=’nazwa”
boot=’d’
vnc=0
vncviewer=0
sdl=1
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’
root = „/dev/sda2 ro”
vif = [ '' ]
Teraz wystartować guesta:
xm create -c xm-nazwa.cfg
opuszczenie konsoli przez CTRL-]
Aby ponownie podłączyć konsolę:
xm console nazwa
Zatrzymanie gościa:
xm shutdown nazwa
Lista gości:
xm list
Jeśli gość nie uruchamia się do końca
(staje na Starting periodic command scheduler: crond.), należy do /etc/inittab dodać linię:
h1:2345:respawn:/sbin/getty 38400 hvc0
Tags: Instalacja, Xen
Problem z ssh pod xen guest
Po zainstalowaniu systemu guesta przez debootstrap, instalacji sshd, [przy próbie połączenia przez ssh do guesta pojawia się:
root@xxxxx's password:
PTY allocation request failed on channel 0
stdin: is not a tty
Nie ma zainstalowanego pakietu udev, pomaga:
apt-get install udev
oraz dodanie do /etc/fstab
none /dev/pts devpts defaults 0 0
(nie jest to już wymagane).
