garoeda | ok, i'll translate this one too |
garoeda | fernand0: hallo, onze volgende spreker is Ismael Briones |
garoeda | hij werkt als system administrator bij een een grote krant in Spanje |
garoeda | hij is lid van UniNEt en draagt bij tot het succes van |
garoeda | de organisatie van deze conferentie |
garoeda | zijn spreekbeurt gaat over User Mode LInux |
garoeda | ismak: |
garoeda | hallo, |
garoeda | goedenavond iedereen |
garoeda | ok, dit is een introductie tot User Mode Linux |
garoeda | het is een mix van de documentatie van het project |
garoeda | die je kan vinden op de webpagina van het project (http:/user-mode-linux.sourceforge.net). |
garoeda | ik ga uitleggen wat UML is en enkele beschrijvingen van hoe mensen |
garoeda | User-Mode-Linux gebruiken en hoe je het installeert |
garoeda | ten eerste : wat is UML? |
garoeda | 1.1 draai Linux in een Linux systeem |
garoeda | we kunnen een kort beschrijving van wat UML is lezen op de website van het project (http://user-mode-linux.sourceforge.net): |
garoeda | "User-Mode Linux is een veilige en secure manier om Linux versies te draaien in een andere Linux. Het geeft je een virtuele machine die meer hardware en software (virtuele) resources kan hebben den je eigenlijk fysieke computer |
garoeda | disk opslag van je virtuele machine zit volledig in één enkele file op je fysieke machine. je kan de virtuele machine enkel toegang geven tot de hardware die je zelf wil of die toegang beperken. Wat je doet met de virtuele machine kan je echte computer niet beschadigen noch de software erop |
garoeda | dit lijkt wel heel tof, we kunnen Linux draaien onder Linux en we kunnen doen |
garoeda | wat we willen omdat het gelijk een ander systeem is. UML laat je toe om een Linux kernel als een |
garoeda | user process te draaien onder een normale Linux kernel |
garoeda | Eigenlijk is uml een port van de linux kernel naar de linux system call interface ipv naar de hardware interface. Wat betekent dit nu? |
garoeda | het behandelt Linux als een platform naar waar men de kernel kan porten, die platforms zijn bv Intel, Alpha, Mips etc.. |
garoeda | alle devices toegankelijk onder de virtuele machine zijn virtueel en UML ondertsteunt het volledige gamma van devices van een Linux machine, zoals |
garoeda | console en serial lines |
garoeda | block devices |
garoeda | netwerk devices |
garoeda | normaal gezien praat de Linux Kernel rechtstreeks met de hardware (netwerkkaart, videokaart, geluidskaart) en elke programma dat in het systeem draait vraagt de kernel toelating om met de hardware te werken |
garoeda | +-----------+-----------+----+ |
ismak | | Process 1 | Process 2 | ...| |
ismak | +-----------+-----------+----+ |
ismak | | Linux Kernel | |
ismak | +------------------------------+ |
ismak | | Hardware | |
ismak | +------------------------------+ |
garoeda | de UML kernel communiceert niet met de hardware maar spreekt met de 'echte' Linux kernel (de kernel van het systeem waar we onze UML op draaien) zoals eender welk ander programma, Dit betekent dat programma's kunnen draaien in UML alsof ze in een normale kernel draaien als volgt: |
garoeda | +-----------------+ |
ismak | | Process 2 | ...| |
ismak | +-----------+--------------------+ |
ismak | |Process 1 | User-Mode Linux | |
ismak | +---------------------------------+ |
ismak | | Linux Kernel | |
ismak | +---------------------------------+ |
ismak | | Hardware | |
ismak | +---------------------------------+ |
ismak | |
ismak | |
ismak | |
garoeda | enige voordelen van UML zijn: |
garoeda | - als de user mode linux crasht, gaat het systeem dat de umlgaat hiervan geen hinder ondervinden |
garoeda | de user mode linux kan als non-root user draaien |
garoeda | uml draait zoals een ander proces dus je kan het debuggen |
garoeda | je kan het gebruiken om nieuwe applicaties te testen, nieuwer kernels, nieuwe distributies (verschillende distributes tegelijkertijd draaien) |
garoeda | II waarvoor gebruiken mensen het? |
garoeda | virtual hosting |
garoeda | we kunnen uml gebruiken voor virtuele hosting. UML geeft ons een compleet Linux systeem dus we kunnen alles draaien wat we op de host pc kunnen draaien |
garoeda | een voorbeeld hiervan is usermodelinux.org, beheerd door David Coulson, hij draait een user mode linux systeem |
garoeda | Kernel ontwikkeling en debugging |
garoeda | het is een goede manier om kernels te debuggen, als ons UML systeem crasht gaat het basissysteem nog altijd probleemloos werken, er gaat geen beschadiging zijn |
garoeda | we kunnen debuggers gebruiken zoals gdb, gprof en gcov. de ontwikkeling van drivers is efficienter daar we de machine niet moeten reboten, wat de ontwikkeltijd lager maakt |
garoeda | process debugging |
garoeda | UML kan gebruikt worden um user-level prcoessen te debuggen, als we een proces willen debuggen starten we UML, zetten een breakpoint op de system call en draaien het programma |
garoeda | spelen met de laatste kernels |
garoeda | we kunnen UML gebruiken om de laatste kernel te testen, als die kernel bugs zou hebben zoals data corruptie ofzo kan het geen belangrijke data buiten het UML systeem beschadigen |
garoeda | nieuwe distributies testen |
garoeda | het bestandssysteem van UML is compleet bevat in een enkele file, we hebben dus geen volledige disk partitie hiervoor nodig |
garoeda | we kunnen een aantal kant en klare root bestandssystemen vinden op de webpagina van UML (http://sourceforge.net/project/showfiles.php?group_id=429) of we kunnen ons eigen bestandssysteem van scratch maken, later gaan we een voorbeeld zien met de Debian distributie |
garoeda | Opvoeding |
garoeda | het is handiger voor de student daar die geen speciale machine nodig heeft om OS ontwikkeling te leren, netwerk administratie en meer algemene systeem administratie |
garoeda | experimentele ontwikkeling |
garoeda | onze virtuele machine kan met meer devices draaien dan onze fysieke hardware, dus we kunnen een virtueel systeem hebben met meerr geheugen, mode devices en meer processoren |
garoeda | we kunnen hardware testen en verder ontwikkelen zonder de eigenlijke hardware te hebben |
garoeda | Onderzoeken van draaiende systemen |
garoeda | we Hebben een compleet OS draaiende buiten de UML, we kunnen dit gebruiken om 'in' de kernel van de UML te kijken wat bij een ander systeem niet mogelijk is |
garoeda | als 'zandbak' of 'gevangenis' |
garoeda | processen die draaien in de UML hebben geen toegang tot het fysieke systeem, bijgevolg kunnen kwaadaardige programma's in de UML ons echte systeem niet beschadigen |
garoeda | Virtual networking |
garoeda | we kunnen het netwerk gebruiken vanuit een draaiende UML, we kunnen een virtueel netwerk opzetten en experimentele diensten testen. Later zal ik uitleggen hoe we uml met netwerkondersteuning kunne instellen |
garoeda | als een testomgeving |
garoeda | het testen van sommige software vereist het reboten vande machine , met uml kunnen we dit tijdverlies vermijden. we kunnen het testen automatiseren. Er is een kleine perl module die een UML object implementeert die de mogelijkheid biedt een virtuele machine te booten, erop in te loggen, commando's te draaien en het af te sluiten. Je kan het vinden op de download pagina |
garoeda | http://sourceforge.net/project/showfiles.php?group_id=429) |
garoeda | herstellen na rampen |
garoeda | als je wil weten wat er gebeurdt wanneer je rm -rf / typt, of je wil systeemherstel oefenen kan je uml gebruiken als een testsysteem, het kan leuk zijn :-) |
garoeda | een LInux omgeving voor andere operating systems |
garoeda | UML draait momenteel enkel op Linux, maar er zijn projecten om uml te porten naar andere OS's zodat we een gehele Linux omgeving kunnen draaien in een ander OS |
garoeda | nu we weten wat user mode linux is en hoe we het kunnen gebruiken ga ik enkele practische voorbeelden geven van uml in de praktijk |
garoeda | met name: hoe installeer ik vanaf nul een uml gebaseerd op debian |
garoeda | een practisch voorbeeld: |
garoeda | we hebben een UML kernel en een root bestandssysteem nodig om het te boten. we kunnen de kernel installeren vanaf een .rpm of .deb package of een bestaande kernel patchen en onze UML kernel zelf compileren |
garoeda | de .rpm en .deb bestanden bevatten trouwens ook een aantal userspace tools, kernel modules en documentatie |
garoeda | installeren van source |
garoeda | als je UML vanaf source wil compileren moet je een patch downloaden en toepassen op de geschikte Linux kernel |
garoeda | cd linux-2.4.19 |
garoeda | patch -p1 < uml-patch-2.4.19-37 |
garoeda | het compileren van de user mode kernel is hetzelfde als de compilatie van een andere kernel. dit doen we als volgt |
garoeda | na het patchen moeten we de kernel compileren |
garoeda | make menuconfig ARCH=um (you can use make xconfig and make config) |
garoeda | de default kernel configuratie werkt goed dus je hoeft die niet te veranderen. als je iets veranderdt zal er waarschijnlijk geen enkel probleem optreden. nu moeten we de kernel compileren |
garoeda | make linux ARCH=um |
garoeda | na het compileren heb je een user mode kernel, genaamd linux, in de top directory van je source tree |
garoeda | nu gaan we de kernel modules compileren en installeeren. we compileren de modules op dezelfde manier als een gewone kernel met uitzondering van 'ARCH=um': optie |
garoeda | make modules ARCH=um |
garoeda | je kan ze installeren via ftp, uploaden naar onze UML of we kunnen ons root bestandssyteem mounten en ze in de goede directory plaatsen |
garoeda | mount root_fs_file mount_point -o loop |
garoeda | make modules_install INSTALL_MOD_PATH=`pwd`/mnt ARCH=um |
garoeda | umount mnt |
garoeda | dit gaat het kernel build proces gebruiken en de modules installeren in ons uml root bestandssysteem |
garoeda | als we de uml tools willen gebruiken moeten we de source afhalen en ze compileren |
garoeda | Debian installatie |
garoeda | Ok, nu ga ik uitleggen hoe je op een gemakkelijke wijze een draaiende uml kan verkrijgen, met debian natuurlijk ;-) |
garoeda | ten eerste, de woody versie van debian heeft de volgende uml packages |
garoeda | user-mode-linux |
garoeda | user-mode-linux-doc |
garoeda | uml-utilities |
garoeda | we moeten het user-mode-linux package installeren |
garoeda | apt-get install user-mode-linux (het uml-utilities package wordt automatisch geinstalleerd door dependencies) |
garoeda | dd if=/dev/zero of=root_fs_woody bs=1M count=100 |
garoeda | hiermee maken we een file van 100M groot, we kunnen de grootte instellen naar eigen keuze |
garoeda | dit bestand kan een ext2 bestandssysteem hebben, we gebruiken mke2fs om het ext2 bestandssysteem te maken |
garoeda | sbin/mke2fs -Fq root_fs_woody |
garoeda | ok, nu hebben we ons root bestandssysteem, nu gaan we het mounten en onze bestandssysteem structuur maken |
garoeda | > mkdir /mnt/uml |
garoeda | mount root_fs_woody /mnt/uml -o loop |
garoeda | we halen het basis systeem package af dat bij onze Debian versie hoort (ik gebruik de laatste versie: woody) |
garoeda | wget ftp://ftp.debian.org/debian/dists/woody/main/disks-i386/base-images-current/basedebs.tar |
garoeda | we installeren het basis systeem in ons bestand: |
garoeda | debootstrap --unpack-tarball /PATH/basedebs.tar woody /mnt/uml/ |
garoeda | ah, een vraag |
garoeda | vraag: can je geen partitie gebruiken als root bestandsysteem voor UML |
garoeda | nee, de disk opslag van UML is een bestand |
garoeda | of meerdere bestanden als je meerderer harde schijven wil proberen |
garoeda | (vervang proberen door simuleren) |
garoeda | nu moeten we enkele files van ons uml systeem configureren |
garoeda | cd /mnt/debinst |
garoeda | vi etc/fstab |
garoeda | # /etc/fstab: static file system information. |
garoeda | # |
garoeda | # file system mount point type options dump pass |
garoeda | # /dev/ubd0 / ext2 defaults 0 0 |
garoeda | proc /proc proc defaults 0 0 |
garoeda | another file: |
garoeda | vi etc/inittab |
garoeda | we zeten bovenstande lijnen in commentaar zodat enkel een xtterm gestart wordt wanneer het systeem boot |
ismak | 1:2345:respawn:/sbin/getty 38400 tty1 |
ismak | #2:23:respawn:/sbin/getty 38400 tty2 |
ismak | #3:23:respawn:/sbin/getty 38400 tty3 |
ismak | #4:23:respawn:/sbin/getty 38400 tty4 |
ismak | #5:23:respawn:/sbin/getty 38400 tty5 |
ismak | #6:23:respawn:/sbin/getty 38400 tty6 |
ismak | |
garoeda | we maken een lege source lijst |
garoeda | touch etc/apt/sources.list |
garoeda | Ok, nu kunnen we onze uml kernel starten |
garoeda | linux ubd0=root_fs_woody devfs=nomount rw |
garoeda | als we cdrom ondersteuning willen: |
garoeda | linux ubd0=root_fs_woody ubd2r=/dev/cdrom devfs=nomount rw |
garoeda | Het laatste onderdeel van deze conferentie is de networking support |
garoeda | User Mode Linux Networking |
garoeda | we hebben de TUN./TAP device module nodig dus we moeten de kernel (niet de uml kernel) recompilen met ondersteuning voor deze module |
garoeda | wanneer we het hte TUN/TAP device als moudule hebben kunnen we het in kernel inserten |
garoeda | insmod tun |
sarnold [sarnold@~65.102.14.138] is now known as sarMTG |
garoeda | we maken de TUN/TAP interface |
garoeda | tunctl -u uiduser |
garoeda | waarbij uiduser het uid is van de user die de uml draait |
garoeda | de gebruiker die het TUN/TAP device gaat gebruiken |
garoeda | we configureren de interface |
garoeda | ifconfig tap0 ip_system netmask netmask_system broadcast broadcast_system |
garoeda | waarbij ip_system, netmast_system en broadcast_system de netwerk parameters zijn van ons echte systeem (dat dus de uml draait) |
garoeda | nu moeten we de routetabel configureren. we moeten forwarding toelaten en manueel een ARP adres mapping maken voor de uml host |
garoeda | bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' |
garoeda | route add -host uml_ip dev tap0 |
garoeda | bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp' |
garoeda | arp -Ds uml_ip eth0 pub |
garoeda | uml_ip moet het ip zijn van de uml netwerk interface |
garoeda | #/dev/net/tun device moet schrijf permissies hebben voor de gebruiker die uml draait: |
garoeda | chgrp gid /dev/net/tun |
garoeda | chgrp gid /dev/net/tun |
garoeda | chmod 660 /dev/net/tun |
garoeda | ons systeem is nu klaar om uml te draaien met netwerk ondersteuning |
garoeda | linux ubd0=root_fs_woody devfs=nomount rw eth0=tuntap,tap0 |
garoeda | nu moet je nog de netwerkparameters in het uml systeem (ip, gateway, dns,...) configureeren en je hebt een draaiend uml systeem met netwerk ondersteuning |
garoeda | het enig wat je nu nog moet doen is ermee spelen ;-) |
garoeda | dat is alles |
garoeda | bedankt en proficiat voor de vertalers |
garoeda | (einde voorstelling) |