User Mode Linux

Host-Kernel

Zunächst muss der Host Kernel mit den aktuellen SKAS-Patch gepached werden. Die Kernel Sourcen inkl Patch sind unter /usr/src/linux-2.6.14.2-skas gespeichert. Die Konfig habe ich soweit angepasst das tun/tap Devices und Ethernet Bridges möglich sind. Diese werden zur anbindung der virtuellen Ethernet Karten der UMLs benötigt. Der fertig compilierte Kernel befindet sich unter /boot/vmlinuz-2.6.14.2-ipv6-skas.

Guest-Kernel (aka UML-Kernel)

Als Kernel für die UML wird der letzte stabile Linux Kernel verwendet und unter /opt/uml-kernel/<kernelversion> gespeichert. Die Kernel config erfolgt mit „make menuconfig ARCH=um“. Wichtig ist das die options für tun/tap und ubd Disk (die virtuellen Festplatten einer UML) aktiviert sind. Danach kann der Kernel mit „make linux ARCH=um“ compiliert werden. Wichtig das ARCH=um nicht vergessen!

Host Netzwerk Konfiguration

/etc/network/interfaces

Loopback (lo)
auto lo
iface lo inet loopback

Auto Interfaces
auto tap0 eth0 br0

LAN (eth0)
iface eth0 inet manual
up ifconfig eth0 0.0.0.0 promisc up

UML 1 LAN (tap0)
iface tap0 inet manual
pre-up tunctl -u nobody -t tap0
up ifconfig tap0 up
down ifconfig tap0 down

Bridge Internal
iface br0 inet static
address <ip>
netmask <netmask>
network <network>
broadcast <bcast>
gateway <gw>
dns-nameservers <ns>
dns-search <dns-search>
bridge_ports eth0 tap0
bridge_fd 1
bridge_stp off
bridge_hello 1
down ifconfig br0 down

UML

Die einzelen UMLs werden unter /opt/uml/<#> gespeichert. Wobei # die ID der UML angibt. Unter /opt/uml/1 liegt dann zB die erste UML mit den Dateien: linux, root_fs und swap_fs.

linux: Hierbei handelt es sich um den UML-Kernel

root_fs: Hierbei handelt es sich um das UML Root Filesystem Image

swap_fs: HIerbei handelt es sich um das UML Swap Filesystem Image

Erstellen des Root Filesystem Images

Mit dd if=/dev/zero of=root_fs seek=500 count=1 bs=1M das File erzeugen. In diesen Beispiel wird das image 500 MB groß sein. Danach mit mkfs.ext3 das Filesystem erzeugen. Das selbe für swap_fs mit mkswap machen. Ich empfehle für das root image ca 10-20GB und für das swap_fs ca 256-768MB. Kann aber auch mehr oder weniger sein, je nach Bedarf. Nun müssen die Distributions Dateien kopiert werden (bootstraping). Dazu muss das root_fs image via loop gemountet werden, ebenso das gentoo root_fs image. Nun die Daten von den gentoo root_fs image in unser neues UML root_fs kopieren. Ein gentoo root_fs liegt unter /opt/uml/Gentoo-2006.1-x86-root_fs.bz2. Jetzt müss das root_fs image noch angepasst werden. Siehe zB Gentoo UML Documentation

Starten der UML: Die UML wird via “./linux ubd0=root_fs ubd1=swap_fs eth0=tuntap,tap0 mem=75M umid=<UML #>“ gestartet.

Tips

  • Ich schalte bei meinen UMLs immer den Console/Serial Line Input aus. D.h. auch die Einträge der gettys in /etc/inittab auskommentieren. Dazu muss die UML natürlich bei ihren ersten Start via netzwerk erreichbar sein und root sollte (muss) ein passwort gesetzt haben!
  • In Virtuozzo virtualisierten Umgebungen (z.B. bei server4you) sind verschiedene Kernelmodule nicht verfügbar. UML kann aber gestartet werden, um z.B. Dateisystem-Images zu mounten.

Todo

Warum ist der skas kernel kleiner als der jetzige (/proc/config.gz mit kernel konfig vergleichen) Hetzner Seriel Konsole beantragen (oder traun wir uns auch so?) :-) Warum muss eth0 in promisc geschalten werden? Wie zum teufel schreibt man in ner wiki ein faches “#“??? *g*

linux/user_mode_linux.txt · Zuletzt geändert: 2010/07/29 18:00 von rhenze
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0