Servidor Terminal Linux/6.1. El proceso de arranque de un cliente fino
Apariencia
- Cargar el kernel de Linux en la memoria del cliente fino. Esto puede hacerse de distintas maneras, entre ellas: PXE, gPXE, Etherboot o yaboot.
- Cada uno de los métodos de arranque se explicará más adelante en este capítulo. Pero por ahora, se debe notar que en la mayoría de los casos usando una tarjeta de red con PXE para arrancar es la forma más rápida y sencilla de configurar
- Una vez que el kernel ha sido cargado en la memoria, comenzará la ejecución.
- El núcleo inicializar todo el sistema y los periféricos que reconozca.
- Aquí es donde la diversión realmente comienza. Durante el proceso de carga del núcleo, una imagen initramfs también será cargada en la memoria.
- Normalmente, cuando el núcleo ha terminado de arrancar, se pondrá en marcha el nuevo task launcher upstart, que se encargará de la puesta en marcha de un servidor o una estación de trabajo. Pero, en este caso, hemos instruido al kernel para que cargue un pequeño shell script en su lugar. Este script se llama /init,y reside en la raíz de initramfs.
- El script /init empieza por montar /proc y /sys, arranca udev para descubrir e inicializar el hardware, especialmente la tarjeta de red, que es necesaria en todo aspecto para arrancar de aquí en más. También, crea un pequeño disco en RAM, donde se puede guardar cualquier cosa que se necesite, por ejemplo, para configurar el archivo xorg.conf.
- Se configura la interfaz de loopback de la red. Esta es la interfaz de la red que tiene 127.0.0.1 como dirección IP.
- Se corre un cliente DHCP llamado ipconfig para hacer otra consulta al servidor DHCP Esta nueva consulta obtiene información tal como el nfs root server, el default gateway y otros parámetros importantes del sistema del archivo dhcp.conf
- Cuando ipconfig obtiene una respuesta del servidor, la información que se recive se usa para configurar la interfaz Ethernet y para determinar desde que servidor se va a montar el root.
- Hasta este momento el sistema de directorio ha sido un disco ram. Ahora el script /init montará un nuevo sistema de directorio via NBD o NFS. En el caso que sea via NBD, la imagen que será cargada será generalmente /opt/ltsp/images/i386.img. Si la raíz es montada via NFS, entonces el directorio que será exportado desde el servidor es típicamente /opt/ltsp/i386. No es posible montar el nuevo sistema de directorio como /i. Primero debe ser montado a un directorio separado. Luego hará un run-init, que cambiará el sistema de directorio raíz actual por un nuevo sistema de directorio. Cuando esta etapa se completa, el sistema de directorio quedará mintado en /. A esta altura, cualquier directorio que necesite ser creado o escrito para un arranque normal , como por ejemplo /tmp, o /var, son montados en este momento.
- Una vez que el montado del nuevo sistema de directorios fue finalizado, hemos terminado con el script /init y se necesita llamar al verdadero programa /sbin/init.
- El programa init va a leer el directorio /etc/event.d y comenzará a configurar el ambiente del cliente fino. A partir de aqui en el comienza se ejecutará el primer comando de /etc/rcS.d.
- Se ejecutará el comando S32ltsp-client-setup que configurará muchos aspectos el ambiente del cliente fino, como por ejemplo chequear si los dispositivos locales necesitan necesitan arranque, cargar algún módulo específico, etc.
- A continuación el programa init va a comenzar a ejecutar comandos en el directorio /etc/rc2.d
- Uno de los items en el directorio /etc/rc2.d es el comando S20ltsp-client-core que estará ejecutándose mientras que el cliente fino está arrancando.
- El archivo lts.conf será parseado, y todos los parámetros en ese archivo que se correspondan con ese cliente fino serán definidos como variables de ambiente para ser usadas por el script S20ltsp-client-core.
- Si el sonido está configurado el demonio pulseaudio será arrancado para permitir conexiones remotas de audio desde el servidor para tocar en el cliente.
- Si el cliente soporta dispositivos locales, el programa ltspfsd es ejecutado permitiendo al servidor leer de dispositivos como "memory sticks" o CDs mapeados con el cliente fino.
- En este momento alguna de las sesiones definidas en el archivo lts.conf será ejecutada. Las sesiones por pantalla son lo que se va a ver en todas las pantallas de sus terminales virtuales. Estas son las pantallas virtuales estándares que tienen las distribuciones de GNU/Linux por ejemplo de Alt-F1, hasta Alt-F10. Por defecto un "getty" estándar basado en caracteres va a correr en la pantalla 1 (SCREEN_01 en el archivo lts.conf ). También, si no se especifica nada en el archivo lts.conf , una script de pantalla ldm va a se ejecutado en SCREEN_07. El LTSP Display Manager (ldm) es el administrador de login por defecto para LTSP.
- Si SCREEN_07 esta cargada con un valor ldm, o startx, entonces el sistema X Windows será ejecutado, brindándole una interfaz gráfica de usuario. Por defecto el servidor Xorg va a testear la tarjeta, va a crear un archivo /etc/X11/xorg.conf con valores por defecto en el disco ram de la terminal y va a comenzar xorg con esa configuración.
- El servidor X va a crear un túnel encriptado ssh hacia el servidor, en caso de ldm, o una consulta XDMCP al servidor LTSP, en el caso de startx. Para cualquiera de los casos se va a ver una caja de login en la terminal.
- En este momento el usuario puede loguearse. Cuando lo hagan obtendrán una sesión en el servidor.
Esto confunde a mucha gente al principio. Están sentados en un cliente ligero, pero están ejecutando una sesión en el servidor. Todos los comandos que se ejecutan se ejecutan en el servidor, pero la salida se mostrará en el cliente fino.