Openlab 01 - Workshop Virtualisierung/UML: Unterschied zwischen den Versionen
Zim (Diskussion | Beiträge) (Beschreigungen) |
Zim (Diskussion | Beiträge) (uml starten) |
||
Zeile 78: | Zeile 78: | ||
Falls nicht vorhanden, die "source.list" erzeugen | Falls nicht vorhanden, die "source.list" erzeugen | ||
# touch /etc/apt/source.list | # touch /etc/apt/source.list | ||
+ | |||
+ | ===UML starten=== | ||
+ | |||
+ | UML wird wie ein normales Program aufgerufen. | ||
+ | |||
+ | # ./vmlinux mem=256M ubd0=disk.img ubdb=swap eth0=tuntap,,,IP | ||
Version vom 21. Januar 2009, 16:08 Uhr
Inhaltsverzeichnis |
UML - Usermode Linux
Hostsystem
Am Hostsystem muss man keine Aenderungen vornehmen. Aber es gibts zwei Punkte die man erwaehnen sollte.
SKAS-Patch
Der SKAS3-Patch wird auf den Kernel des Hostsystems angewant und bringt eine deutlich Geschwindigkeitssteigerung.
# wget http://www.finnie.org/software/uml/2.6.28-skas3.patch # patch -p0 < 2.6.28-skas3.patch
TUN-Device
Damit sich das UML-System auch mit der Aussenwelt unterhalten kann, bietet sich eine Anbindung per TAP-Device an. Falls Euer Kernel keine TUN/TAP-Devices unterstuetzt, kann dies unter:
- Device Drivers -> Network device support -> Universal TUN/TAP device driver support
aktiviert werden.
Guestsystem
Das Gastsystem besteht aus zwei Teilen, dem UML-Kernel und einem Dateisystem. UML wird in Linux als eigenstaendige Architektur gehandelt und so ist dies beim compilen mit zu uebergeben.
Kernel
Den Kernel fuer das Guestsystem kann man aus den gleichen Quellen bauen, wie auch fuer das Hostsystem. Wichtig ist das Parameter "ARCH=um" beim compilen.
Kernel downloaden
# wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
Archiv entpacken
# tar xvfj linux-2.6.28.tar.bz2
evtl. vorhandene vorherige Compilereste loeschen
# make mrproper ARCH=um
ncurses-menu zur Konfiguration
# make menuconfig ARCH=um
Den Kernel compilen
# make linux ARCH=um
Module compilen
# make modules ARCH=um
Kernel "strippen"
# strip vmlinux
Module in "root_fs" installieren
# make modules_install ARCH=um INSTALL_MOD_PATH=../root_fs
Filesystem
Als Dateisystem kommt der Einfach halt wegen ext2 zum Einsatz. Mit entsprechendem Support im Kernel kann man natuerlich auch ein anderes FS nehmen.
Wir erzeugen eine Datei "disk.img" mit der Groesse von 1GB.
# dd if=dev/zero of=disk.img bs=1024 count=$[1024 * 1024]
Darauf legen wir ein Ext2-Dateisystem an
# mke2fs -Fq disk.img
Ein Ordner zum FS mounten
# mkdir root_fs
"disk.img" nach "root_fs" mounten
# mount -o loop disk.img root_fs
debootstrap erzeugt in "root_fs" eine Installation von Debian etch
# debootstrap etch root_fs
Die fstab editieren und die entsprechenden Dateisysteme mit mountpoints eintragen
# vi root_fs/etc/fstab # /dev/ubd0 / ext2 defaults 0 0 # proc /proc proc defaults 0 0
Falls nicht vorhanden, die "source.list" erzeugen
# touch /etc/apt/source.list
UML starten
UML wird wie ein normales Program aufgerufen.
# ./vmlinux mem=256M ubd0=disk.img ubdb=swap eth0=tuntap,,,IP
Network
Zum Netzwerken kommt TUN/TAP zu Einsatz
Hostsystem
Auf dem Hostsystem sicherstellen, dass TUN/TAP-Support vorhanden ist.
Das TAP-Device dem Nutzer <uml-user> zuweisen
# tunctl -u <uml-user>
UML im nachhinein (hotplug) eine Netzwerkkarte unterschieben
# uml_mconsole UMID config eth0=tuntap,,,IP
Guestsystem
eth0 mit einer IP im Netzwerk hochfahren
# ifconfig eth0 IP+1 up
Defaultroute eintragen
# route add default gw IP