Professional Documents
Culture Documents
Co
ción
uca
Ed
de
tro
en
C
Tema 1
Objetivos
Contenidos
GESTOR DE ARRANQUE GRUB ............................................................................................................... 1
OBJETIVOS ............................................................................................................................................. 1
CONTENIDOS ......................................................................................................................................... 1
1.1. INTRODUCCIÓN A LOS GESTORES DE ARRANQUE ....................................................................................... 2
1.1.1. GRAND UNIFIED BOOTLOADER............................................................................................................... 2
1.1.2. OTROS GESTORES DE ARRANQUE....................................................................................................... 6
1.2. GESTOR DE ARRANQUE GRUB ............................................................................................................. 7
1.2.1. PROCESO DE ARRANQUE EN UN SISTEMA X86 Y GRUB ......................................................................... 7
1.2.2. MÉTODOS DE ARRANQUE ...................................................................................................................... 8
1.2.3. FUNCIONES DE GRUB .......................................................................................................................... 9
1.3. TERMINOLOGÍA QUE UTILIZA GRUB ...................................................................................................... 9
1.3.1. NOMBRES DE DISPOSITIVOS ................................................................................................................. 10
1.3.2. EL SISTEMA DE ARCHIVOS RAÍZ Y GRUB ................................................................................................. 11
1.4. INTERFACES (MODOS) DEL GRUB ....................................................................................................... 11
1.4.1. INTERFAZ DE MENÚ ............................................................................................................................ 12
1.4.2. INTERFAZ DEL EDITOR DE MENÚ DE ENTRADA ........................................................................................... 13
1.4.3. INTERFAZ DE LÍNEA DE COMANDOS ........................................................................................................ 14
1.4.4. ORDEN DE CARGA DE LAS INTERFACES .................................................................................................... 16
1.5. COMANDOS DEL GRUB .................................................................................................................... 17
1.6. CAMBIAR LOS NIVELES DE EJECUCIÓN EN EL TIEMPO DE ARRANQUE ............................................................ 22
1.7. OPCIONES QUE SE PUEDEN PASAR AL KERNEL......................................................................................... 23
1
CEC-EPN Linux II Tema 1
La palabra inglesa grub viene de gusano, “ese que se transforma en una mariposa”.
Por eso, en sentido figurado se podría inferir que esta aplicación se convierte después
en un sistema operativo, ya que el GRUB es el primer (y único) programa que el BIOS
de la máquina sabe cargar. Por eso, el GRUB se encargará de ejecutar el kernel del
sistema operativo que deseemos.
Antes de seguir con el GRUB, demos un vistazo a los componentes necesarios para
que el computador funcione:
Otro componente importante del computador es el ROM BIOS (Basic Input Output
System), donde se almacenan los programas básicos del computador. En el interior
del computador se pueden encontrar chips parecidos a estos:
2
CEC-EPN Linux II Tema 1
3
CEC-EPN Linux II Tema 1
1. CMOS BIOS SETUP el programa que nos permite configurar los
parámetros del BIOS.
2. Diagnósticos de encendido (POST) que indican durante los primeros
segundos de encendido de la computadora, si existe algún problema.
3. BOOT LOADER, que es un programa almacenado en el BIOS que carga a
memoria el primer sector (512 bytes) del primer dispositivo de
almacenamiento disponible (generalmente el disco duro, aunque puede ser
un CD, DVD, Flash, disquete, etc.).
4. Rutinas para manejar los distintos dispositivos del computador: teclado,
ratón, disco duro, disquete, etc.
5. Algunos BIOS tienen otras características como lector de huellas digitales,
cifrado de disco duro, detector de redes wifi, etc.
Aquí podemos ver una captura de pantalla del GRUB configurado para permitir
arrancar varias modalidades de Linux.
4
CEC-EPN Linux II Tema 1
Ahora que ya hemos visto para qué sirve el GRUB y su enorme importancia, veamos
algunos detalles antes de aprender a instalarlo y configurarlo.
5
CEC-EPN Linux II Tema 1
leer el filesystem como el GRUB.
El GRUB viene instalado por defecto en la mayoría de los sistemas Linux, por lo tanto,
lo podremos usar directamente para cualquier tipo de trabajo.
6
CEC-EPN Linux II Tema 1
mucho tiempo y una gran cantidad de espacio en el disco.
7
CEC-EPN Linux II Tema 1
gestor de arranque secundario visualiza el menú GRUB y el entorno de
comandos. Esta interfaz le permite seleccionar qué sistema operativo o
kernel arrancar, pasar argumentos al kernel o ver los parámetros del
sistema.
4. Al presionar la tecla ENTER (ENTRAR) sobre uno de los ítems
mostrados en el GRUB, este lee el sistema operativo o el kernel en la
memoria.
Mónica no entiende muy bien este punto, así que Ricardo le explica que el gestor de
arranque GRUB es un pequeño programa que carga el sistema operativo en la
memoria y transfiere el control de la máquina a dicho sistema operativo. Esta es la
forma en que un diminuto programa BIOS carga el GRUB (un programa un poco más
grande), quien a su vez carga el kernel (programa un poco mayor, llegando a 3 o 4
megabytes), y el kernel a su vez carga los manejadores de dispositivos, el Shell del
sistema, el modo gráfico, y finalmente las aplicaciones (red, correo, oficina, etc),
terminando por ocupar a veces hasta un gigabyte de memoria.
Aquí acaba el funcionamiento del GRUB, el kernel toma control del sistema.
El método usado para arrancar los sistemas operativos Linux se conoce como método
de carga directa porque el gestor de arranque carga el sistema operativo
directamente. No existe un intermediario entre el gestor de arranque y el kernel.
El proceso de arranque usado por otros sistemas operativos puede variar. Por
ejemplo, los sistemas operativos comerciales, específicamente los de Microsoft ®
Windows ®, se cargan mediante un método de arranque de carga encadenada. Bajo
este método, el Master Boot Record (MBR) señala el primer sector de la partición que
tiene el sistema operativo. Allí encuentra los archivos necesarios para arrancar el
sistema operativo.
GRUB soporta ambos métodos de arranque, directo y de carga encadenada,
permitiendo arrancar desde casi cualquier sistema operativo.
8
CEC-EPN Linux II Tema 1
posteriormente el Linux.
9
CEC-EPN Linux II Tema 1
por ejemplo, a los discos duros y a las particiones. Ella entiende que esta información
es muy importante si quiere configurar GRUB para arrancar varios sistemas
operativos.
Ricardo le explica a Mónica los nombres de los dispositivos. Le pide que cuando se
refiera a un dispositivo específico con GRUB lo haga usando el formato siguiente.
(<tipo-de-dispositivo><numero-dispositivo-bios>,<numero-particion>)
El tutor le advierte acerca de la importancia de observar que los paréntesis y las
comas son muy importantes en la sintaxis.
El <tipo-de-dispositivo> especifica el tipo de dispositivo desde el cual inicia
GRUB. Las dos opciones más comunes son hd para un disco duro o fd para un
disquete de 3.5. Un tipo de dispositivo menos usado también está disponible, es el
llamado nd para un disco de la red. Las instrucciones sobre la configuración de GRUB
para arrancar desde la red están disponibles en
http://www.gnu.org/software/grub/manual/.
El <numero-dispositivo-bios> es el número del dispositivo BIOS. El disco duro
IDE primario se numera 0 y un disco duro IDE secundario se numera 1 . La sintaxis
es equivalente a aquella utilizada para los dispositivos por el kernel. Por ejemplo, a en
hda para el kernel es análogo a 0 en hd0 para GRUB, b en hdb es análogo a 1 en
hd1 , y así sucesivamente.
El <numero-particion> hace referencia al número de una partición concreta en un
dispositivo. Al igual que en el caso de <número-dispositivo-bios> , la mayoría de
tipos de particiones están numeradas comenzando por 0 . Aunque la mayoría de las
particiones se especifican con números, si el sistema usa particiones BSD se hará
referencia a éstas con letras, con a correspondiendo a 0 , b correspondiendo a 1 y
así sucesivamente.
El sistema de numeración para dispositivos bajo GRUB empieza por 0 y no por 1.
Este es uno de los errores que cometen con más frecuencia los usuarios que
empiezan a utilizar GRUB. Mónica le dice a Ricardo: “No me extraña… me estoy
haciendo un lío con tantos números. Pero lo repasaré en mi casa y me queda claro
que hay que empezar con 0”.
Ricardo sonríe. “No te preocupes Mónica… en cuanto lo repases te quedará claro.
Mira, para darte un ejemplo, si un sistema tiene más de un disco duro, GRUB se
refiere al primer disco duro como (hd0) y al segundo como (hd1). De la misma
forma, GRUB se refiere a la primera partición en la primera unidad como (hd0,0) y a
10
CEC-EPN Linux II Tema 1
la tercera partición en el segundo disco duro como (hd1,2).”
En general, explica Ricardo, GRUB usa las siguientes reglas para denominar los
dispositivos y las particiones:
x No es relevante si los discos duros que utiliza son IDE o SCSI. Todos los
discos duros empiezan con las letras hd . Se utilizan las letras fd para
especificar las unidades de disquete.
x Para especificar todo un dispositivo sin respetar sus particiones, simplemente
se debe suprimir la coma y el número de partición. Esto es importante para
indicarle a GRUB que configure el registro MBR para un disco concreto. Por
ejemplo, (hd0) especifica la MBR en el primer dispositivo y (hd3) especifica
la MBR en el cuarto dispositivo. Mónica subraya en su cuaderno de notas: “
(hd3) especifica el cuarto dispositivos porque el 0 también cuenta”.
Si un sistema tiene varios dispositivos de discos, es muy importante saber el orden de
arranque configurado en la BIOS. Esto es muy sencillo si sólo se tienen discos IDE o
SCSI, pero si se tiene una combinación de ambos, se vuelve crítico que se acceda
primero el tipo de unidad con la partición de arranque.
Algunos usuarios se confunden con el uso del término sistema de archivos ya raíz, que
tiene un significado diferente con relación a GRUB. Es importante recordar que el
sistema de archivos raíz de GRUB no tiene nada que ver con el sistema de archivos
raíz de Linux.
El sistema de archivos raíz de GRUB es el nivel superior del dispositivo especificado.
Por ejemplo, el archivo imagen (hd0,0)/grub/splash.xpm.gz está ubicado dentro
del directorio /grub/ en el nivel superior (o raíz) de la partición (hd0,0) (la cual es
en verdad la partición /boot/ para el sistema).
Luego, se ejecuta el comando kernel con la ubicación del archivo del kernel como una
opción. Una vez que el kernel de Linux inicia, establece el sistema de archivos raíz,
con el cual los usuarios de Linux están familiarizados. El sistema de archivos raíz de
GRUB original y sus montajes se olvidan; la única finalidad de su existencia era
arrancar el archivo del kernel.
11
CEC-EPN Linux II Tema 1
funcionalidad. Cada una de estas interfaces permite a los usuarios arrancar el kernel
de Linux u otros sistemas operativos. Mónica necesita saber un poco más.
Las interfaces son como sigue:
12
CEC-EPN Linux II Tema 1
Mónica quiere saber cómo se accede a las otras interfaces. Ricardo le explica que es
necesario que presione la tecla [e] para entrar en la interfaz del editor o la tecla [c]
para cargar la interfaz de línea de comandos.
Para tener acceso al editor de entradas del menú, es necesario presionar la tecla [e]
desde el menú del gestor de arranque. Ricardo le muestra la pantalla a Mónica: "Mira,
los comandos de GRUB del editor de entradas del menú se muestran aquí. Tú puedes
alterar estas líneas de comandos antes (recuerda, antes) de arrancar el sistema
operativo agregando una línea de comandos." Después el tutor le explica lo que hacen
cada una de las líneas de comando:
[o] inserta una nueva línea después de la línea actual
[O] inserta una nueva línea antes de ella
[e] modifica la línea
[d] borra la línea.
13
CEC-EPN Linux II Tema 1
Una vez realizados los cambios, la tecla [b] ejecuta los comandos y arranca el sistema
operativo. Con la tecla [Esc] se omiten los cambios y el usuario vuelve a la interfaz de
menú estándar. Con la tecla [c] se carga la interfaz de línea de comandos.
Ricardo le propone a Mónica que vean un ejemplo:
Dentro de la interfaz de edición, apretemos la e sobre la línea que dice: kernel,
veremos que, si quisiéramos, podríamos editar los parámetros de arranque del kernel
14
CEC-EPN Linux II Tema 1
comandos.
Mónica le pide al tutor que le ponga algunos ejemplos de combinaciones con [Ctrl]:
[Ctrl]-[a] sirve para moverse al comienzo de la línea.
[Ctrl]-[e] para moverse al final.
Además, Ricardo le recuerda que las teclas de flecha, [Inicio], [Fin], y [Supr] funcionan
de forma similar al indicador de comandos bash.
"Mónica,- dice Ricardo- en esta interfaz puedes, si conoces los comandos adecuados,
escribirlos uno a uno y echar a andar tu sistema".
Mónica le mira extrañada "¿Echar a andar mi sistema?"
"Claro, en algunos casos puede resultarte muy útil. Por ejemplo, si he perdido el
grub.conf pero sé que Linux permanece ahí, podría ejecutar los siguientes comandos
uno tras otro:
x root (hd0,0)
x kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/
x initrd /initrd-2.6.18-53.el5.img
x boot
15
CEC-EPN Linux II Tema 1
¿De dónde saqué estos comandos? Aquí viene la magia, tengo que conocerlos
previamente, en mi caso los saqué del ejemplo del menú de edición que se mostró
antes en este documento".
Mónica tiene aún muchas preguntas, pero Ricardo la tranquiliza, "Más adelante
veremos una explicación de algunos de estos comandos. Vayamos paso a paso."
Cuando GRUB carga la segunda etapa de su gestor de arranque, primero busca por
su archivo de configuración (/boot/grub/grub.conf). De encontrarlo, muestra la pantalla
de menú de GRUB. Si se presiona una tecla durante los tres primeros segundos,
GRUB crea una lista de menú y la despliega. Si no se presiona ninguna tecla, se utiliza
la entrada predeterminada de GRUB.
16
CEC-EPN Linux II Tema 1
los comandos necesarios para completar el proceso de arranque.
En el caso de que el archivo de configuración no sea válido, GRUB imprimirá el error y
solicitará la introducción de valores. Esto puede ser muy útil, porque se podrá ver con
exactitud dónde está el problema y corregirlo en el archivo. Si se pulsa cualquier tecla
se volverá a cargar la interfaz de menú, donde se podrá modificar la opción de menú y
corregir el problema según el error que GRUB haya notificado. Si la corrección falla,
GRUB informa del error y uno puede empezar de nuevo.
17
CEC-EPN Linux II Tema 1
x kernel </ruta/a/kernel><opcion-1> <opcion-N> ... Especifica el archivo
del kernel a cargar cuando se cargue el sistema operativo.
Reemplazar </ruta/a/kernel> con una ruta absoluta desde la partición
especificada por el comando root. Reemplazar <opcion-1> con las opciones
para el kernel de Linux, tales como root=/dev/hda5 para especificar el
dispositivo en el que se ubica la partición root para el sistema. Se pueden
pasar múltiples opciones al kernel en una lista separada por comas.
x Lo siguiente es un ejemplo para el comando kernel:
kernel /vmlinuz-2.4.21 root=/dev/hda5
x La opción en el ejemplo anterior especifica que el sistema de archivos raíz para
Linux está ubicado en la partición hda5.
x root (<tipo-dispositivo><numero-dispositivo>,<particion>)
Configura la partición raíz para GRUB, tal como (hd0,0) y monta la partición.
A continuación se presenta un ejemplo para el comando root:
root (hd0,0)
x rootnoverify (<tipo-dispositivo><numero-dispositivo>,
<particion>)
Configura la partición raíz para GRUB, tal como el comando root pero no
monta la partición. Este comando se utiliza cuando se cargan sistemas
operativos Windows.
Ricardo quiere que Mónica lo entienda todo claramente por eso le señala la pantalla y
le va explicando:
- Entendamos mejor cómo se pueden utilizar los comandos; yo prefiero hacerlo desde
el menú de edición, donde me aparecen los comandos para arrancar mi Linux.
Veamos nuevamente el menú de edición de nuestro GRUB":
18
CEC-EPN Linux II Tema 1
19
CEC-EPN Linux II Tema 1
/dev/sda1 on /boot type ext3 (rw,noatime)
-Mónica, fíjate bien que /dev/sda1 es donde está la partición /boot (que es la que
contiene el kernel y la imagen de ramdisk). En efecto, como puedes observar, en mi
sistema mi primer (y único) disco es sda, y la primera partición de este disco es sda1.
Como ves ¡todo está correcto y coincide con (hd0,0)!
"Entonces GRUB nombra los discos de una forma diferente ¿No?"- pregunta Mónica
arqueando un poco sus cejas.
"Sí, GRUB nombra a los discos de una forma diferente: no sda sino hd0; no sda1 sino
hd0,0".
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ : Con este comando le indicamos al
GRUB cuál será el kernel que tiene que cargar y se le enviará, además, una gran
cantidad de opciones que se consideren necesarias para que el kernel interprete.
Ricardo le pide a Mónica que tenga en cuenta que las opciones que aquí se le envíen
no tiene nada que ver con GRUB. Mónica asiente: "Entonces, GRUB sencillamente
hace la labor de pasárselas al kernel porque seguramente le harán falta, pero no son
interpretadas por GRUB en sí".
Ricardo asiente con la cabeza. "Veamos cómo se lee:
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ :
nombre y camino del kernel. Fíjate que este camino es partiendo desde la
partición donde se definió por el comando root que estaba /boot, por lo tanto
en mi caso es /vmlinuz-2.6.18-53.el
Si quisiéramos ver este archivo (el kernel) en nuestro Linux ya arrancado, tendríamos
que listar /boot:
[eperez@eperez ~]$ ls /boot/
config-2.6.18-53.el5 message
grub symvers-2.6.18-53.el5.gz
initrd-2.6.18-53.el5.img System.map-2.6.18-53.el5
lost+found vmlinuz-2.6.18-53.el5
Fíjate que, en efecto, el vmlinuz está ahí.
Ahora, no sólo es el kernel lo que se especifica, sino sus opciones.
Típicamente se reducen a un par:
ro : Indica que la raíz del sistema se levantará en sólo lectura, es importante
dejar esta opción así.
Mónica mira la pantalla y pregunta: "Entonces ¿Cuál es la utilidad que tiene?"
"Es para poder revisar el filesystem raíz en caso de ser necesario. Recuerda
20
CEC-EPN Linux II Tema 1
que los filesystems deben revisarse desmontados o en sólo lectura. En este
caso debe ser en sólo lectura pues en este mismo filesystem con daño es que
se encuentra el comando fsck y, por lo tanto, hace falta que esté montado.
Ricardo asiente: "En Linux, al igual que en Windows, las particiones pueden
tener etiquetas. Seguramente has visto en Windows que, cuando ves las
propiedades de un disco, aparece además el nombre del disco (partición)".
"En este caso le estaría diciendo al kernel que la partición que contiene la raíz
(/) del sistema es /dev/sda3, sin tantas etiquetas. Así se usaba antiguamente,
pero personalmente yo lo uso en mis equipos, para estar claro de cuál es
cuál".
initrd /initrd-2.6.18-53.el5.img
Este comando simplemente le indica al GRUB que pase al kernel el archivo que
contiene la imagen de ramdisk. Uno se puede basar en esta imagen para acceder
primariamente a módulos (drivers); también, para acceder a los controladores de disco
y red, así como a los comandos básicos para poder montar inicialmente las
particiones.
21
CEC-EPN Linux II Tema 1
El ramdisk típicamente desaparece de la memoria una vez que el sistema ya arranca
completamente. El tutor añade "Ten en cuenta, Mónica, que casi siempre es bueno
usar el ramdisk porque sino el kernel no tendría los módulos para acceder a tus
discos".
22
CEC-EPN Linux II Tema 1
Ricardo asiente: "Claro el sistema va a bootear en el nivel que tú le indiques. Y, por
cierto, ¡ya deberías ir acostumbrándote al vocabulario de los informáticos!"
-Fíjate bien, Mónica. Vemos que hay 4 opciones, las dos primeras ya las conocemos:
x ro : read only (que monte la raíz en read only)
x root=LABEL=/ (el nombre de la partición que contiene la raíz)
Ricardo le indica que aunque hay muchísimas opciones que se pueden enviar al
kernel, lamentablemente no hay una documentación precisa sobre ellas.
23
CEC-EPN Linux II Tema 1
Como ves, Mónica, ya no es ese fondo azul con el termómetro corriendo, sino
simplemente el sistema arrancando servicio por servicio y poniendo a la derecha OK o
FAIL. Personalmente, me gusta más así, sin el rhgb, ya que puedo ver lo que pasa en
el sistema.
Mónica no está del todo de acuerdo. A ella le gusta más el de fondo azul. Ricardo le
explica más opciones:
quiet, sirve para indicarle al kernel que no muestre información extendida sobre el
hardware que detecta. Si elimináramos quiet, veríamos que el kernel, al arrancar,
mostraría esta info:
24
CEC-EPN Linux II Tema 1
-Si te fijas, muestra una infinidad de información sobre lo que nuestro kernel está
viendo del hardware al arrancar. Esto también se puede ver en un archivo de logs, es
por esto que prefiero no quitar el quiet, pues toda esta info pasa muy rápidamente.
Una vez que editemos las opciones que queramos, podremos dar enter, entonces el
GRUB se quedará esperando a que le demos la orden de booteo.
Mónica quiere saber cómo se bootea de una manera sencilla. Ricardo le indica que se
puede bootear apretando b: "Mira, aquí está nuestra línea del kernel editada, abajo
nos indica que apretemos b para bootear. Esto se indica así porque hemos hecho
cambios en el sistema de arranque:
25
CEC-EPN Linux II Tema 1
/boot/grub/menu.lst
26
CEC-EPN Linux II Tema 1
En CENTOS existe el archivo /boot/grub/grub.conf que es un link (un acceso directo) al
menu.lst así que da lo mismo usar un nombre u otro.
27