Hola,

 Andaba almorzando y mientras pensaba como resolver un peque�o gran problema
 con un programa en el que estoy trabajando me puse a divagar respecto a
 otra cosa... resulta que ac� en el edificio hay alguna cantidad de m�quinas
 decentes, enti�ndase, de P200 en adelante -- y algunas con cantidades
 respetables de memoria (32+ MB) -- pero m�s importante, no son m�quinas con
 un disco duro escaso... el �nico problema que tienen es Windows.

 En alg�n momento hab�a jugado con otro escenario distinto: la m�quina no
 ten�a disco duro del todo, as� que me hab�a puesto a tantear con NFS root,
 y digamos que anduvo, con unos problemas:

 * La red del edificio es de 10 Mb/s (y parece que el CI est� empecinado en
   que siga siendo as� por un rato largo)

 * Las NIC instaladas son... ah... no muy buenas

 * Las dos cosas anteriores tienen un par de efectos negativos sobre el NFS
   root:

   + No es muy r�pido (~200-300 kB/s vs 2-4 MB/s para un disco duro)
   + Un n�mero no alto de m�quinas satura r�pidamente la red

 Lo anterior me hizo pensar que teniendo alguna cantidad de espacio en una
 m�quina (digamos, 100 MB, menos que lo que usan... ciertos programas de
 officina), deber�a ser posible utilizar un disquete para bootear Linux a
 partir de un root montado via loop. Ahora, la pregunta: �es *posible*
 arrancar usando un sistema loop (mount -t ext2fs -o loop)?

 Mi idea es algo como esto:

 * Usar un disquete para bootear la m�quina

 * Ese disquete usa bootp para obtener su configuraci�n de red.

 * Cuando arranca, monta su sistema root via loop de una partici�n fat.
   Ahora viene lo interesante: si ese archivo no existe, monte un sistema
   NFS y copie el archivo al sistema local... n�tese que para que esto
   sirva, ya debe haber una cantidad no trivial de Linux corriendo. Eso
   quiere decir que el sistema inicialmente debe bootear a un sistema en un
   disco en RAM. De ese sistema que acaba de copiar, tiene que modificar una
   cantidad de cosas. Por ejemplo, el nombre de la m�quina. El servidor de
   nombres. El servidor de X (si, �quiero que esta cosa tenga X!). De hecho,
   algunas de estas cosas se pueden resolver manteniendo un segundo archivo
   en un sitio central... ese segundo archivo tendr�a /etc para esa m�quina.

 * Una vez que ha pasado por todo eso, bota el / montado en RAM y monta el
   que est� en el disco. �Presto! Cero tr�fico de red.

 * Luego de esto puede cambiar de runlevel para iniciar todas las cosas que
   necesite.

 �C�mo instalar esta cosa?

 $ dd if=/dev/zero of=/tmp/pinex.rot count=64 bs=1M
 $ mke2fs /tmp/pinex.rot
 $ mount -t ext2 -o loop /tmp/pinex.rot /mnt/pinex/root
 $ cd /mnt/pinex/root
 $ tar xvzf /misc/debian/dists/slink/main/disks-i386/current/base.tgz
 $ dpkg --root=/mnt/pinex/root pinex.deb
 $ dpkg --root=/mnt/pinex/root --set-selections < /etc/pinex.sel
 $ dpkg --root=/mnt/pinex/root -iGROEB /misc/debian/dists/slink/main/binary-i386
 [ las modificaciones que se requieran ]

 y ya hay un linux instalado en /tmp/pinex.img

 ahora el tiro es mover /etc/ fuera de /tmp/pinex.img y ponerlo en su propio
 sistema, que es algo como:

 $ dd if=/dev/zero of=/tmp/pinex.etc count=5 bs=512k
 $ mke2fs /tmp/pinex.etc
 $ mount -t ext2 -o loop /tmp/pinex.etc /mnt/pinex/etc
 $ cd /mnt/pinex/root/etc && find -print0 -depth | cpio -pv0d ../../etc
 [ y borrar la mayor parte de /mnt/pinex/etc ]

 En esos 64 MB se pueden poner muchas cosas... hay que notar que la m�quina
 no ocupa de muchas cosas por su naturaleza vol�til, y siempre es posible
 que una vez armada, robe^H^H^H^Hutilice m�s espacio de la partici�n VFAT
 mediante m�s loops. Esto no es lo mismo que UMSDOS, pues no es Linux sobre
 un sistema de DOS. Es un sistema ext2fs real viviendo en un archivo en un
 sistema VFAT.

 No creo tener tiempo para implementar esto... nada m�s quer�a dejar la idea
 escrita en alguna parte y exponerla a alg�n p�blico...

 Aplicaciones... ejercicio para el lector.

 De vuelta a mi problema,

        Marcelo

Responder a