User Mode Linux
Cos'è user mode linux ● User mode linux è un kernel linux che gira come un'applicazione nello spazio utente
Differenze con qemu e openvz ● Rispetto a qemu/kvm con user-mode-linux posso usare solo linux ● OpenVZ usa il kernel ospite, user mode linux usa un proprio kernel ● Prestazioni: rispetto a qemu è più veloce, con kvm è circa uguale.
Dove trovo user mode linux ● Per il kernel 2.4 è necessaria una patch fino al poi è inclusa nel kernel ● Per il kernel 2.6 uml è gia incluso nel kernel, dalla versione ● Alcune distribuzioni hanno dei pacchetti già fatti (es. Debian apt-get install user-mode-linux)
Compilare il kernel uml ● E' come compilare un normale kernel linux con parametro ARCH=um ● Cosa includere nel kernel uml: ● Virtual block device ● Driver del filesystem es ext2, ext3, reiserfs,... ● Interfaccie di rete: sotto “networking options” ci sono UML network devices ● tutte le altre caratteristiche che vorrete usare anche come modulo
Root Filesystem 1 ● Come per il normale kernel abbiamo bisogno di un filesystem ● Posso scaricarne uno già fatto: ● Posso farne uno da solo ( debian e ubuntu si può usare debootstrap per creare un'altra debian o ubuntu) ● Posso farne uno a partire da un cd di installazione
root filesystem 2 ● User mode linux usa un file “sparse” che contine il filesystem. ● Filesystem da 1GB si crea con: ● dd id=/dev/zero of=root_fs.img bs=1M count=1 seek=1024 ● Associo il file con il loop device /dev/loopx con losetup: losetup /dev/loop0 root_fs.img ● Lo formatto come un normale filesystem con mkfs: es mkfs.ext2 /dev/loop0
Debootstrap ● Monto il mio file che contiene il filesystem in un punto es tmp_mount ● Creo un filesystem di root del nuov sistema debian con debootstrap: ● debootstrap [OPTION...] SUITE TARGET [MIRROR [SCRIPT]] ● esempio: ● debootstrap sid tmp_mount
Avviare il kernel uml ● Si lancia come un normale processo./linux ● Opzioni principali: ● Immagini disco ubda=, ubdb=, ubdc=, … ● Memoria mem= ● Interfacce di rete eth0=, eth1=, ● Nome per il socket di controllo umid= ● Altri parametri del kernel (tutti i parametri che accetta linux)
uml_utilities ● uml_mconsole – management console ● tunctl – crea interfaccia tap ● uml_switch – switch per far le macchine uml ● uml_mkcow – crea immagine copy on write ● uml_moo – riunisce le immagini cow con il backing file ● Normalmente uml-utilities son presenti nella disrtibuzione altrimenti sul sito user-mode-linux
SKAS ● Separate Kernel Address Space – tiene separata la memoria kernel dei processi linux-uml ● Kernel host senza patch ● guest gira come tt-tracing thread fino a guest ● il guest gira come SKAS0 (+ lento) – dal in poi ● Kernel host con SKAS3 o SKAS4 ● Non funziona completamente su x86_64 ● SKAS4 = SKAS3 ma con un'interfaccia adatta ad essere inclusa nel kernel
Riferimenti ● Pagina ufficiale di user-mode-linux ● ● Wiki ● ● Kernel, filesystem, patch e risorse aggiornate ● ● User-Mode-Linux Howto linux.sourceforge.net/old/UserModeLinux-HOWTO.html linux.sourceforge.net/old/UserModeLinux-HOWTO.html ● Virtual Distributed Ethernet e uml, qemu ●