User-mode Linux
Origem: Wikipédia, a enciclopédia livre.
User-mode Linux (UML) é uma arquitetura portável da própria interface do Linux kernel para que possa ser chamado a partir do sistema. Um Kernel Linux compilado para arquitetura um pode iniciar-se como um processo a partir do próprio sistema operativo Linux, e inteiramente gerido no espaço de utilizador (no original, user space), sem que isso afete o ambiente do computador que corre o próprio sistema.
Inúmeras coisas se tornam possíveis através da utilização do UML. Podem ser lançados serviços de rede a partir do hóspede (guest no original) UML, e manter-se totalmente isolado do principal sistema que corre Linux (host no original). Geralmente os administradores de sistemas usam o UML para gerir honeypots, que permitem que o resto da segurança de um determinado ponto de rede de um host. O UML também permite testar e fazer debug de novo software, incluindo experimentação de instalações, sem que isso afecte de alguma forma o sistema principal (host). As versões do Kernel (guest versus host) não necessitam de ser iguais, portanto é perfeitamente possível testar uma novíssima versão de Linux em User-mode num sistema que corre um Kernel bastante mais antigo. Outra ferramenta que permite fazer debug do kernel é kgdb, a qual permite correr passo a passo o kernel Linux: para tal requer duas máquinas ligadas por um modem nulo (no original null modem).
Vários providenciadores de serviços de alojamento de sistemas na Internet (web hosting no original) começaram a oferecer servidores virtuais que correm precisamente UML, por certa de 10 a 20 dólares (8 a 15 euros) por mês. Cada cliente tem acesso root, no que é aparentemente o seu próprio sistema, mas na realidade é apenas um servidor físico que é utilizado por diversas pessoas, diga-se clientes. (Não cabe aqui referir que existem mecanismos que permitem esconder este facto aos utilizadores / clientes; numa instalação habitual, o utilizador do sistema guest verá que o mount point da raiz é na realidade /dev/ubd0, em vez de um disco físico.)
A aplicação guest (um binário Linux, ELF) foi disponibilizado como um patch para algumas versões de kernel acima da 2.2.x, e o sistema anfitrião (host) com qualquer kernel de versão superior a 2.2.x suporta-o facilmente em thread mode (ou seja, em modo não-SKAS3).
A partir do Linux 2.6.0 o UML já está integrado na árvore principal das fontes de código do kernel. Um patch especial para o kernel do sistema anfitrião, designado SKAS3, é geralmente aplicado, especialmente em sistemas que corram mais do que uma instância dos guests. Este patch melhora significativamente o desempenho e a segurança: os processos que correm em UML partilham o mesmo endereço (do ponto de vista do sistema anfitrião), o que leva a que a memória dentro do UML não esteja protegida pela unidade de gestão de memória do kernel (Memory management unit no original). Este facto leva a que determinados tipos de software maliciosos, dentro do guest que esteja a correr num sistema non-skas, conseguirá modificar o conteúdo do espaço de memória de outros processos UML, ou mesmo a memória de kernel partilhada entre os diversos guests. O referido patch SKAS3 não está ainda na árvore principal do kernel Linux, mas é no entanto incluido em várias distribuições.
O UML foi originalmente desenhado para processadores x86, mas é portável para algumas arquiteturas, incluindo ia64 e PowerPC.