Home Indice Búsqueda Enlace About us
[LinuxFocus Image]
[Navegation Bar]
 Noticias  Archivos  Compa��as  Consejos 

Crear una versi�n pr�ctica de Linux

por Mooneer Salem


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:

  1. Compilar un kernel b�sico personalizado
  2. Crear un sistema de ficheros para tu disco
  3. 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! : )


Traducido por Pedro Molla

M�s informaci�n:
© 1998 Mooneer Salem
P�ginas web mantenidaqs por Miguel A Sepulveda.