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

Главная » Статьи » Ubuntu » Xen
Установка Xen на Debian
Автор: admin  Раздел: Xen
Устанавливаем Xen на Debian:

Для инсталляции ядра придётся воспользоваться более старым репозиторием пакетов Debian, например etch:
[-hide-]# vi /etc/apt/sources.list
# egrep 'sid|etch' /etc/apt/sources.list
deb http://debian.org.ua/debian sid main
deb http://debian.org.ua/debian etch main
# apt-get update
Проверяем, есть ли здесь необходимое нам ядро:
# apt-cache search xen 2.6.18
...
linux-image-2.6.18-6-xen-686 - Linux 2.6.18 image on i686
linux-image-2.6.18-6-xen-vserver-686 - Linux 2.6.18 image on i686
linux-modules-2.6.18-6-xen-686 - Linux 2.6.18 modules on i686
linux-modules-2.6.18-6-xen-vserver-686 - Linux 2.6.18 modules on i686
...
xen-linux-system-2.6.18-6-xen-686 - XEN system with Linux 2.6.18 image on i686
xen-linux-system-2.6.18-6-xen-vserver-686 - XEN system with Linux 2.6.18 image on i686

В unstable-репозитории Debian GNU/Linux уже появилось ядро версии 2.6.26, которое можно использовать в домене 0. В этом ядре используются патчи из проекта OpenSuSE
Кроме ядра понадобятся ещё гипервизор и утилиты:
# apt-cache search xen 3.2
xen-docs-3.2 - Documentation for Xen
xen-hypervisor-3.2-1-i386 - The Xen Hypervisor on i386
xen-hypervisor-3.2-1-i386-nonpae - The Xen Hypervisor on i386 without pae
xen-utils-3.2-1 - XEN administrative tools
Когда мы выяснили как точно называются все необходимые для инсталляции пакеты, можно приступать к их инсталляции.
# apt-get install linux-image-2.6.18-6-xen-686 xen-hypervisor-3.2-1-i386 xen-utils-3.2-1

Загрузчик
# vi /boot/grub/menu.lst
# cat /boot/grub/menu.lst | grep -v ^#
timeout 5
default 0
fallback 1

title Xen + GNU/Linux
root (hd0,0)
kernel /boot/vmlinuz-2.6.25-2-686 root=/dev/sda1
initrd /boot/initrd.img-2.6.25-2-686
title Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.18-6-xen-686
root (hd0,0)
kernel /boot/xen-3.2-1-i386.gz dom0_mem=256000
module /boot/vmlinuz-2.6.18-6-xen-686 root=/dev/sda1 ro console=tty0
module /boot/initrd.img-2.6.18-6-xen-686

Оставьте старый вариант загрузки, ,чтобы его можно было использовать, если Xen загрузить не удастся.
Обратите внимание, ,что в качестве аргумента директивы kernel указывается не ядро операционной системы, а гипервизор. Он должен быть загружен первым — именно поэтому его имя и указывается как аргумент kernel; естественно, от этого он не становится ядром. В качестве дополнительного аргумента в строчеке kernel указывается необязательный параметр — количество памяти, выделяемой домену 0:
dom0_mem=256000
(в килобайтах).
Если не указать этот параметр, домену 0 сначала будет выделена вся память, а затем она будет по мере здесь необходимости отбираться у него с помощью специального balloon-драйвера.
Ядро операционной системы загружается следующей строчекой, с помощью директивы module. Ядру передаются точно такие же параметры, как и всегда.
Следующая строчека загружает initrd. Она, как и всегда, нужна только в том случае, если ядро не сможет подмонтировать корневую файликовую систему самостоятельно.
Сделанных изменений достаточно для того ,чтобы загрузить Xenolinux в домене 0. Можно попробовать перезагрузить машину и посмотреть, ,что получится. Если ,что-то пойдёт не так, вы сможете вернуться к использованному ранее варианту загрузки.

Сеть
# vi /etc/xen/xend-config.sxp
--- /tmp/l3-saved-21846.11690.24532 2008-07-09 17:33:43.000000000 +0000
+++ /etc/xen/xend-config.sxp 2008-07-09 17:34:20.000000000 +0000
@@ -125,7 +125,7 @@
# Your default ethernet device is used as the outgoing interface, by default.
# To use a different one (e.g. eth1) use
#
-# (network-script 'network-bridge netdev=eth1')
+(network-script 'network-bridge netdev=eth0')
#
# The bridge is named xenbr0, by default. To rename the bridge, use
#
@@ -136,7 +136,7 @@
# two fake interfaces per guest domain. To do things like this, write
# yourself a wrapper script, and call network-bridge from it, as appropriate.
#
-(network-script network-dummy)
+#(network-script network-dummy)

# The script used to control virtual interfaces. This can be overridden on a
# per-vif basis when creating a domain or a configuring a new vif. The
# cat /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.15.250
network 192.168.15.0
netmask 255.255.255.0
broadcast 192.168.15.255
# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.0007e90b2b1d no peth0

Инсталляция гостевого домена

# lvcreate -L2G -n vol2 /dev/XEN
Logical volume "vol2" created
Создайте файликовую систему:
# mkfs.ext3 /dev/XEN/vol2
mke2fs 1.40.11 (17-June-2008)
Warning: 256-byte inodes not usable on older systems
...
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Подмонтируйте будущую файликовую систему домена в пустой каталог:
# mount /dev/XEN/vol2 /mnt
123 Выполните инсталляцию базовой системы:
# debootstrap sid /mnt http://192.168.15.254:9999/debian/
I: Configuring libdevmapper1.02.1...
I: Configuring debconf-i18n...
I: Configuring libblkid1...
I: Configuring dpkg...
I: Configuring sysvinit-utils...
I: Configuring bash...
I: Configuring debconf...
I: Configuring lsb-base...
I: Configuring procps...
I: Configuring libpam0g...
...
I: Configuring apt...
I: Configuring netbase...
I: Configuring libept0...
I: Configuring apt-utils...
I: Configuring aptitude...
I: Configuring klogd...
I: Configuring tasksel-data...
I: Configuring sysklogd...
I: Configuring tasksel...
I: Base system installed successfully.
Скопируйте внутрь базовой системы модули ядра, под которым будет работать домен.
# cp -R /lib/modules/2.6.18-6-xen-686 /mnt/lib/modules/
Подготовьте каталог для выполнения chroot в него. Для этого сделайте привязку необходимых каталогов:
# mount --bind /dev /mnt/dev/
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
После этого можно сделать chroot внутрь новой системы и установить в ней пакет libc6-xen:
Code:
# chroot /mnt
linux0:/#
linux0:/#
linux0:/# apt-get install libc6-xen
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  libc6-xen
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1268kB of archives.
After this operation, 2789kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  libc6-xen
Install these packages without verification [y/N]? Y
Get:1 http://192.168.15.254 sid/main libc6-xen 2.7-12 [1268kB]
Fetched 1268kB in 0s (5310kB/s)
Selecting previously deselected package libc6-xen.
(Reading database ... 7366 files and directories currently installed.)
Unpacking libc6-xen (from .../libc6-xen_2.7-12_i386.deb) ...
Setting up libc6-xen (2.7-12) ...
linux0:/# exit
Дальнейшая доработка.
Скопировать файлик с настройками сетевых интерфейсов.
# cp /etc/network/interfaces /mnt/etc/network/interfaces
Подправить его.
# vi /mnt/etc/network/interfaces

--- /tmp/l3-saved-2333.28139.25306    2008-07-09 18:25:05.000000000 +0000
+++ /mnt/etc/network/interfaces    2008-07-09 18:25:43.000000000 +0000
@@ -1,11 +1,9 @@
 auto lo eth0
 iface lo inet loopback
 iface eth0 inet static
-    address 192.168.15.250
+    address 192.168.15.54
     network 192.168.15.0
     netmask 255.255.255.0
     broadcast 192.168.15.255
-    up /etc/xen/scripts/network-bridge start bridge=br0 netdev=eth0
-    up ifconfig br0 up
-    up route add default gw 192.168.15.254
+    gateway 192.168.15.254
Подправить файлик /etc/fstab:
# vi /mnt/etc/fstab
--- /tmp/l3-saved-2333.30184.23159    2008-07-09 18:26:04.000000000 +0000
+++ /mnt/etc/fstab    2008-07-09 18:27:36.000000000 +0000
@@ -1 +1,3 @@
-# UNCONFIGURED FSTAB FOR BASE SYSTEM
+proc         /proc     proc defaults 0 0 
+/dev/hda1     /     ext3 defaults 0 0
+
После того как домен подготовлен, размонтируем сначала то, ,что смонтировано поверх его корневой файликовой системы, а потом и её саму.
# umount /mnt/proc
# umount /mnt/dev
# umount /mnt/sys
# umount /mnt
Создаём конфигурационный файлик домена.
# zcat /usr/share/doc/xen-utils-common/examples/xmexample1.gz > /etc/xen/vm2
# grep -v ^# /etc/xen/vm2 | grep -xv ''
kernel = "/boot/vmlinuz-2.6.18-6-xen-686"
ramdisk = "/boot/initrd.img-2.6.18-6-xen-686"
builder='linux'
memory = 64
name = "vm2"
vif = [ 'mac=00:16:3e:00:00:04, bridge=br0' ]
disk = [ 'phy:XEN/vol2,hda1,w' ]
root = "/dev/hda1 ro"
extra = ""
После того как конфигурационный файлик домена создан, создаём сам домен, то есть, запускаем виртуальную машину. Ключ -c означает, ,что мы хотим сразу же подключиться к консоли машины.
# xm create -c vm2
NX (Execute Disable) protection: active
ACPI in unprivileged domain disabled
Built 1 zonelists.  Total pages: 18432
Kernel command line: root=/dev/hda1 ro
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 512 (order: 9, 2048 bytes)
Xen reported: 2327.498 MHz processor.
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
...
Setting kernel variables (/etc/sysctl.conf)...done.
Mounting local filesystems...done.
Activating swapfile swap...done.
Setting up networking....
Configuring network interfaces...done.
INIT: Entering runlevel: 2
Starting system log daemon....
Starting kernel log daemon....
Starting periodic command scheduler: crond.
Debian GNU/Linux lenny/sid linux0 tty1
login:
Отключиться от консоли можно при помощи комбинации клавиш ctrl-].
Если просмотреть список доменов, будет виден запущенный домен vm2:
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 250 2 r----- 782.0
vm2 1 64 1 -b---- 4.4[-hide-]
Просмотров: 6344
Дата: 2011-07-15 01:01:27
Комментариев: 0
Источник: