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