User mode Linux telepítése
Az első lépésben létrehoztam az 500 Mb méretű fájlt, ami a képfájl lesz. A /dev/zero állományból töltöttem fel az 50 darab, 10Mb blokkméretű darabot. Ezzel elértem, hogy lett egy 500 Mb méretű, null értéket tartalmazó fájlom. Ezt a következő paranccsal értem el:
# dd if=/dev/zero of=uml bs=10M count=50
A következő lépésként ext3 fájlrendszert készítettem a következő módon:
# mkfs.ext3 uml
Az ext3 fájlrendszer egy gyakran használt, megbízható naplózó fájlrendszer.
A mount parancs segítségével felcsatoltam az mnt könyvtárba. A loop egy olyan eszköz, ami egy olyan fájlrendszer, amely mögött nincs fizikai meghajtó, általában egy fizikai tartalomról képzett fájl. A debootstrap csomag feltelepítése után használható arra, hogy a – arch után megadott processzor architektúrához tartozó, a rendszer működéséhez szükséges fájlokat a megadott könyvtárba letöltse. Forrásnak azt az elérési utat használja, amely a host gép forrása is. Ezt a forrást a /etc/apt/sources.lst fájlban lehet beállítani. Ahogy az alábbi parancsban látható és az etch nevezetű, jelenleg stable állapotban lévő rendszert töltettem le az mnt könyvtárba.
# mount -o loop uml /mnt/
# debootstrap --arch i386 etch /mnt/
A parancs futásának végeztével az 500 Mb méretű fájlból 275 MB körüli részt foglal el az alaprendszer.
A következő lépésként beállítottam az UML hálózati csatolóját. A chroot . parancs hatására az aktuális könyvtár válik a gyökérkönyvtárrá.
# cd /mnt/
# chroot .
/# nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway: 192.168.1.1
A következőkben felcsatoltam a proc fájlrendszert, amiben a rendszer az éppen futó alkalmazásokat és az aktuális rendszerinformációkat tárolja.
# mount -t proc proc /proc
# cd /dev/
/dev# MAKEDEV ubd
/# nano /etc/fstab
/dev/ubd / ext3 defaults 0 0
proc /proc proc defaults 0 0
Kiegészítés:
Az újabb verziós Linuxoknál a fenti parancs nem működik jól, ezért a következőket kell tenni:
/dev# ls udb*
Ha nincs udb0, akkor a következő parancsokat kell futtatni:
Továbbá a /etc/fstabba is ud0-t kell írni valamint indításkor is udb0-t kell megadni.)mknod --mode=660 ubd0 b 98 0
chown root:disk ubd0
Ezzel a lépéssel létrehoztam az UML elsődleges meghajtóját és a /etc/fstab- ban beállítottam a rendszer indulásakor az automatikus felcsatlakozást.
A későbbi keveredések elkerülése érdekében a /etc/hostname fájlban megváltoztattam a virtuális gép nevét.
A /etc/inittab fájlban a konzolok számát csökkentettem egyre, a szükségtelen sorokat # beillesztésével megjegyzéssé tettem, így a fájl indulásakor nem fogja figyelembe venni. Ha az UML elnyerte végső formáját, a maradék sort is megjegyzéssé teszem, így nem fog a hostgépen konzol nyílni.
1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
1.Kódrészlet
A legfőbb különbség az UML és más virtualizációs megoldások között az, hogy ez a megoldás nem tartalmaz hardver virtualizációt, az UML hozzáfér a hardver elemekkel. Ez különbözteti meg a hagyományos alkalmazásoktól. Ez a tulajdonság teszi szükségessé, hogy a hardver elemek kezeléséhez szükséges modulokat is az UML rendelkezésére kell bocsátani, ezért a host gép /lib/modules/$(uname -r) könyvtárát át kell másolni a képfájl ugyan ezen könyvtárába.
A másolás befejeztével az UML alaprendszer munkára kész állapotba kerül. Ebben az állapotában is készítettem róla másolatot. A másolat hálózati beállításait módosítani kell a /etc/network/interfaces fájlban.
Az UML és a host gép a tun/tap megoldással kommunikál. Ennek lényege, hogy a host gépen létre kell hozni egy- egy virtuális interfészt a /etc/network/interfaces fájlban minden egyes virtuális kiszolgálóhoz. A következő sorok beillesztésével:
auto tap0
iface tap0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
pre-up tunctl -t tap0
post-down tunctl -d tap0
auto tap1
iface tap1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
pre-up tunctl -t tap1
post-down tunctl -d tap1
2.Kódrészlet
Telepíteni kell az uml-utilities, user-mode-linux csomagokat.