UN disco de arranque es b'asicamente un sistema Linux en miniatura contenido en el disco . Puede realizar la mayor'ia de las funciones de un sistema Linux completo. Antes de tratar de construir uno debeira comprender el proceso b'asico de arranque de Linux. Le mostraremos lo b'asico aqu'i, que sera suficiente para comprender el resto del documento. Muchos detalles y opciones alternativas han sido omitidos.
Todos los sistemas PC comienzan el arranque ejecutando c'odigo en la ROM, (espec'ificamente
, la BIOS) para cargar el sector del sector 0, cilindro 0 de la primera
unidad de disco. la unidad de arranque es normalmente la primera unidad de disco
flexible ( nombrada A: en DOS y /dev/fd0 en Linux). La BIOS intenta ejecutar
en ese momento el sector. En muchos discos Arrancables el sector 0, cylinder 0 contiene:
Si un kernel de Linux ha sido copiado "a pelo" a un disco, el primer sector del disco contendr'a el primer sector del kernel de Linux en si. Este primer sector continuara el proceso de arranke cargando el resto del kernel desde el dispositivo de arranque.
Una vez el kernel este completamente cargado, este ira a trav'es de una serie de inicializaciones b'asicas de dispositivos. Tratara de cargar y montar un sistema de ficheros ra'iz de alg'un dispositivo. UN sistema de ficheros ra'iz es simplemente un sistema de ficheros que es montado como ``/''. El kernel tiene que saber donde buscar el sistema de ficheros ra'iz; si no puede encontrarlo, se detendr'a.
En algunas situaciones de arranque -- normalmente cuando arrancamos desde disco -- el sistema de ficheros ra'iz sera cargado en un disco-ram, que es RAM a la que el sistema accede como si fuese un disco. Hay dos razones por las que el sistema carga un disco-ram. Primera, la RAM es varios ordenes de magnitud mas r'apida que un disco de arranque, por lo que el sistema funciona mas r'apido; y segundo, el kernel puede cargar un sistema de ficheros comprimido desde el disco y descomprimirlo en el disco-ram, permitiendo que entren mas ficheros en el disco.
Una vez que el sistema de ficheros ha sido cargado y montado, deber'ia ver un mensaje como este:
VFS: Mounted root (ext2 filesystem) readonly.
En este momento en sistema busca el programa init en el sistema raiz
(en /bin o /sbin) y lo ejecuta. init lee el fichero de
configuracion /etc/inittab, mira la linea que define sysinit,
y ejecuta el script nombrado. El script sysinit es normalmente
algo como /etc/rc o
/etc/init.d/boot. Este script es un conjunto de comandos
que configurarn los servicios basicos del sistema, como:
fsck en todos los discos,fstab.
Este script normalmente invoca varios otros scripts para realizar una inicializacion modular. Por ejemplo, es comun en la estructura SysVinit, el directorio /etc/rc.d/ conteniendo una compleja estructura de subdirectorios. NO obstante en un disco de aranque el script sysinit es a menudo muy simple.
Cuando el script sysinit termina, devuelve el control a
Una vez revisado lo basico del proceso de arranque, definiremos varios tipos de discos
relacionados. Los hemos dividido en cuatro tipos. La discusion siguiente y
a lo largo del documento usara el termino ``disco'' para referirse a un
disco flexible, a menos se se especifique otra cosa, parte de los siguiente podria
referirse de manera similar a los discos duros.
N.T. a lo largo de este COMO se mantendra sin traducir los terminos root y boot cuando se refieran
a discos, creo que a la mayoria de la gente ( en especial los que vienen de slackware) le resultara
mas familiar y comodo los terminos ``disco root'' y ``disco boot'', que, disco raiz y disco de arranque.
Un disco conteniendo un kernel que puede ser arrancado.
El disco puede ser usado para arrancar el kernel, puede cargar el
sistema de ficheros raiz desde otro disco. El kernel en un disco de
arranque normalmente debe conocer donde encontrar el sistema de ficheros
raiz.
A menudo el disco boot carga el kernel de otro disco, pero es posible
configurar un disco de arranque para que carge el sistema de ficheros
raiz desde un disco duro. Esto se hace normalmente para comprobar un
nuevo kernel. ( de echo, ``
Un disco conteniendo el sistema de fichero necesario para
ejecutar un sistema Linux. Este disco no contiene necesariamente ni un
kernel ni un cargador de arranque.
Un disco root puede ser usado para ejecutar un sistema
independientemente de cualquier otro disco, una vez el kernel ha sido
ejecutado. Normalmente el disco raiz es copiado automaticamente a disco
ram. Esto hace los acesos al disco root mucho mas rapidos, y librea la
unidad de disco para un disco de utilidades.
init, que entonces entra en el
nivel de ejecucion por defecto, especificado en inittab con la
palabra clave initdefault. La linea del nivel utilizado espeficica
un programa como getty, que es responsable de manejar la comunicacion con la
consola y los terminales. Es el programa getty> el que imprime el familiar ``root (arranque y raiz) Un disco que contiene ambos el kernel
y el sistema de fichero raiz. En otras
palabras un disco que contiene todo lo necesario para arrancar y
ejecutar un sistema Linux sin disco duro. La ventaja de este tipo de
disco es que es compacto -- todo lo necesario esta en un simple disco. No obstante, el gradual incremento de tamaño de todo significa que
aumenta la dificultad de incluir todo en un simple disco, aun con
compresion.
login:''.
EL programa getty invoca a su vez el programa login para encargarse de la
comprobacion de login y configurar la sesion del usuario.
3.2 Tipos de discos.
make zdisk'' crea este disco de
arranque automaticamente desde el codigo fuente del kernel).
Un disco que contiene un sistema de fichero, pero que no esta pensado para ser montado como sistema raiz. Es un disco de datos adicional. Podria usar este tipo de discos para llevar utilidades adicionales que no tienen sitio en el disco root.
En general, cuando hablamos sobre ``crear un disco de arranque'' nos referimos a crear tanto la parte de boot (kernel) como la de root (ficheros). esto puede ser junto ( un simple disco boot/root) o por separado (disco boot + disco root). La mas flexible aproximacion a los discos de rescate es probablemente utilizar discos root y boot separados, y uno o mas discos de utilidades para manejar el esceso de programas a incluir.