You are on page 1of 29

ntinua

Co
ción
uca
Ed
de
tro
en
C

Gestor de arranque GRUB


Administración Linux II - Modalidad Virtual
Tema 1

Edificio “Aulas y relación con el medio externo”


Toledo y Lerida, Planta baja infovirtual@cec-epn.edu.ec
PBX: 25-25-766
Capacitación en Modalidad Virtual

Administración Linux II, Gestor de arranque GRUB


Ricardo Ortega

Levantamiento de texto: Ernesto Pérez


Redacción de texto 2010: Ricardo Ortega

Registro de derecho autoral: en trámite


ISBN de este volumen: en trámite
Depósito Legal: en trámite

Publicado en http://cursos.cec-epn.edu.ec/aulavirtual/ desde julio 2008

CENTRO DE EDUCACIÓN CONTINUA


ESCUELA POLITÉCNICA NACIONAL
UNIDAD DE EDUCACIÓN VIRTUAL
Quito –Ecuador
CEC-EPN Linux II Tema 1

Tema 1

Gestor de arranque GRUB

Objetivos

1. Entender el proceso de arranque del computador

2. Entender el gestor de arranque GRUB y sus características principales.

3. Comprender que existen distintos tipos de gestores de arranque.

4. Conocer las interfaces de GRUB.

5. Aprender a usar los comandos de GRUB.

6. Aprender a cifrar las contraseñas del GRUB

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

1.1. Introducción a los gestores de arranque

1.1.1. GRand Unified Bootloader

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:

Cuando la computadora está apagada, lo


único que está trabajando es el reloj interno
del computador que almacena la fecha,
hora, contraseña de arranque y
configuración del computador en la memoria
CMOS, que conserva su contenido gracias a
una pequeña batería de larga duración.
Cuando se acaba la batería (dos o tres años,
el contenido de la CMOS) se pierde.

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

Aún en el caso de que el equipo no tenga disco duro ni otro dispositivo de


almacenamiento, o aún en el caso de que el disco duro esté vacío, el computador trae
varios programas en el BIOS. Las siguientes pantallas deben ser familiares para
quienes instalan y dan mantenimiento a computadores:

Estas pantallas demuestran que: a) el computador trae programas que no están


almacenados en el disco duro b) que el primer programa que se activa al encender el
computador es el ROM BIOS, específicamente el programa POST (Power On Self
Test) y el segundo programa es el BOOT LOADER (cargador de Boot).

El BIOS concretamente tiene los siguientes programas:

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.

Entonces siguiendo esta secuencia, el GRUB es el programa que se instala en el


MASTER BOOT SECTOR del disco duro (512 bytes) y toma el control luego de que el
ROM BIOS hizo su trabajo (POST+BOOT LOAD).

Lo interesante del GRUB es que permite indicarle al computador cual sistema


operativo deseamos cargar (si es que tenemos varios sistemas operativos en el disco
duro) o cuál versión de sistema operativo deseamos cargar (si es que tenemos varias
versiones, como es posible hacerlo en Linux), o el modo en que deseamos cargar (en
el caso de Linux, modo 1 o runlevel 1, modo 3 o runlevel3, modo 5 o runlevel5).

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.

Las características del GRUB son entre otras:


x Ofrece una interfaz semigráfica intuitiva (menús y recuadros de texto).. Esta
interfaz es totalmente personalizable e incluso en color si eso nos hace gracia.
x En cualquier momento podemos editar los parámetros de las opciones del
menú de arranque, desde un modo de edición simple pero efectivo.
x Al contrario de lo que sucede con otros gestores de arranque, como el LILO, en
el GRUB cada vez que creamos un nuevo kernel o lo cambiamos porque lo
hemos recompilado, no hay que ejecutar nada más en el GRUB para que el
sistema note el cambio. GRUB lee su configuración de un fichero así que,
simplemente editando ese fichero, se hace efectivo el cambio de configuración
para el siguiente arranque. GRUB siempre es capaz de encontrar y cargar el
kernel si le decimos en qué disco está: le da igual si es IDE o SCSI o SATA, en
qué partición (no importa si es primaria, extendida, o una etiqueta BSD) y en
qué fichero (detectará qué sistema de ficheros se utiliza, lo interpretará y dará
con el fichero correcto). En los gestores de arranque anteriores había que
indicar exactamente en qué sector estaba el kernel, pues no eran capaces de

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.

1.1.2. Otros gestores de arranque

GRUB supera muchas de las desventajas de los anteriores gestores de arranque.


Mónica pregunta por LILO, el más popular de los gestores antes de la llegada de
GRUB. Varias empresas que ella conoce lo siguen usando. Ricardo le explica que, en
efecto, LILO funciona muy bien, pero (siempre hay un gran pero) carece de muchas
funcionalidades del GRUB como por ejemplo:
No tiene un ambiente gráfico amable.
No permite editar en vivo los parámetros de arranque (hay que arrancar, como sea, el
sistema para poder cambiar algo en el arranque).
Cada vez que se cambia un kernel hay que ejecutar LILO para que tome el nuevo
kernel, pues no acepta cambios en sus parámetros de arranque.
Cualquier falla en ejecutar el LILO de esta forma normalmente conducía a que el
sistema quedara inoperante y a tener que arrancar en modo de rescate.
A Mónica le ha quedado claro que GRUB es el gestor de arranque más popular y más
usado al momento, pero ¿existen otros gestores? A ella le parece haber leído de
SYSLINUX.
Ricardo le comenta que, efectivamente, no sólo existen el GRUB y el LILO, sino que
hay un pequeño gestor de arranque llamado SYSLINUX, que básicamente es parecido
al LILO en la forma que se muestra en la pantalla (:) . A diferencia del LILO,
SYSLINUX sí permite pasarle algunos parámetros al sistema y, sobre todo, se
configura con un sólo archivo (sysLinux.cfg). Esto quiere decir que no hay que ejecutar
el SYSLinux para instalar nuevamente el gestor de arranque cuando cambia el kernel.
El SYSLINUX es muy usado por los sistemas de arranque mediante CD. Por ejemplo:
el mismo CD del Centos (y de RHEL por supuesto) arranca mediante el SYSLINUX.
Ricardo explica: “Básicamente eso que vemos al arrancar el CD de CentOS para
instalar el Linux está hecho en SYSLINUX”.
SYSLINUX se usa también para arranque de sistemas embebidos, pues contiene todo
un sistema de arranque en muy pocas k de espacio en disco. “¿Un sistema
embebido?”-, pregunta Mónica. Ricardo le aclara que ese es el tipo de sistema que
corre en máquinas de muy bajos recursos de RAM, disco y/o procesador, como por
ejemplo: los sistemas operativos de los celulares, de las máquinas palm, de algunos
cajeros automáticos.... Mónica lo entiende muy bien: el SYSLINUX permite ahorrar

6
CEC-EPN Linux II Tema 1
mucho tiempo y una gran cantidad de espacio en el disco.

Además existen otros gestores de arranque específicos para cada arquitectura:

Arquitectura Gestores de arranque


AMD ® AMD64 GRUB
IBM ® eServer iSeries OS/400 ®
IBM ® eServer pSeries YABOOT
IBM ® S/390 ® z/IPL
IBM ® eServer zSeries ® z/IPL
Intel ® Itanium ELILO
x86 GRUB

1.2. Gestor de arranque GRUB

1.2.1. Proceso de arranque en un sistema x86 y GRUB

GRUB se carga a sí mismo en la memoria en las diferentes etapas:

1. La etapa 1, o cargador de arranque primario, se lee en la memoria por


el BIOS desde el Master Boot Record (MBR). Este gestor de arranque
primario cabe en exactamente 512 bytes de espacio en disco duro
dentro del MBR y es capaz de cargar, bien sea la etapa 1.5, o la etapa
2 del gestor de arranque.
2. La Etapa 1.5 del gestor de arranque se lee en la memoria por el gestor
de arranque de la Etapa 1, si fuera necesario. Ricardo puntualiza que
determinados hardware requieren un paso intermedio para ir a la Etapa
2 del gestor de arranque. Esto sucede a menudo cuando la partición
/boot está por encima del cilindro 1024 del disco duro o cuando se
usa el modo LBA. También se da cuando / boot está en un filesystem
que no es ext3 o en otro disco que no es el mismo donde está el GRUB.
Mónica pregunta: “Me doy cuenta que la etapa 1.5 está siendo cargada
cuando el GRUB se demora mucho en mostrar el menú (etapa 2). ¿Es
esta demora un problema?”. Ricardo le explica que no hay que
preocuparse porque esta etapa cargue: no ocurre nada anormal en el
proceso ni hay que provocar ni configurar nada.
3. La Etapa 2 o el gestor de arranque secundario se lee en la memoria. El

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.

1.2.2. Métodos de arranque

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.

Durante la instalación, los programas de instalación DOS de Microsoft y


Windows sobrescriben completamente el MBR, destruyendo cualquier
cargador de arranque ya existente. Si se crea un sistema de arranque dual, es
preferible que se instale el sistema operativo Microsoft primero y

8
CEC-EPN Linux II Tema 1
posteriormente el Linux.

1.2.3. Funciones de GRUB

GRUB contiene una serie de funciones que lo convierten en el método favorito


respecto al resto de gestores de arranque disponibles para la arquitectura x86. A
continuación, Mónica ha compilado una lista de las características más importantes:
x GRUB proporciona un verdadero entorno basado en comandos, pre-sistema
operativo, para las máquinas x86. Esta funcionalidad le otorga al usuario una
gran flexibilidad en la carga de sistemas operativos con opciones específicas o
con la recopilación de información sobre el sistema. Durante muchos años, las
arquitecturas diferentes a x86 han usado entornos previos al sistema operativo
que permiten arrancar el sistema desde una línea de comandos.
x GRUB soporta el modo Direccionamiento Lógico de Bloques (LBA). El modo
LBA coloca la conversión de direccionamiento utilizada para buscar archivos
en la unidad de disco duro del firmware y se utiliza en muchos discos IDE y
en todos los discos duros SCSI. Antes de LBA, los gestores de arranque
encontraban la limitación del cilindro 1024 del BIOS, donde el BIOS no podía
encontrar un archivo después de ese cabezal de cilindro del disco. El soporte
LBA permite que GRUB arranque los sistemas operativos desde las
particiones más allá del límite de 1024 cilindros, siempre y cuando el BIOS
del sistema soporte el modo LBA. La mayoría de las revisiones más
modernas de la BIOS soportan el modo LBA.
GRUB puede leer las particiones ext2. Esto permite que GRUB acceda a su archivo de
configuración, /boot/grub/grub.conf , cada vez que el sistema arranca. Ricardo le
explica a Mónica que esto es muy útil ya que se elimina la necesidad que tiene el
usuario de escribir una nueva versión de la primera etapa del gestor de arranque al
Master Boot Record (MBR) en caso de que se produzcan cambios de la configuración.
Mónica pregunta: “Entonces, con el GRUB los usuarios nunca tiene que escribir una
nueva versión de la primera etapa del gestor de arranque, ¿verdad?”. Ricardo matiza:
“Bueno, en realidad, hay un único caso en el que el usuario necesitaría reinstalar
GRUB en el MBR. Esto pasaría en el caso de que la localización física de la partición
/boot/ se trasladara en el disco.”

1.3. Terminología que utiliza GRUB


Mónica sabe que uno de los puntos más importantes que debe entender antes de
utilizar GRUB es la manera en la que el programa hace referencia a los dispositivos;

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.

1.3.1. Nombres de dispositivos

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.

1.3.2. El sistema de archivos raíz y GRUB

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.

1.4. Interfaces (modos) del GRUB


GRUB dispone de tres interfaces eficaces que proporcionan distintos niveles de

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:

A las interfaces siguientes de GRUB solamente se puede acceder presionando alguna


tecla dentro de los tres segundos en los que la pantalla de GRUB se muestra

1.4.1. Interfaz de menú

Esta es la interfaz por defecto cuando se configura GRUB por el programa de


instalación. En esta interfaz hay un menú de sistemas operativos o kernels
preconfigurados en forma de lista ordenada por nombres. Se pueden utilizar las teclas
de flecha para seleccionar una opción diferente a la selección por defecto y pulsar la
tecla [Intro] para iniciarla. Como alternativa, existe un período de espera, después del
cual GRUB iniciará la carga de la opción por defecto.

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.

1.4.2. Interfaz del editor de menú de entrada

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

1.4.3. Interfaz de línea de comandos

La interfaz de línea de comandos es la más básica de GRUB, pero también la que


proporciona un mayor control. En esta interfaz de línea de comandos se puede escribir
cualquier comando de GRUB seguido de la tecla [Intro] para ejecutarlo. Esta interfaz
cuenta con algunas funciones similares a las de shell avanzadas, incluyendo el uso de
[Tab] para autocompletar y las combinaciones de teclas con [Ctrl] al escribir

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."

1.4.4. Orden de carga de las interfaces

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.

Si no puede encontrar el archivo de configuración o si éste no se puede leer, GRUB


carga la interfaz de línea de comandos para permitirle al usuario escribir manualmente

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.

1.5. Comandos del GRUB


Ricardo recuerda a Mónica que "GRUB permite varios comandos en su línea de
comandos". El tutor sonríe: "Sé que suena muy redundante pero es así. Algunos de
los comandos aceptan opciones después del nombre. Recuerda que estas opciones
deben ir separadas del comando por comas. Además, deben estar separadas de otras
opciones de esa línea, por caracteres de espacio. Esto es muy importante".
Después, Ricardo presenta una lista en la que se indican algunos comandos útiles:
x boot Arranca el sistema operativo o gestor de encadenamiento que se ha
cargado. Este comando se ejecuta cuando ya se han puesto todos los
comandos necesarios para que el sistema arranque.
x chainloader </ruta/a/archivo> Carga el archivo especificado como gestor
de encadenamiento. Si el archivo está ubicado en el primer sector de la
partición especificada, puede utilizar la notación de lista de bloques, +1, en vez
del nombre del archivo. Este comando típicamente se utiliza para arrancar un
sistema operativo Windows.
Lo siguiente es un ejemplo del comando chainloader:
chainloader +1

x initrd </ruta/a/initrd> Le permite especificar un ramdisk inicial para


utilizarlo al arrancar. Ricardo le explica a Mónica que es necesario un
initrd cuando el kernel requiere de ciertos módulos para poder arrancar
adecuadamente, como, por ejemplo, cuando la partición se formatea con el
sistema de archivos ext3. Típicamente se utiliza para arrancar sistemas
operativos Linux

A continuación se muestra un ejemplo del comando initrd:


initrd /initrd-2.6.8-1.523.img

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

El primer comando que aquí vemos dice:


root (hd0,0) : Con este comando se le indica al GRUB en qué disco y partición se
encontrarán los ulteriores archivos.
En este caso hd0,0 indica:
hd : Estará en un disco duro (podría haber sido fd o nd)
0,0: Estará en el primer disco que el BIOS ve, en la primera partición de este
disco
0,0 significa: primer disco de mi sistema, primera partición del disco. GRUB
siempre cuenta desde cero los valores.

Típicamente se refiere a la partición donde está el directorio /boot; en efecto,


en mi caso la partición donde está /boot es la primera, lo podemos verificar
con el comando mount:
[eperez@eperez ~]$ mount
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)

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.

El sistema posteriormente lo remonta en lectura escritura (rw) de forma


automática."

root=LABEL=/ : Le indicará al kernel cuál es la partición que contiene la


partición root.
Mónica mira sus apuntes: "Así que en este caso le está diciendo: Es la
partición cuya etiqueta sea / (una cadena, en este caso es / la cadena)".

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)".

Mónica pregunta: "¿Cómo podemos ver el nombre de una partición?"


Ricardo le explica con un ejemplo:
[root@eperez ~]# e2label /dev/sda1
/boot
En este caso la etiqueta de /dev/sda1 se llama /boot

El parámetro root= también puede aceptar directamente el nombre de una


partición, por ejemplo podría ser:
root=/dev/sda3

"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".

Este archivo (/initrd-2.6.18-53.img) existe igualmente en el disco y partición definido


por el comando root anterior. Puedes verlo aquí:
[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

1.6. Cambiar los niveles de ejecución en el tiempo de


arranque
Bajo Red Hat Enterprise Linux, es posible cambiar el nivel de ejecución
predeterminado en el momento de arranque.
Mónica quiere saber cuándo es necesario cambiar este nivel de ejecución.
Ricardo le explica que esto puede ser necesario cuando, por ejemplo, nuestro sistema
no arranca en el nivel en el que estamos. "Imagínate que está fallando algo en la
configuración del ambiente X, por ejemplo. Con esta opción podemos arrancar en otro
modo (3 por ejemplo) y saltarnos el problema en el ambiente gráfico".
Para cambiar el nivel de ejecución de una sesión de arranque, se deben seguir las
estas instrucciones :
x Cuando la pantalla de menú de GRUB aparece durante el arranque, hay que
presionar cualquier tecla para entrar en el menú de GRUB (dentro de los
primeros tres segundos).
Presionar la tecla [a] para añadir al comando kernel.
x Añadir <espacio><nivel-de-ejecucion> al final de la línea de opciones de
arranque para iniciar en el nivel de ejecución deseado. Por ejemplo, la entrada
siguiente iniciará un proceso de arranque en el nivel 3.
grub append> ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
x Una vez hecho esto, hay que apretar enter, y el sistema booteará al nivel antes
indicado.
Mónica mira al tutor y le dice "Por supuesto, si en vez de 3, yo escribo 1, el sistema
bootearía en el nivel 1 (single) ¿no?... que rara me suena esta palabra bootear!"

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!"

1.7. Opciones que se pueden pasar al kernel


Ricardo le dice a Mónica que debe considerar que GRUB puede pasar una serie de
opciones al kernel, desde el comando "kernel". Por ejemplo:
kernel /vmlinuz-2.6.9-67.0.15.EL ro root=LABEL=/ rhgb quiet

-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.

- No te preocupes, Mónica, yo te voy a explicar algunas de ellas. Antes de esto, quiero


recalcar que si el kernel no entiende una opción, sencillamente la ignora, así que
podemos probar poner opciones aun cuando no estemos seguros de que nuestro
kernel las entienda.
Mónica pregunta si las mismas opciones funcionan en los kernels antiguos y nuevos.
El tutor mira a su alumna: "Es una buena pregunta ¿Tú qué crees?".
-Yo pienso que no, dice Mónica con voz un tanto insegura.
-Efectivamente. Las opciones cambian con el tiempo, por lo que algunas opciones
sirven para kernels antiguos y otras para kernels más nuevos.

Podemos cambiar estas opciones entrando al modo de edición (e) y editando


posteriormente la línea del kernel (e nuevamente).
A continuación, Ricardo le explica las opciones que no han visto antes:
x rhgb : Red Hat Graphical Boot, le indica al sistema que no arranque en su
tradicional modo texto, sino que le ofrezca al usuario una pantalla con fondo
azul y un termómetro que camina de izquierda a derecha indicando cada uno
de los servicios que levanta. Da una idea de modernidad (Mónica dice: "Ya veo
que no es el viejo y feo sistema que arranca en modo texto").
Si quisiéramos arrancar a la antigua, podríamos eliminar la opción rhgb, entonces
nuestro sistema arrancaría así:

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

Observa en el texto de abajo, dice: Press 'b' to boot...


Esto es porque hemos hecho cambios y tenemos que indicarle, muy explícitamente,
que queremos bootear con estas opciones.
Mónica quiere saber de otras opciones interesantes.
El tutor le subraya que al agregar estas funciones, se obtiene un cambio en el
comportamiento del kernel. "Yo no las apoyo ni reniego de ellas, las uso solo cuando
me hacen falta":
x nousb = no arranca el sistema de usb
x nosound = no arranca elsistema de sonido
x noht = no activa el hiper threading
x noacpi = no activa el sistema de acpi del bios
x un número = va directo al nivel de arranque que le indiquemos, por ejemplo: 3
irá directamente al nivel 3.
Estos cambios no son permanentes. Si quisiéramos hacerlos permanentes
deberíamos editar el archivo /boot/grub/menu.lst al arrancar.

/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.

Fin del tema 1.

27

You might also like