Changes between Version 15 and Version 16 of InitrdCliente


Ignore:
Timestamp:
Sep 14, 2009, 12:52:08 AM (16 years ago)
Author:
adelcastillo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • InitrdCliente

    v15 v16  
    33= Cliente Initrd =
    44
    5 El cliente initrd.gz es sistema muy liviano que nos permitirá instalar sistemas con un arranque muy rápido. El initrd.gz es un archivo comprimido que tiene un sistema de ficheros completo. Modificar el initrd.gz puede ser bastante molesto, así que nuestro objetivo es no tener que modificarlo nunca más, pero que funcione en todos los ordenadores posibles sin que haya que actualizarlo continuamente. Para ello hemos creado un script que lo genera automáticamente descargandoselo de internet. El script lo que hace es usar el initrd.gz de Ubuntu y modificarle simplemente el arranque. Este arranque evita que se ejecute la instalación y ejecuta un script determinado montado por NFS. Por ahora es /opt/opengnsys/init/$IP.sh donde $IP es, obviamente, la ip que tenga asignada en estos momentos el ordenador.
     5El cliente initrd.gz es sistema muy liviano que nos permitirá instalar sistemas con un arranque muy rápido. El initrd.gz es un archivo comprimido que tiene un sistema de ficheros completo. Modificar el initrd.gz puede ser bastante molesto, así que nuestro objetivo es no tener que modificarlo nunca más, pero que funcione en todos los ordenadores posibles sin que haya que actualizarlo continuamente. Para ello hemos creado un script que lo genera automáticamente descargándolo de internet. El script lo que hace es usar el initrd.gz de Ubuntu y modificarle simplemente el arranque. Este arranque evita que se ejecute la instalación y ejecuta un script determinado montado por NFS.
    66
    77Además el script va a ser mejorado, pudiendo elegir entre Ubuntu o Debian, permitir descargar el núcleo o no,etc. y se está intentando borrarle todo lo que tenga que ver con la instalación de Ubuntu. Cualquier cosa que queramos agregarle al sistema lo haremos a través de NFS. Ejemplos de cosas que se podrían agregar a través NFS sería:
    88 * Arranques polimórficos. El cliente buscará que hacer en el servidor, que puede ofrecerle un script distinto cada vez.
    9  * Ejecutables compilados estáticamente. Estáticamente para que no haya que mantener todos los programas compilados con las misma libreria, menos manteniento. Es importante modificar el PATH en el script de arranque para agregar las rutas nuevas de los ejecutables nuevos.
     9 * Ejecutables compilados estáticamente. Estáticamente para que no haya que mantener todos los programas compilados con las misma librería, menos manteniento. Es importante modificar el PATH en el script de arranque para agregar las rutas nuevas de los ejecutables nuevos.
    1010 * Módulos para el kernel. Podríamos coger módulos de la propia Ubuntu para que haya incompatibilidad y poder hacer insmod a través de NFS, por ejemplo el del ratón que no viene por defecto.
    1111
    12 = ¿Qué debe tener el script de arranque? =
    13  * Primero deberia montar por NFS todo lo necesario.
     12= ¿Qué debe hacer el script de arranque? =
     13 * Primero debería montar por NFS todo lo necesario.
    1414 * Si se montan directorios con ejecutables hay que agregarlo al PATH, por ejemplo las librerias de instalación/restauración del sistema.
    1515 * Si se montan directorios con módulos como el psaux.ko hay que hacerles insmod para los que queramos.
    16  * Si queremos usar el modo gráfico hay que arrancarlo con framebuffer y montar por NFS el ejecutable ogn-browser. Más información en ogn-browser.
     16 * Si queremos usar el modo gráfico hay que arrancarlo con framebuffer y montar por NFS el ejecutable browser. Más información en browser.
    1717 * Si queremos usar el ratón hay que añadir necesariamente el módulo psmouse.ko.
    1818
     
    2323== !BusyBox ==
    2424
    25 Este tipo de instalación (debian en modo consola) se basan en usar la herramienta !BusyBox. Es un ejecutable que proveé la mayoria de las herramientas unix en un espacio reducido. Entonces si miramos por ejemplo el directorio /bin del initrd veremos que sólo son enlaces a la herramienta busybox. Un 'ls -l' se ejecutaría como un 'busybox ls -l' dentro de la instalación. Todo lo que no tenga el busybox es lo que deberemos agregar por NFS y compilación estática. Busybox es también tiene un init. Sabe usar el /etc/inittab pero no tiene soporte para arranque multinivel. El fichero /etc/inittab es el fichero que usa el primer proceso llamada "init" para saber que tiene que hacer. Para más informacción man inittab. El fichero que trae el initrd.gz de Ubuntu lo primero que hace es llamar a debian-installer-startup que llama, a su vez, a los scripts de /etc/rcS.d/. Si agregáramos nuestros scripts directamente en ese directorio, como viene en el apartado "Modificar el arranque" conseguiríamos ejecutar nuestro código antes que la instalación de Ubuntu, y sí al final ponemos un restart o un shutdown nadie sabría que es una instalación de Ubuntu. Se podría intentar eliminar todo rastro de la instalación pero trae problemas a la hora de arrancar (produce kernel panics), así que de momento sólo añade cosas.
     25Este tipo de instalación (debian en modo consola) se basan en usar la herramienta !BusyBox. Es un ejecutable que proveé la mayoria de las herramientas unix en un espacio reducido. Entonces si miramos por ejemplo el directorio /bin del initrd veremos que sólo son enlaces a la herramienta busybox. Un 'ls -l' se ejecutaría como un 'busybox ls -l' dentro de la instalación. Todo lo que no tenga el busybox es lo que deberemos agregar por NFS y compilación estática. Busybox es también EL init. Sabe usar el /etc/inittab pero no tiene soporte para arranque multinivel. El fichero /etc/inittab es el fichero que usa el primer proceso llamada "init" para saber que tiene que hacer. Para más informacción man inittab. El fichero que trae el initrd.gz de Ubuntu lo primero que hace es llamar a debian-installer-startup que llama, a su vez, a los scripts de /etc/rcS.d/. Si agregáramos nuestros scripts directamente en ese directorio, como viene en el apartado "Modificar el arranque" conseguiríamos ejecutar nuestro código antes que la instalación de Ubuntu, y sí al final ponemos un restart o un shutdown nadie sabría que es una instalación de Ubuntu. Se podría intentar eliminar todo rastro de la instalación pero trae problemas a la hora de arrancar (produce kernel panics), así que de momento sólo añade cosas.
    2626
    2727== Modificar el arranque ==
    2828
    29 En el directorio /etc/rcS.d/ creamos los archivos !SxxNombreDescriptivo siendo xx números de prioridad. Se crean los siguientes tres archivos:
    30 
    31  * S01dhclient (pide dhcp)
    32  * S02montarnfs (monta y ejecuta el archivo /opt/opengnsys/init/$IP.sh)
    33  * S99restart (reinicia por si en caso de error que nunca salga la instalación de Ubuntu)
     29En el directorio /etc/rcS.d/ creamos los archivos !SxxNombreDescriptivo siendo xx números de prioridad.
    3430
    3531== Recomprimir initrd.gz ==
     
    4440 * Permitir descargar Debian también.
    4541 * Permitir hacer sólo algunos pasos y otros no. (Para crear initrd.gz personalizados).
    46  * Borrar restos de la instalaciónd de Ubuntu. (very very very low priority).
    47 
    48 = Cómo crear el cliente initrd =
     42 * Borrar restos de la instalación de Ubuntu. (very very very low priority).
    4943
    5044== PXE ==