m Protegit «User Mode Linux» ([edit=autoconfirmed] (indefinit) [move=autoconfirmed] (indefinit))
(Cap diferència)

Revisió del 21:34, 13 nov 2010

Introducció

User Mode Linux (UML) es un mètode per executar sistemes Linux virtuals dins d'un altre Linux. A diferencia de els sistemes de virtualització moderns, no fa servir acceleracions de hardware ni intenta emular dispositius a nivell de kernel. Ens es útil per que es més simple i fàcil de treballar, encara que menys potent.

Funcionament

Dins d'un ordinador hoste (host), executem els sistemes guest. El kernel del sistema guest es un kernel compilat amb unes opcions especials de tal manera que es converteix en un executable que podem llençar amb diferents arguments al sistema host.

Amb diferents opcions li diem on trobar els discs durs. Pot treballar amb particions directament (no recomanat!), o es pot fer servir imatges de disk / o sistemes de fitxers en un fitxer.

Kernels

Host

Per el sistema host, podem fer servir qualsevol kernel. Tot i això, es millor fer una modificació per que funcioni més ràpid.

Hem d'aplicar un patch anomenat SKAS. Els guests detectaran que l'hoste fa servir aquest patch i en trauran profit.

Guests

El kernel dels guests es molt diferent a un kernel normal. Qualsevol versió de linux moderna (2.6), ja porta incorporats els patchs necessaris. Dintre del kernel, l'UML es considerat una arquitectura diferent, així que el primer de tot es arrencar la configuració del kernel indicant que volem fer servir aquesta arquitectura:

$ make ARCH=um xconfig # o menuconfig, o ...
$ make ARCH=um # compilar

Es molt important afegir sempre el ARCH=um després del make, sempre que el cridem, tant per configurar com per compilar. En cas contrari podem perdre tota la configuració i obtindrem un kernel que no funciona.

El resultat serà un executable linux al directori actual, en comptes d'un fitxer bzimage de kernel vmlinux.

Cal prestar especial atenció als mòduls. Es clar que no podem fer make modules_install doncs això instal·laria els moduls al sistema actual i no dintre de cap màquina virtual. Realment un sistema guest es tan simple que millor no ficar-hi moduls. Compilem lo just necessari dintre del kernel i punt.

Com a exemple de configuració es pot fer servir el fitxer /uml/source/kernels/config-v3 a l'ordinador virtual. Es la configuració amb la que estan corrent totes les màquines virtuals actualment. Realment hi ha poc a explicar, la ajuda del sistema de configuració del kernel i de la wiki de UML ja explica amb profunditat les 4 opcions que hi ha.

Problemes

No es una sol·lució massa estable. Quan hem fet treballar 3 o 4 màquines virtuals de vegades ens ha pinyat alguna. Potser si ara fessin servir kernels més nous funcionaria millor.

TLS

Thread Local Storage (TLS) es una funcionalitat típica dels kernels relacionada amb els threads. A les versions de UML que hem fet servir no hi funciona. Per aquest motiu, molts programes que fan servir threads fallen dintre d'una màquina virtual. Es veu que aquest problema està corregit en versions més noves de UML.

Web oficial

Web oficial antiga (una mica mes d'info que la nova)

UML Wiki

SKAS Patches