sarnold | (hmm, looks like ismak is doing his presentation in english in #linux :) |
raul | hola... |
raul | buenas noches ;-) |
raul | bien, esta es una introduccion a User Mode Linux |
* Playing 'ismak.txt' to #redes with 7000ms delay |
> An Introduction to |
> User Mode Linux |
> I - Introducción |
> Esto es una pequeña introducción a User Mode Linux (UML). Basicamente es |
raul | para, q no es aqui |
> una recopilación de la documentación del proyecto, que podeis encontrar en la web |
> del proyecto (http:/user-mo e-linux.sourceforge.net). |
> Explicaré que es UML, alguna descripción de para que los está usando la gente, sus |
> características y como puedes instalar UML. |
> . - Ejecutar Linux dentro de si mismo |
> Podemos leer una pequeña descrición de que es UML en al web del projecto |
> (http://user-mode-linux.sourceforge.net): |
> " User-Mode-Linux es una forma segura de ejecutar Linux dentro de si mismo. |
> Te provee de una máquina virtual que puede tener más hardware y software virtual |
> que tu maquina real. El almacenamiento de disco se realiza completamente en un |
> fichero almacenado en tu disco duro. Puedes controlar el acceso de la máquina virtual |
> al hardware que tu desees, nada que hagas en la máquina virtual puede dañar datos |
> o software de tu sistema real" |
> Esto parece entretenido. Podemos tener un Linux dentro de nuestro propio Linux, y |
> podemos hacer lo que queramos, porque es como otro sistema. UML te permite |
> ejecutar Linux como un proceso normal dentro del sistema real. |
> Básicamente, UML es el |
Arador | el porte del kernel linux |
Arador | a la interfaz de las llamadas del sistema de linux |
Arador | en vez de directamente al hardwre |
Arador | que significa esto? |
Arador | trata a Linux como una plataforma en la cual el kernel puede ser portado, como las plataformas Intel, Mips, Alpha |
Arador | Todos los dispositivos accesibles dentro de la maquina virtual son virtuales y UML soporta uel amplio rango de dispositivos soportados por linux, como |
Arador | - Consola y lineas serie |
Arador | - Dispositivos bloque |
Arador | - Dispositivos de red |
> <ismak> | Process 1 | Process 2 | ...| |
Arador | Normalmente el kernel Linux habla hacia el hardware (tarjeta de red, de video, de sonido...) y cualquier programa que halal en el sistema pregutna al kernel para operar con el hardware |
Arador | +-----------+-----------+----+ |
Arador | | Process 1 | Process 2 | ...| |
Arador | +-----------+-----------+----+ |
Arador | | Linux Kernel | |
Arador | +------------------------------+ |
Arador | | Hardware | |
Arador | +------------------------------+ |
> <raul> El kernel de UML no habla con el hardware, habla con un kernel Linux "real" (el kernel del sistema donde esta corriendo nuestro UML) como cualquier otro programa. Esto significa que los programas pueden ejecutarse dentro de UML como si estuvieran ejecutandose en un kernel normal, como esto: |
> <raul> +-----------------+ |
raul | | Proceso 2 | ...| |
raul | +-----------+--------------------+ |
raul | |Proceso 1 | User-Mode Linux | |
raul | +---------------------------------+ |
raul | | Kernel Linux | |
raul | +---------------------------------+ |
raul | | Hardware | |
raul | +---------------------------------+ |
Arador | algunos de los beneficios de UML son: |
Arador | - SI user mode linux se cuelga, el sistema que ejecut aUML todavia esta bien y no puede ser dañado por el cuelgue de UML |
Arador | - user mode linux puede ser ejecutado por usuarios no root |
raciel | uml puede ejecutarse como otro proceso así que puede depurarse. |
raciel | puedes utilizarlo para probar nuevas aplicaciones, nuevos kernels, nuevas distribuciones (ejecutar diversas distribuciones simultaneamente) |
raciel | II. para qué la gente lo utiliza? |
> II - What are people using it for? (wait for the translator) |
raciel | hosting virtual |
> podemos usar UML para Virtual hosting. UML nos provee de un sistema completo Linux, asi que podemos ejecutar cualquier cosa q pueda ejecutarse en nuestro host. |
> <raul> Un ejemplo de un virtual hosting es usermodelinux.org, administrado por David Coulson, que esta ejecutandose en un sistema User Mode Linux. |
raul | ------------------------------- |
raul | Desarrollo y debugging del kernel |
raul | Este es un buen metodo para depurar el kernel. Si nuestro sistema UML falla, el sistema q esta ejecutando UML continuan bien, nuestro sistema no es dañado. |
jacobo | Podemos utilizar programas de depuración como gdb, gprof y gcov. El desarrollo de los controladores es más eficiente, porque no tenemos que reiniciar la máquia, lo que reduce el tiempo de desarrollo. |
jacobo | Depuración de procesos |
raul | Depuracion de procesos |
jacobo | UML se puede utilizar para depurar procesos de nivel de usuario. Si queremos depurar algún proceso, podemos lanzar UML, establecer un punto de interrupción en la llamada al sistema y ejecutar el programa. |
jacobo | Jugar con seguridad con los últimos núcleos |
jacobo | Podemos utilizar UML para sondear de una forma segura el último núcleo, así que si el núcleo contiene erroes, como erroes de corrupción de ficheros, no puede dañar ningún dato importante de fuera de UML. |
jacobo | Probar nuevas distribuciones |
jacobo | El sistema de ficheros del UML está completamente contenido dentro de un fichero, así que no necesitamos utlizar toda una partición para ello. |
jacobo | Podemos encontrar varios sistemas de ficheros raíz listos para utilizarlos cargados con varias distribuciones en la web de UML (http://sourceforge.net/project/showfiles.php?group_id=429) o podemos crearnuestro propio sistema de ficheros desde cero.ñ Más tarde veremos un ejemplo con la distribución Debian. |
jacobo | Educación. |
jacobo | Es útil para estudiantes que necesitan una máquina dedicada, para enseñar desarrollo de SO, administración de redes y administración general del sistema. |
jacobo | Desarrollo experimental |
jacobo | Nuestra máquina virtual puede correr con más dispositivos que el sistema físico que ejecut UML, así que podemos tener un sistema virtual con más memoria, más dispositivos y más procesadores. |
jacobo | Podemos hacer desarrollo y pruebas de capacidaades de hardware aún cuando no tengamos el hardware relevante. |
jacobo | Hacer cosillas con un sistema que está funcionando |
jacobo | Tenemos un SO completo ejecutándose fuera de UML, así que podemos utilizarlo para "mirar dentro" del núcleo, lo que es imposible en un núcleo nativo. |
jacobo | Como una caja arenera (sandbox) o cárcel segura |
jacobo | Los procesos que se ejecutan dentro de uml no tienen acceso al sistema que ejecuta uml, así que los programas maliciosos que se ejecuten dentro de uml no pueden dañar nuestro sistema real. |
jacobo | Redes virtuales |
jacobo | Podemos utilizar la red en un uml que se está ejecutando. Podemos establecer una red virtual si queremos probar servicios experimentales. Más tarde explicaré cómo establecer un uml con soporte de red. |
jacobo | Como un entorno de pruebas |
jacobo | Probar cierto software requiere reiniciar la máquina, así que con uml podemos evitar esta pérdida de tiempo. Podemos automatizar estas pruebas. Hay un pequeño módulo de perl que implementa un objeto UML que proporciona métodos para arrancar una máquina virtual, conectarse a ella, ejecutar comandos y apagarla. Podemos encontrarla en la página de descargas (http://sourceforge.net/project/showfiles.php?group_id=429) |
jacobo | Práctica de recuperación de desastres |
jacobo | Si quieres saber qué ocurre uando ejectas el comando rm -fr / ;-) o quieres practicar la recuperación de un desastre se puede utilizar uml como máquina de prácticas. Puede ser divertido ; |
jacobo | :-) |
jacobo | Entorno Linux para otros sistemas operativos |
jacobo | UML sólo corre en Linux ahora, pero hay varios proyectos para portar uml a otrs SO, para poder tener un entorno linux completo en otro SO |
jacobo | Ahora que sabemos qué es user mode linux y cómo se puede utilizar, voy a explicar algunos ejemplos prácticos e uml. Cómo instalar, desde cero, un uml basado en Debian |
jacobo | III - Un ejemplo práctico |
jacobo | Necesitamos un núcleo UML y un sistema de ficheros raíz para arrancarlo. Podemos obtener el núcleo instalando el paquete rpm o deb, o pacheando el núcleo y compilando nuestro núcleo UML. |
jacobo | Los paquetes .rpm y .deb también proporcionan un conjunto de herramientas de espacio de usuario, módulos del núcleo y documentación. |
jacobo | Instalación desde el código fuente |
jacobo | Si quieres compilar UML desde el código fuente, tienes que descargar el parche y aplicarlo al código fuente del núcleo Linux correspondiente: |
jacobo | cd linux-2.4.19 |
jacobo | patch -p1 < ul-patch-2.4.19-37 |
jacobo | Compilar el núcleo en modo usuario es como compilar cualquier otro núcleo. Este es el proceso. Tras parchear el núcleo tenemos que compilarlo: |
jacobo | make menuconfig ARCH=um (puede utilizar make xconfig y make config) |
jacobo | La configuración por defecto del núcleo también funciona, así que no tienes que cambiar nada. Si quieres puedes cambiar algo. Seguramente nada quede dañado. Ahora tenemos que compilar nuestro nuevo núcleo: |
jacobo | make linux ARCH=um |
jacobo | Tras la compilación tienes el núcleo en modo usuario, llamado linux, en el directorio superior de su árbol de fuente. |
jacobo | hora vamos a compilar e instalar los módulos del núcleo. Compilamos los módulos en la misma manera que un núcleo nativo con la excepción del 'ARCH=um': |
jacobo | make modules ARCH=um |
jacobo | Podeis instalarlos utilizando ftp, subiéndolos a nuestro UML o podemos montar nestro sistema de ficheros raíz y copiarlos en el directorio apropiado: |
jacobo | make modules_install INSTALL_MOD_PATH=`pwd`/mnt ARCH=um |
jacobo | umount mnt |
jacobo | esto utilizará el proceso de compilación del núcleo para instalar nuestros módulos en nuestro sistema de ficheros raíz. |
jacobo | Si qeremos tuilizar las utilidades uml, tenemos que obtener el código fuente y compilarlo. |
jacobo | Instalación de Debian |
jacobo | Bien, ahora voy a explicar la forma fácil de obtener un uml que funciona, con debina por supuesto ;) |
jacobo | Primero, la versión woody de debian tiene los siguientes paquetes uml: |
jacobo | user-mode-linux |
jacobo | user-mode-linux-doc |
jacobo | uml-utilities |
jacobo | Tenemos que instalar el paquete user-mode-linux: |
jacobo | apt-get install user-mode-linux (el paquete uml-utilities se instalará automáticamente por las dependencias de paquetes) |
jacobo | Dijimos que el sistema de ficheros raíz de uml será un fichero, así que vamos a crear el fichero apropiado: |
jacobo | dd if=/dev/zero of=root_fs_woody bs=1M count=100 |
jacobo | De esta manera creamos un fichero de 100 megas. Podemos poner el tamaño que queramos. |
jacobo | Este fichero puede tener un sistema de ficheros ext2. Utilizamos mke2fs para crear el sistema de ficheros ext2: |
jacobo | /sbin/mke2fs -Fq root_fs_woody |
jacobo | Bien, tenemos nuestr sistema de ficheros raíz, ahora vamos a montarlo y crear nuestra estructura de ficheros: |
jacobo | mkdir /mnt/ml |
jacobo | mkdir /mnt/uml |
jacobo | mount root_fs_woody /mnt/uml -o loop |
jacobo | Obtenemos el paquete del sistema base de nuestra versión de Debian (he utilizado la última: woody): |
jacobo | wget ftp://ftp.debian.org/debian/dists/woody/main/disks-i386/base-images-current/basedebs.tar |
jacobo | Instalamos el sitema base en nuestro fichero: |
jacobo | debootstrap --unpack-tarball /PATH/basedebs.tar woody /mnt/uml |
jacobo | bien, una pregunta |
jacobo | <arador> ¿no se puede utilizar una partición como fs raízde UML? |
jacobo | no, el almacenamiento de disco de UML es un fichero |
jacobo | o más ficheros si quieres simular más discos duros |
jacobo | Ahora tenemos que configurar ciertos ficheros de nuestro sistema uml: |
jacobo | cd /mnt/debinst |
jacobo | vi etc/fstab |
jacobo | # /etc/fstab: static file system information. |
jacobo | # file system mount point type options dump pass |
jacobo | /dev/ubd0 / ext2 defaults 0 0 |
jacobo | proc /proc proc defaults 0 0 |
jacobo | otro fichero: |
jacobo | vi etc/inittab |
jacobo | comentamos las líneas de arriba, para que sólo se lance un xterm cuando el sistema arranque. |
jacobo | 1:2345:respawn:/sbin/getty 38400 tty1 |
jacobo | #2:2345:respawn:/sbin/getty 38400 tty1 |
jacobo | #3:2345:respawn:/sbin/getty 38400 tty3 |
jacobo | #4:2345:respawn:/sbin/getty 38400 tty4 |
jacobo | ... |
jacobo | creamos un fichero de fuentes vacío: |
jacobo | touch etc/apt/ources.list |
jacobo | Bien, ahora podemos lanzar nuestro núcleo UML: |
jacobo | linux udb0=root_fs_woody devfs=nomount rw |
jacobo | Si queremos soporte de cdrom: |
jacobo | linux udb0=root_fs_woody udb2r=/dev/cdrom devfs=nomount rw |
jacobo | ¿Qué ocurre con el soporte de red? es la última part de la conferencia |
jacobo | Redes con User Mode Linux |
jacobo | Necesitamos el módulo del dispositivo TUN/TAP, así que necesitaréis recompila el núcleo (no el núcleo uml) con este módulo soportado. |
jacobo | Cuando tengamos TUN/TAP como módulo, lo insertamos en el núcleo: |
jacobo | insmod tun |
jacobo | Creamos el interfaz TUN/TAP: |
jacobo | tunctl -u uidusr |
jacobo | donde uidusr es el uid del usuario que ejecuta uml. |
jacobo | El usuario que va a usar el dispositivo TUN/TAP |
jacobo | Configuramos el interfaz: |
jacobo | ifconfig tap0 ip_system netmask netmask_system broadcast broadcast_system |
jacobo | donde ip_system, netmask_system y broadcast_system son los parámetros de red de nuestro sistema real (el sistema que ejecuta uml) |
jacobo | Ahora configuramos la tabla de rutado. Tenemos qu permitir forwarding y crear manualmente una entrada de mapeado de direcciones ARP para el servidor UML: |
jacobo | bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' |
jacobo | route add -host uml_ip dev tap0 |
jacobo | bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp' |
jacobo | arp -Ds uml_ip eth0 pub |
jacobo | uml_ip debe ser la ip del interfaz de red de uml. |
jacobo | /dev/net/tun debe tener permisos de escrityura para el usuario que ejecuta uml: |
jacobo | chgrp gid /dev/net/tun |
jacobo | chgrp gid /dev/net/tun |
jacobo | chmod 660 /dev/net/tun |
jacobo | Nuestor sistema está preparado para ejecutar uml con soporte de red: |
jacobo | linux udb0=root_fs_woody devfs=nomount rw eth0=tuntap,tap0 |
jacobo | Ahora teneis que configurar vuestros par'ametros de red en el sistema uml (ip, gateway, dns, ...) y tendréis un sistema uml con soporte de red. |
jacobo | Ahora lo único que falta es disfrutarlo ;-) |
jacobo | Esto es todo... |
jacobo | Gracias y felicidades a los traductores |
jacobo | thx: Raul, raciel, Mjesus, Arador |
> clap clap clap clap clap clap clap clap clap clap |
> clap clap clap clap clap clap clap clap clap clap |
> clap clap clap clap clap clap clap clap clap clap |
> bravo por jacobo !!!! |
jacobo | ok, si quereis la conferencia en pdf: |
angelLuis | jejeje |
angelLuis | si |
overflow | exceleeeente! |
overflow | clap clap clap clap clap clap clap clap |
overflow | clap clap clap clap clap clap clap clap |
overflow | clap clap clap clap clap clap clap clap |
jacobo | http://www.inkatel.int/new/textos/umeet/2002/umeet2002.pdf |
Abelanch | clap clap clap clap clap |
slack | clap clap clap clap clap clap clap |
angelLuis | clap clap clap clap |
Cuqui | bravo! |
jacobo | <MiTo> ismak podrias dar un ejemplo con los files COW ? |
jacobo | MiTo, si, no es muy difícil |
jacobo | ./linux udb0=cow_file,base_file |
jacobo | donde base_file es un sistema de ficheros raíz de solo lectura. Asegúrate de que a partir de ahora nunca modifiques base_file |
jacobo | <Arador> ismak: en UNIX todo es un fichero, ¿por qué no se puede utilizar una partición como fs raíz? |
jacobo | <catfish> Arador: puedes utilizar una partición como sistema de ficheros raíz, pero no es obligatorio. |
jacobo | <sergio> ismak: ¿no es inkatel.com en lugar de .int? |
jacobo | <ismak> lo sient |
jacobo | <ismak> he hecho copy/paste :-) |
jacobo | <ismak> s/.int/.com/ ;-) |
eduardo | clap clap clap clap clap clap clap |
Abelanch | clap clap clap clap clap clap |
angelLuis | bravo! |
jacobo | bueno, y ahora dicen que si intentas compartir una partición entre uml y el sistema "vivo" la puedes dañar, y tal... :D |
jacobo | hala |
jacobo | <Arador> Ya que UML es un sistema linux, ¿se puede acceder al hardware si quieres? <catfish> normalmente no. El núcleo UML puede ser replanificado, y eso es malo para hablar con chips físicos. Es por eso por lo que la mayoría de "dispositivos" que usas son virtuales, y sólo el núcleo anfitrión habla con los chips físicos. |
jacobo | <catfish> Sin embargo, hay excepciones. Un núcleo uml puede habar con algunos dispositivos usb anfitriones y algunas otras cosas específicas |
ismak2 | gracias por la traduccion jacobo |
ismak2 | enhorabuena |
angelLuis | si |
angelLuis | enhorabuena :)) |
Arador | jacobo es el primer traductor que veo capaz de llevar la traduccion a la vez que la conferencia :) |
MiTo | jacobo por favor, podrias traducirle al ingles mi pregunta ? |
angelLuis | si |
jacobo | qué pregunta? |
angelLuis | :) |
MiTo | <MiTo> catfish pero no hay problema si esta montado /mnt/uml/ y corro el uml y luego compilo los modulos y hago make |
MiTo | modules_install y su PATH? |
MiTo | gracias jacobo :) |
jacobo | Arador: son ya tres años de práctica traduciendo software :) |
Arador | jacobo: se nota ;) |
jacobo | <catfish> MiTo: deberías desmontar el sistema de ficheros raíz antes de iniciar uml, si |
MiTo | ok, muchas gracias jacobo , por eso eran los errores :þ |
jacobo | jeje |