da die Stimmen nach einer neuen Anleitung in unseren Wiki nach einer aktuellen Anleitung wie man Xen als Dom0 aufsetzt und darin Ipfire paravirtualisiert laufen lassen kann immer lauter werden, fange ich hier an. Da ich auch nur ein Entwickler bin und daher manche Sachen als bekannt annehme, möchte ich das Howto erst einmal hier erstellen, damit jeder noch seinen Senf dazu abgeben kann und evtl. Probleme im Vorfeld ausgeräumt werden können - soll heißen, wer noch eine Ergänzung, Idee, Probleme, Unklarheiten mit dem Howto hat, her damit!
1. Installation von Debian Squeeze
Auf die Grundinstallation von Debian 6.0 (Squeeze) gehe ich nicht weiter ein, dazu gibt es die Debian Doku. Es ist sehr zu empfehlen eine 64 bit Version zu installieren, da diese wesentlich besser und stabiler läuft als eine 32 bit.
2. Anpassen der Quellen
Vorweg, ich beschreibe hier, wie mein System aufgesetzt wurde und bei mir seit einigen Monaten treue Dienste leistet. Alle Kommandos werden als root ausgeführt.
nano /etc/apt/sources.list
Code: Select all
deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://volatile.debian.org/debian-volatile stable/volatile main
deb-src http://volatile.debian.org/debian-volatile stable/volatile main
deb http://ftp.debian.org/debian/ testing main contrib non-free
Quellen aktualisieren:
aptitude update
--> evtl fehlen hier noch keyrings!
3. Notwendige Pakete installieren
aptitude install xen-hypervisor-4.0-amd64 linux-image-xen-amd64 xen-qemu-dm-4.0 bridge-utils ethertool
4. Anpassen von Grub2
Code: Select all
mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
5. Anpassen von xendomains
nano /etc/default/xendomains
Code: Select all
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""
6. Anpassen von xend-config
nano /etc/xen/xend-config.sxp
Code: Select all
(vif-script vif-bridge)
#(vif-script vif-route)
#(vif-script vif-nat)
7. Verhindern, dass die Bridges in Promisc Mode gestartet werden
Die Schnittstellen im Promisc Mode zu betreiben macht nur Sinn, wenn man entsprechende Debuginformationen sammeln möchte. Ich betreibe einen Fileserver als DomU und im Promisc-Mode laufen die Bridges "als Hub". D.h. jede DomU, die an der Bridge hängt bekommt immer alle Informationen/Dateien geschickt sobald an irgend eine etwas geschickt wird. Dies führt zu unnötigen Traffic im Netzwerk und theoretisch könnte eine DomU die andere Domu (inkl. Dom0) abhören. Daher Promisc aus.
nano /etc/xen/scripts/vif-bridge
Rote Zeile einfügen:
Code: Select all
case "$command" in
online)
setup_bridge_port "$vif"
add_to_bridge "$bridge" "$vif"
ip link set "$vif" promisc off # DIESE ZEILE EINFÜGEN!
;;
offline)
do_without_error brctl delif "$bridge" "$vif"
do_without_error ifconfig "$vif" down
;;
esac
8. Netzwerk konfigurieren
nano /etc/network/interfaces[/i
Code: Select all
auto lo eth0
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
up ifconfig eth0
# intern is the interface to the internal lan
auto xenbrI
iface xenbrI inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.10
dns-nameservers 127.0.0.1
bridge_ports eth0
bridge_stp off
post-up ethtool -K xenbrI tx off
post-up ip link set xenbrI promisc off
# dmz
auto xenbrD
iface xenbrD inet manual
pre-up brctl addbr xenbrD
up ifconfig xenbrD 0.0.0.0
bridge_stp off
post-up ethtool -K xenbrD tx off
post-up ip link set xenbrD promisc off
post-up ip link set xenbrD address 00:23:24:25:26:27
down ifconfig xenbrD down
post-down brctl delbr xenbrD
Jede Ip-Adresse darf nur einmal im Netzwerk auftauchen! Die Bridge ist wie ein Switch zu betrachten, wo sich die einzelnen Virtuellen Maschinen einstecken. D.h. Ipfire und Dom0 dürfen niemals die gleich Ip haben!
Optionale Ergänzung: Red
Ich habe, die Netzwerkkarte an die Ipfire DomU gereicht, aber nicht alle werden das machen können. Daher muss man dann eine Bridge für Red anlegen.
Ein Codebeispiel für eine Ergänzung der /etc/network/interfaces kann wie folgt aussehen:
Code: Select all
# eth1 -> extern
auto eth1
iface eth1 inet static
up ifconfig eth1 0.0.0.0
auto xenbrE
iface xenbrE inet manual
bridge_ports eth1
bridge_stp off
post-up ethtool -K xenbrE tx off
Optionale Ergänzung: Blue
Möchte man ein Wlannetz mit aufbauen, hat man zwei Möglichkeiten. Entweder man lässt in der Dom0 die Karte als Accesspoint laufen, oder man reicht sie an die Ipfire-domu per pci-passthrough. Bei mir läuft sie direkt im Ipfire, daher taucht sie nicht in meiner Network-config auf. Wer sie nicht durchreichen möchte/kann der kann sich in der Dom0 das Packet "hostapd" (aptitude install hostapd) installieren. In der Configfile (nano /etc/hostapd/hostapd.conf) muss als interface eine Brdige angegeben sein, z.B. xenBrB. XenbrB muss vorher in der Networkconfig ebenso erstellt werden wie die vobn mir beschriebene DMZ. Hostapd fügt das wlan interface dann selbstständige zur Bridge hinzu.
9. Grub-config überprüfen
[i]nano /boot/grub/grub.cfg
Code: Select all
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos1)'
search --no-floppy --fs-uuid --set 5872ac7f-d362-4bc0-a5ff-f25556655cca
echo 'Loading Linux 2.6.32-5-xen-amd64 ...'
multiboot /xen.gz dom0_mem=1024M cpufreq=xen cpuidle iommu=on iommu=pv
module /vmlinuz-2.6.32-5-xen-amd64 root=UUID=3b47db40-e398-4f4a-ac6b-440e579f06f5 ro earlyprintk=xen xen-pciback.permissive xen-pciback.hide=(08:06.0)(03:00.0) reassign_resources
echo 'Loading initial ramdisk ...'
module /initrd.img-2.6.32-5-xen-amd64
}
Erklärung:
Ich habe Hardware, die IOMMU unterstützt, daher ist das bei mit aktiviert. Wenn ihr keine Hardware habt, die diese Unterstützung hat, dann bitte die entsprechenden Stellen löschen. dom0_mem=1024M ist ein guter Wert für eine Dom0. Laut Xen Mailingliste tauchen damit am wenigsten Probleme auf. xen-pciback.hide=(08:06.0)(03:00.0) versteckt die beiden Devices, damit man sie später in eine DomU reichen kann.
Nun viel Spass mit dem neuen Xen System!
edit:
03.01.2011
- Erklärung zu Promisc hinzugefügt
- Blue-Netzwerk optional hinzugefügt
- Red-Netzwerk optional hinuigefügt