Changes between Initial Version and Version 1 of PruebasNBDRoot


Ignore:
Timestamp:
Apr 13, 2010, 12:52:02 PM (15 years ago)
Author:
adelcastillo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PruebasNBDRoot

    v1 v1  
     1= Concepto =
     2
     3ESTADO ALFA
     4
     5El sistema actual se basa en un initrd vitaminado que consigue tener un sistema lo suficientemente bueno como para poder ejecutar OpenGnSys. Para conseguir poder añadir más programas y configuraciones al initrd se consigue montando un directorio por NFS.
     6
     7Problemas:
     8 * No hay un método de instalación bueno para estos clientes en un servidor.
     9 * NFS tiene problemas para soportar varios clientes.
     10 * El initrd tiene poca flexibilidad.
     11
     12Estas pruebas se realizan suponiendo (y por tanto no demostrado):
     13 * El cambio de initrd a root no tiene porque dar una duración excesiva, y una vez tomado el root tomado el control poder modificar el init para que no pierda más tiempo.
     14 * NBD permite mejorar los tiempos de NFS.
     15
     16Para ello usamos:
     17 * Debootstrap para generar el cliente base completo de Ubuntu para posteriormente mejorarlo.
     18 * NBD-server para poner al servicio del cliente generado por debootstrap para su arranque.
     19
     20= Estado actual de una posible instalación =
     21
     22Dependencias nuevas:
     23{{{
     24sudo apt-get install debootstrap nbd-server
     25}}}
     26
     27Generación del cliente:
     28{{{
     29mkdir -p /tmp/nbdroot
     30cd /tmp/nbdroot
     31dd if=/dev/zero of=nbdroot.img bs=1M count=1024
     32mkfs.xfs nbdroot.img
     33mkdir mnt
     34mount nbdroot.img mnt -o loop
     35debootstrap --arch i386 lucid mnt
     36}}}
     37
     38Esto crea un cliente básico. Ahora es cuando podemos hacerle todas las modificaciones necesarias al cliente para prepararlo de OpenGnSys. Por ejemplo instalarle todas los paquetes deb OpenGnSys. Como se observará es mucho más fácil de instalar cosas nuevas que en el actual sistema y además es muchísimo más flexible. Ya hemos eliminado dos de los inconvenientes que hablamos al principio. Seguimos:
     39{{{
     40sudo chroot mnt
     41# Ahora estamos dentro de la jaula
     42passwd # Por si una vez arrancado queremos probar algo ponemos contraseña al root
     43apt-get install nbd-client linux-image # Instalamos el kernel image y le añadimos soporte de nbd-client
     44# Nos preguntará si queremos que cuando pare el servicio de nbd-client pare todas las unidades. Le decimos que no!!
     45exit
     46}}}
     47
     48Ya hemos instalado lo necesario que no instala el debootstrap básico ¡¡en ARCHLINUX!! Esto podría variar con Ubuntu. En ArchLinux otras distribuciones Ubuntu como karmic el cliente es muchísimo más básico y no tiene instalado nada de sistema de ficheros. Se comenta más abajo. Ficheros que hay que copiar para el pxelinux son el mnt/initrd.img mnt/vmlinuz. Además otros cambios necesarios son:
     49{{{
     50echo Lucid > mnt/etc/hostname
     51echo 127.0.0.1 localhost.localdomain localhost >> mnt/etc/hosts
     52}}}
     53
     54mnt/etc/network/intefaces
     55{{{
     56# This file describes the network interfaces available on your system
     57# and how to activate them. For more information, see interfaces(5).
     58
     59# The loopback network interface
     60auto lo
     61iface lo inet loopback
     62
     63# The primary network interface, commented out for NFS root
     64#auto eth0
     65#iface eth0 inet dhcp
     66iface eth0 inet manual
     67}}}
     68
     69mnt/etc/fstab
     70{{{
     71# /etc/fstab: static file system information.
     72#
     73# <file system> <mount point>   <type>  <options>       <dump>  <pass>
     74proc            /proc           proc    defaults        0       0
     75none            /tmp            tmpfs   defaults        0       0
     76none            /var/run        tmpfs   defaults        0       0
     77none            /var/lock       tmpfs   defaults        0       0
     78none            /var/tmp        tmpfs   defaults        0       0
     79}}}
     80
     81Con esto tenemos un sistema que una vez arrancado funciona perfectamente. Para terminar como un comando para servir la imagen (¡¡RECORDAR DESMONTAR LA IMAGEN!!) (también se puede hacer modificando su fichero de configuración y haciendo /etc/init.d/nbd-server restart)  y los argumentos para pxelinux para arrancar:
     82{{{
     83sudo umount mnt
     84nbd-server -c 2345 /tmp/nbdroot/nbdroot.img
     85}}}
     86
     87PXELinux
     88{{{
     89kernel vmlinuz
     90append initrd=initrd.img nbdsrv=192.168.2.2 nbdport=2345 nbdroot=192.168.2.2,2345 root=/dev/nbd0 ip=192.168.2.3::192.168.2.2:255.255.255.0::eth0: rootdelay=1
     91}}}
     92
     93= Resultados =
     94De servidor un Atom y de arranque un ordenador portátil de la Universidad con procesador T2XXX, no muy potente, tarda en el arranque 10 segundos, sin contar el paso del kernel ni el de initrd.
     95
     96= TODO/Mejoras =
     97 * El proceso init no se modifica, podriamos ganarle tiempo por ahí pero no mucho ya que tarda muy poco un segundo o así, y entre otras cosas pone el framebuffer al máxima resolución.
     98 * Un initrd más pequeño. Como se comenta antes el debootstrap de ArchLinux mete muchas cosas por defecto entre ellos utilidades de sistema de ficheros o el bootsplash plymouth. Se podría hacer más pequeño. Mejoraría el paso del initrd, la descompresión y el arranque del initrd. Se podría hacer copiando en el chroot /usr/share/initramfs-tools/ en otro directorio prueba, eliminar todo lo innecesario y ejecutar mkinitramfs -C elotrodirectorio. Podría automatizarse con un paquete deb.
     99 * Hay que poner rootdelay=1 porque crea el /dev/nbd0 pero da un error diciendo que "/dev/nbd0 unknown partition table". Es como si el initrd que genera no este bien preparado para que arranque por nbd. En los scripts se observa que hay un delay si el root no está preparado. El tiempo por defecto es 30 segundos, cuando se sale de ese bucle continúa y arranca perfecto. Puede que cuando lucid salga estable se arregle o que haya que crear nuestro propio initrd como se dice en el punto anterior.
     100 * Paquetes deb de todo componente que vaya en el cliente.
     101 * Permitir dos root para arrancar siempre: sino esta disponible la cache que arranque por disco duro.
     102 * Crear bootsplash con plymouth.
     103 * Algo muy útil y curioso es que si el servidor nbd lo ejecutas con la opcion -c se le permite al cliente escribir en la imagen, pero el servidor lo escribe en un fichero distinto y cuando se desconecta el cliente borra el fichero dejando intacto el sistema. Creo que podría ralentizar pero es cuestión de probarlo.
     104
     105No hace falta implementarlo todo, lo más necesario es crear paquetes deb de los componentes indispensables (engine, clientadmin, etc) para poder instalar y poco a poco intentar personalizar el arranque con más paquetes deb que modifiquen el init y que creen otros initrd.