| 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 KernelDado 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 ficherosAhora 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 disketteAhora 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! : )
           |