User-mode Linux ( UML ) es un sistema de virtualización para el sistema operativo Linux basado en una adaptación arquitectónica del núcleo Linux a su propia interfaz de llamadas al sistema . Esto permite que múltiples sistemas operativos virtuales basados en el núcleo Linux (conocidos como invitados) se ejecuten como aplicaciones dentro de un sistema Linux normal (conocido como host). Un núcleo Linux compilado para la arquitectura UML puede arrancar como un proceso bajo otro núcleo Linux, completamente en el espacio de usuario , sin afectar la configuración ni la estabilidad del entorno del host.
Este método ofrece al usuario una forma de ejecutar varias máquinas virtuales Linux en un único hardware, lo que permite cierto aislamiento, normalmente sin modificar la configuración ni la estabilidad del entorno anfitrión, ya que cada máquina virtual es simplemente una aplicación normal que se ejecuta como un proceso en el espacio de usuario.
Aplicaciones
Numerosas cosas se vuelven posibles mediante el uso de UML. [ 1 ] Se pueden ejecutar servicios de red desde un entorno UML y permanecer totalmente aislado del sistema Linux principal en el que se ejecuta el entorno UML. [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] Los administradores pueden usar UML para configurar honeypots , [ 7 ] que permiten probar la seguridad de sus computadoras o red. UML puede servir para probar y depurar software nuevo sin afectar negativamente al sistema anfitrión. UML también puede usarse para la enseñanza y la investigación, proporcionando un entorno de red Linux realista con un alto grado de seguridad.
En entornos UML, las versiones del kernel del host y del invitado no tienen por qué coincidir, por lo que es perfectamente posible probar una versión de vanguardia de Linux en modo usuario en un sistema con un kernel mucho más antiguo. UML también permite depurar el kernel en una sola máquina, mientras que otras herramientas de depuración (como kgdb ) requieren dos máquinas conectadas mediante un cable módem nulo .
Algunos proveedores de alojamiento web ofrecen servidores virtuales con tecnología UML a precios más bajos que los servidores dedicados tradicionales . Cada cliente tiene acceso de administrador a lo que parece ser su propio sistema, cuando en realidad un ordenador físico es compartido por muchas personas.
libguestfs ha admitido un backend UML desde la versión 1.24 [ 8 ] como alternativa al uso de QEMU o KVM.
Integración en el núcleo de Linux
La aplicación invitada UML (un archivo binario ELF de Linux ) estaba disponible originalmente como un parche para algunas versiones del kernel superiores a la 2.2.x, y el host con cualquier versión del kernel superior a la 2.2.x la soportaba fácilmente en el modo de subprocesos (es decir, sin SKAS3).
A partir de Linux 2.6.0, está integrado en el árbol de código fuente principal del kernel . Se ha implementado un método para ejecutar un espacio de direcciones del kernel separado (SKAS) que no requiere parchear el kernel del host. Esto mejora el rendimiento y la seguridad con respecto al antiguo enfoque de hilos rastreados, en el que los procesos que se ejecutan en el UML comparten el mismo espacio de direcciones desde el punto de vista del host, lo que provoca que la memoria dentro del UML no esté protegida por la unidad de gestión de memoria . A diferencia del UML actual que utiliza SKAS, un software defectuoso o malicioso dentro de un UML que se ejecuta en un host sin SKAS podría leer el espacio de memoria de otros procesos UML o incluso la memoria del kernel del UML. [ 9 ]
Comparación con otras tecnologías
En general, se considera que Linux en modo usuario tiene un rendimiento inferior al de algunas tecnologías de la competencia, como Xen y OpenVZ . El trabajo futuro para añadir compatibilidad con la virtualización x86 a UML podría reducir esta desventaja.
A menudo se cita como una ventaja de Xen (una tecnología de la competencia) la compatibilidad con el almacenamiento local de subprocesos (TLS). Esta compatibilidad también está disponible en los núcleos UML más recientes. Xen se centra en virtualizar toda la máquina, por lo que todos los sistemas que se ejecutan en una máquina Xen son, en realidad, máquinas virtuales. En UML, la máquina anfitriona no se virtualiza de ninguna manera, y solo los sistemas invitados son máquinas virtuales verdaderas. Esto permite que los invitados de UML accedan directamente a los sistemas de archivos y al hardware del anfitrión, donde es común mapear un directorio del anfitrión (por ejemplo, /uml/root → / ).
Plataformas compatibles
UML fue diseñado originalmente para el conjunto de instrucciones x86 , pero también se ha portado a otros, incluidos IA-64 y PowerPC . [ 10 ] [ 11 ] También se ejecuta en x86_64 [ 12 ] y debería ejecutarse en cualquier plataforma, ya que ptrace de Linux es uniforme en todas las plataformas.
Véase también
Referencias
- ↑ Landley, Rob (16 de diciembre de 2009). "Guía rápida y sencilla de UML de Rob" . Recuperado el 8 de agosto de 2023 .
- ↑ "Virtual Network User-Mode-Linux" . 13 de febrero de 2012. Consultado el 8 de agosto de 2023 .
- ↑ "Netkit: Características" . 3 de diciembre de 2009. Archivado del original el 11 de mayo de 2020. Consultado el 8 de agosto de 2023 .
- ↑ Jean-Vincent Loddo; Luca Saiu. "Marionnet: un laboratorio de red virtual" . Consultado el 8 de agosto de 2023 .
- ↑ "Documentación de Cloonix: v03-04" . 1 de junio de 2019. Consultado el 8 de agosto de 2023 .
- ↑ "¡Bienvenido a GINI! Un conjunto de herramientas para construir microinternets a nivel de usuario" . Universidad McGill . 28 de septiembre de 2009. Consultado el 8 de agosto de 2023 .
- ↑ "UML como trampa" . 13 de julio de 2007. Consultado el 8 de agosto de 2023 .
- ↑ Richard WM Jones (11 de agosto de 2013). "Backend experimental de Linux en modo usuario para libguestfs" . Recuperado el 29 de agosto de 2019 .
- ↑ Dike, Jeff (12 de abril de 2006). User Mode Linux . Prentice Hall . pág. 197. ISBN 9780131865051.
- ↑ Dike, Jeff (05/11/2001). "User-Mode Linux" (PDF) . ALS '01: Actas de la 5.ª edición anual de Linux Showcase & Conference . 5 – vía ACM Digital Library.
- ↑ "UML/ppc" . www.usenix.org . Consultado el 20 de noviembre de 2025 .
- ↑ "Cómo usar el modo de usuario en Linux" . xeiaso.net . Consultado el 1 de enero de 2026 .
Enlaces externos
- Documentación oficial
- Núcleos UML predefinidos
- Ejecutar Debian dentro de Debian con Linux en modo usuario
- Linuxzoo: Acceso gratuito en línea a UML
- Software de virtualización gratuito
- Variante del kernel de Linux
- Software de virtualización para Linux