Introducci�n
�Hab�is visto alguno de esos sitios Web donde te prometen una
versi�n de Linux muy �til con s�lo uno o dos diskettes? En ellos no
suelen haber demasiados programas ni tener acceso a ciertas
aplicaciones. Tratar� de mostrar c�mo se hacen un disco de boot/root,
que tendr� pr�cticamente todo lo que vayais a necesitar o a usar.
Antes de nada, necesitas uno o dos discos v�rgenes, dependiendo de
cu�nto software vayas a poner en tu versi�n de Linux. B�sicamente esta
versi�n de Linux tendr� un disco boot/root y quiz� un disco de
utilidades. Si no conoces estos t�rminos, te sugiero que eches un
vistazo al cap�tulo 2 del Bootdisk-HOWTO antes de comenzar.
�Ahora vamos a empezar! Estos son los pasos b�sicos para crear la
versi�n de Linux en diskette:
-
Compilar un kernel b�sico personalizado
-
Crear un sistema de ficheros para tu disco
-
Copiar todo en el/los diskette/s
Compilar el Kernel
Dado que un diskette s�lo almacena 1.44 Megabytes (1440 Kilobytes)
de datos, no puedes copiar el mismo kernel que utilizas al diskette.
Primero debes conseguir los fuentes del n�cleo y descomprimirlos en
/usr/src/linux. Luego ejecuta la siguiente orden desde el
directorio /usr/src/linux:
make config
Configura solamente aquello que realmente necesites. Yo,
personalmente, s�lo configuro el soporte para "ext2", soporte para la
disquetera (floppy disk), y soporte para "PPP". Tus elecciones pueden
se diferentes en funci�n de lo que decidas incluir. Ahora introduce el
siguiente comando:
make dep; make clean; make zImage
�make zImage es muy importante! Comprime el kernel
definitivo. Despu�s de que termine la compilaci�n, deber�s buscar el
nuevo n�cleo en /usr/src/linux/arch/i386/boot bajo el nombre
de zImage.
El sistema de
ficheros: No es solamente un conjunto de ficheros
Ahora hemos de crear el sistema de ficheros (en ingl�s: filesystem,
fs) para el diskette. En vez de copiar los ficheros tal cual
directamente al diskette, los comprimiremos antes de copiarlos. Esto
nos har� un poco m�s dif�cil la faena de modificar todo
permanentemente. Primero tecleamos el siguiente comando:
dd if=/dev/zero of=[DEVICE] bs=1k count=3000
Donde [DEVICE] es "lugar" en el disco duro donde
vas a guardar el sistema de ficheros descomprimido. Luego, introduce
el siguiente comando y pulsa ENTER, sustituyendo
[DEVICE] por el directorio en tu disco duro donde
est�s guardando el sistema de ficheros descomprimido:
mke2fs -m 0 [DEVICE]
Si make2fs te pregunta si realmente quieres hacer esto (Do
you really want to do this?), acepta tecleando "y" (yes).
Despu�s tenemos que montar este sistema de ficheros que hemos
creado. Para ello, el n�cleo que utilices tiene que permitir "montar
ficheros", en otras palabras, ha de tener habilitada la posibilidad de
"loopback devices". Para ello has de compilar el n�cleo de tu m�quina
(no el n�cleo que hemos creado, sino el de tu propia m�quina) con la
opci�n:
Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?]
bien como m�dulo (M) o en el mismo n�cleo (Y). Si lo compilas como
m�dulo (lo m�s recomendable) luego tienes que insertar el m�dulo
modprobe loop !No olvides rearrancar la m�quina si has tenido
que recompilar el n�cleo!
mount -t ext2 DEVICE /mnt
Si se queja la orden mount puedes intentar con la siguiente orden:
mount -o loop -t ext2 DEVICE /mnt
Ahora debes copiar todos los ficheros que necesites en el nuevo
sistema de ficheros. Primero, ponte en el directorio /mnt,
(cd /mnt), y crea los siguientes directorios:
/dev
/pro
/etc
/bin
/lib
/mnt
/usr
Ahora crearemos el directorio /dev tecleando lo siguiente:
cp -dpR /dev /mnt/dev
Si se te acaban los i-nodos del diskette, puedes ir a
/mnt/dev y borrar los archivos de dispositivo que no
necesites. Cuando acabes de copiar los ficheros necesarios para
/dev, ves a /etc. Para estar seguro copia todos los
ficheros de /etc a /mnt/etc:
cp -dpR /etc /mnt/etc
Luego copia todo del directorio /lib en /mnt:
cp -dpR /lib /mnt/lib
Para el directorio /bin, copia s�lo aquello que creas que
necesitas en /mnt/bin.
Copiar todo a tu diskette
Ahora hemos de copiar todo en el/los diskette/s. Para hacer esto,
debemos comprimir ahora el sistema de ficheros tecleando las siguientes
ordenes:
cd /
umount /mnt
dd if=[DEVICE] bs=1k | gzip -9 > rootfs.gz
Ahora es importante comprobar el tama�o del n�cleo. Ponte en
/usr/src/linux/arch/i386/boot y teclea "ls -l". Luego divide
el tama�o del n�cleo entre 1024. Por ejemplo, si el tama�o es de
250000 bytes, entonces son 245 KB. En adelante, reemplaza
[ROOTBEGIN] en las ordenes que aparezca por el n�mero
total de kilobytes que has calculado. Ahora copia el kernel al
diskette usando el siguiente comando:
dd if=zImage of=/dev/fd0
Este comando grabar� el kernel en el diskette. Luego introduce el
siguiente comando para que el kernel pueda encontrar la ra�z del sistema
de ficheros en el diskette.
rdev /dev/fd0 /dev/fd0
Ahora tendr�s que hacer un peque�o c�lculo en hexadecimal. Suma
4000 al equivalente en hexadecimal de [ROOTBEGIN] (que
en nuestro ejemplo es F5). Convierte el resultado a decimal y teclea
el siguiente comando, sustituyendo 16629 con el resultado que t� has
obtenido:
rdev -r /dev/fd0 16629
Finalmente, teclea lo siguiente para copiar el sistema de ficheros al
diskette:
dd if=/rootfs.gz of=/dev/fd0 bs=1k seek=[ROOTBEGIN]
El sistema de ficheros ra�z ser� copiado al diskette justo despu�s
del kernel. �Ya lo tienes! Para el segundo diskette, el proceso es m�s
f�cil. Copia los ficheros que quieras en el diskette. No obstante,
para poder usar los ficheros que hay en el segundo disco, tendr�s que
entrar lo siguiente despu�s de arrancar con el diskette:
mount /dev/fd0 /usr
Una nota final: si puedes perder un poco de tiempo, probablemente
ser�s capaz de hacer una versi�n que puedes ofrecer al p�blico como
una "distribuci�n" separada de Linux. �Pi�nsalo! : )
|