Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
102.2 Lección 1
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
How to get certified
  1. Tema 102: Instalación de Linux y gestión de paquetes
  2. 102.2 Instalar un gestor de arranque
  3. 102.2 Lección 1

102.2 Lección 1

Certificación:

LPIC-1

Versión:

5.0

Tema:

102 Instalación de Linux y Administración de Paquetes

Objetivo:

102.2 Instalar un administrador de arranque

Lección:

1 de 1

Introducción

Cuando una computadora se enciende, el primer software que se ejecuta es el cargador de arranque. Este es un código cuyo único propósito es cargar el núcleo del sistema operativo y entregarle el control. El núcleo cargará los controladores necesarios, inicializará el hardware y luego cargará el resto del sistema operativo.

GRUB es el gestor de arranque utilizado en la mayoría de las distribuciones de Linux. Puede cargar el núcleo de Linux u otros sistemas operativos, como Windows, y puede manejar múltiples imágenes y parámetros del núcleo del sistema operativo como entradas de menú separadas. La selección del núcleo en el arranque se realiza a través de una interfaz controlada por teclado, y hay una interfaz de línea de comandos para editar las opciones y parámetros de arranque.

La mayoría de las distribuciones de Linux instalan y configuran GRUB (en realidad, GRUB 2) automáticamente, por lo que un usuario normal no necesita pensar en eso. Sin embargo, como administrador del sistema, es vital saber cómo controlar el proceso de arranque para poder recuperar el sistema de una falla de arranque después de una actualización fallida del núcleo, por ejemplo.

En esta lección aprenderá cómo instalar, configurar e interactuar con GRUB.

GRUB Legacy vs. GRUB 2

La versión original de GRUB (Grand Unified Bootloader), ahora conocida como GRUB Legacy se desarrolló en 1995 como parte del proyecto GNU Hurd, y más tarde se adoptó como el gestor de arranque predeterminado de muchas distribuciones de Linux, reemplazando alternativas anteriores como LILO.

GRUB 2 es una reescritura completa de GRUB con el objetivo de ser más limpio, más seguro, más robusto y más potente. Entre las muchas ventajas sobre GRUB Legacy se encuentran un archivo de configuración mucho más flexible (con muchos más comandos y sentencias condicionales, similar a un lenguaje de script), un diseño más modular y una mejor localización/internacionalización.

También hay soporte para temas y menús gráficos de arranque con pantallas de presentación, la capacidad de arrancar archivos ISO de LiveCD directamente desde el disco duro, mejor soporte para arquitecturas que no son x86, soporte universal para UUID (lo que facilita la identificación de discos y particiones) y mucho más.

GRUB Legacy ya no está en desarrollo activo (la última versión fue 0.97, en 2005), y hoy la mayoría de las principales distribuciones de Linux instalan GRUB 2 como el gestor de arranque predeterminado. Sin embargo, aún puede encontrar sistemas que utilicen GRUB Legacy, por lo que es importante saber cómo usarlo y dónde es diferente de GRUB 2.

¿Dónde se ubica el cargador de arranque?

Históricamente, los discos duros en los sistemas compatibles con PC de IBM se particionaron utilizando el esquema de partición MBR, creado en 1982 para IBM PC-DOS (MS-DOS) 2.0.

En este esquema, el primer sector de 512 bytes del disco se llama Master Boot Record y contiene una tabla que describe las particiones en el disco (la tabla de particiones) y también el código de arranque, llamado cargador de arranque.

Cuando se enciende la computadora, este código de gestor de arranque mínimo (debido a restricciones de tamaño) se carga, ejecuta y pasa el control a un cargador de arranque secundario en el disco, generalmente ubicado en un espacio de 32 KB entre el MBR y la primera partición, que cargará los sistemas operativos.

En un disco con particiones MBR, el código de arranque para GRUB está instalado en el MBR. Esto carga y pasa el control a una imagen “núcleo” instalada entre el MBR y la primera partición. Desde este punto, GRUB es capaz de cargar el resto de los recursos necesarios (definiciones de menú, archivos de configuración y módulos adicionales) desde el disco.

Sin embargo, MBR tiene limitaciones en el número de particiones (originalmente un máximo de 4 particiones primarias, luego un máximo de 3 particiones primarias con 1 partición extendida subdividida en un número de particiones lógicas) y tamaños de disco máximos de 2 TB. Para superar estas limitaciones, se creó un nuevo esquema de particionamiento llamado GPT (GUID Partition Table), parte del estándar UEFI (Unified Extensible Firmware Interface).

Los discos con particiones GPT se pueden usar con computadoras con el BIOS de PC tradicional o con el firmware UEFI. En máquinas con un BIOS, la segunda parte de GRUB se almacena en una partición especial de arranque del BIOS.

En los sistemas con firmware UEFI, GRUB se carga mediante el firmware desde los archivos grubia32.efi (para sistemas de 32 bits) o grubx64.efi (para sistemas de 64 bits) desde una partición llamada ESP (EFI System Partition ).

La partición /boot

En Linux, los archivos necesarios para el proceso de arranque generalmente se almacenan en una partición de arranque, montados en el sistema de archivos raíz y coloquialmente denominados /boot.

No se necesita una partición de arranque en los sistemas actuales, ya que los cargadores de arranque como GRUB generalmente pueden montar el sistema de archivos raíz y buscar los archivos necesarios dentro de un directorio /boot, pero es una buena práctica ya que separa los archivos necesarios para proceso de arranque desde el resto del sistema de archivos.

Esta partición suele ser la primera en el disco. Esto se debe a que el BIOS original de la PC de IBM diseñó los discos usando Cilindros, Cabezas y Sectores (Cylinders, Heads y Sectors (CHS)), con un máximo de 1024 cilindros, 256 cabezas y 63 sectores, lo que resulta en un tamaño de disco máximo de 528 MB (504 MB sobre MS-DOS) . Esto significa que nada más allá de esta marca no sería accesible, a menos que se utilizara un esquema de direccionamiento de disco diferente (como LBA, Logical Block Addressing).

Entonces, para una máxima compatibilidad, la partición /boot generalmente se encuentra al comienzo del disco y termina antes del cilindro 1024 (528 MB), asegurando que la máquina siempre pueda cargar el kernel. El tamaño recomendado para esta partición en una máquina actual es de 300 MB.

Otras razones para una partición /boot separada son el cifrado y la compresión, ya que algunos métodos pueden no ser compatibles con GRUB 2 todavía, o si necesita tener la partición raíz del sistema (/) formateada utilizando un sistema de archivos no compatible.

Contenido de la partición de arranque

El contenido de la partición /boot puede variar con la arquitectura del sistema o el cargador de arranque en uso, pero en un sistema basado en x86, generalmente encontrará los archivos a continuación. La mayoría de estos se nombran con un sufijo -VERSION, donde -VERSION es la versión del núcleo de Linux correspondiente. Entonces, por ejemplo, un archivo de configuración para la versión del núcleo de Linux 4.15.0-65-generic se llamaría config-4.15.0-65-generic.

Archivo de configuración

Este archivo, generalmente llamado config-VERSION (vea el ejemplo anterior), almacena los parámetros de configuración para el núcleo de Linux. Este archivo se genera automáticamente cuando se compila o instala un nuevo núcleo y el usuario no debe modificarlo directamente.

Mapa del sistema

Este archivo es una tabla de búsqueda que combina nombres de símbolos (como variables o funciones) con su posición correspondiente en la memoria. Esto es útil al depurar un tipo de falla del sistema conocida como kernel panic, ya que permite al usuario saber qué variable o función se estaba llamando cuando ocurrió la falla. Al igual que el archivo de configuración, el nombre suele ser System.map-VERSION (por ejemplo, System.map-4.15.0-65-generic).

Kernel de Linux

Este es el núcleo del sistema operativo propiamente dicho. El nombre suele ser vmlinux-VERSION (por ejemplo, vmlinux-4.15.0-65-generic). También puede encontrar el nombre vmlinuz en lugar de vmlinux, la z al final significa que el archivo ha sido comprimido.

Disco RAM inicial

Esto generalmente se llama initrd.img-VERSION y contiene un sistema de archivos raíz mínimo cargado en un disco RAM, que contiene utilidades y módulos del núcleo necesarios para que el núcleo pueda montar el sistema de archivos raíz real.

Archivos relacionados con el cargador de arranque

En los sistemas con GRUB instalado, estos generalmente se encuentran en /boot/grub e incluyen el archivo de configuración GRUB (/boot/grub/grub.cfg para GRUB 2 o /boot/grub/menu.lst en caso de GRUB Legacy), módulos (en /boot/grub/i386-pc), archivos de traducción (en /boot/grub/locale) y fuentes (en /boot/grub/fonts).

GRUB 2

Instalando GRUB 2

GRUB 2 se puede instalar utilizando la utilidad grub-install. Si tiene un sistema que no arranca, necesitará arrancar usando un Live CD o un disco de rescate, averiguar cuál es la partición de arranque de su sistema, montarlo y luego ejecutar la utilidad.

Note

Los siguientes comandos suponen que ha iniciado sesión como root. Si no, primero ejecute sudo su - para “convertirse en” root. Cuando termine, escriba exit para cerrar sesión y volver a un usuario normal.

El primer disco de un sistema suele ser el boot device y es posible que necesite saber si hay una boot partition en el disco. Esto se puede hacer con la utilidad fdisk. Para enumerar todas las particiones en el primer disco de su máquina, use:

# fdisk -l /dev/sda
Disk /dev/sda: 111,8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x97f8fef5

Device     Boot    Start       End   Sectors   Size Id Type
/dev/sda1  *        2048   2000895   1998848   976M 83 Linux
/dev/sda2        2002942 234440703 232437762 110,9G  5 Extended
/dev/sda5        2002944  18008063  16005120   7,6G 82 Linux swap / Solaris
/dev/sda6       18010112 234440703 216430592 103,2G 83 Linux

La partición de arranque se identifica con el * debajo de la columna de arranque. En el ejemplo anterior, es /dev/sda1.

Ahora, cree un directorio temporal en /mnt y monte la partición en él:

# mkdir /mnt/tmp
# mount /dev/sda1 /mnt/tmp

Luego ejecute grub-install, apuntándolo al dispositivo de arranque (no la partición) y al directorio donde está montada la partición de arranque. Si su sistema tiene una partición de arranque dedicada, el comando es:

# grub-install --boot-directory=/mnt/tmp /dev/sda

Si está instalando en un sistema que no tiene una partición de arranque, sino solo un directorio /boot en el sistema de archivos raíz, utilice grub-install. Entonces, el comando es:

# grub-install --boot-directory=/boot /dev/sda

Configurando GRUB 2

El archivo de configuración predeterminado para GRUB 2 es /boot/grub/grub.cfg. Este archivo se genera automáticamente y no se recomienda la edición manual. Para realizar cambios en la configuración de GRUB, debe editar el archivo /etc/default/grub y luego ejecutar la utilidad update-grub para generar un archivo compatible.

Note

update-grub suele ser un acceso directo a grub-mkconfig -o /boot/grub/grub.cfg, por lo que producen los mismos resultados.

Hay algunas opciones en el archivo /etc/default/grub que controlan el comportamiento de GRUB 2, como el kernel predeterminado para arrancar, el tiempo de espera, los parámetros adicionales de la línea de comandos, etc. Los más importantes son:

GRUB_DEFAULT=

La entrada de menú predeterminada para arrancar. Puede ser un valor numérico (como 0, 1, etc.), el nombre de una entrada de menú (como debian) o saved, que se usa junto con GRUB_SAVEDEFAULT=, explicado a continuación. Tenga en cuenta que las entradas del menú comienzan en cero, por lo que la primera entrada del menú es 0, la segunda es 1, etc.

GRUB_SAVEDEFAULT=

Si esta opción se establece en true y GRUB_DEFAULT= se establece en saved, entonces la opción de inicio predeterminada siempre será la última seleccionada en el menú de inicio.

GRUB_TIMEOUT=

El tiempo de espera, en segundos, antes de que se seleccione la entrada de menú predeterminada. Si se establece en 0, el sistema iniciará la entrada predeterminada sin mostrar un menú. Si se establece en -1, el sistema esperará hasta que el usuario seleccione una opción, sin importar cuánto tiempo tarde.

GRUB_CMDLINE_LINUX=

Esto enumera las opciones de línea de comando que se agregarán a las entradas para el kernel de Linux.

GRUB_CMDLINE_LINUX_DEFAULT=

Por defecto, se generan dos entradas de menú para cada núcleo de Linux, una con las opciones predeterminadas y una entrada para la recuperación. Con esta opción, puede agregar parámetros adicionales que se agregarán solo a la entrada predeterminada.

GRUB_ENABLE_CRYPTODISK=

Si se establece en y, los comandos como grub-mkconfig, update-grub y grub-install buscarán discos cifrados y agregarán los comandos necesarios para acceder a ellos durante el arranque. Esto desactiva el arranque automático (GRUB_TIMEOUT= con cualquier valor que no sea -1) porque se necesita una contraseña para descifrar los discos antes de que se pueda acceder a ellos.

Administrar entradas de menú

Cuando se ejecuta update-grub, GRUB 2 buscará núcleos y sistemas operativos en la máquina y generarán las entradas de menú correspondientes en el archivo /boot/grub/grub.cfg. Se pueden agregar nuevas entradas manualmente a los archivos de script dentro del directorio /etc/grub.d.

Estos archivos deben ser ejecutables y son procesados en orden numérico por update-grub. Por lo tanto, 05_debian_theme se procesa antes que 10_linux y así sucesivamente. Las entradas de menú personalizadas generalmente se agregan al archivo 40_custom.

La sintaxis básica para una entrada de menú se muestra a continuación:

menuentry "Default OS" {
    set root=(hd0,1)
    linux /vmlinuz root=/dev/sda1 ro quiet splash
    initrd /initrd.img
}

La primera línea siempre comienza con menuentry y termina con {. El texto entre comillas se mostrará como la etiqueta de entrada en el menú de arranque de GRUB 2.

El parámetro set root define el disco y la partición donde se encuentra el sistema de archivos raíz para el sistema operativo. Tenga en cuenta que en GRUB 2 los discos están numerados desde cero, por lo que hd0 es el primer disco (sda en Linux), hd1 el segundo, y así sucesivamente. Las particiones, sin embargo, están numeradas a partir de uno. En el ejemplo anterior, el sistema de archivos raíz se encuentra en el primer disco (hd0), la primera partición (,1) o sda1.

En lugar de especificar directamente el dispositivo y la partición, también puede hacer que GRUB 2 busque un sistema de archivos con una etiqueta específica o UUID (Universally Unique Identifier). Para eso, utilice el parámetro search --set=root seguido del parámetro --label y la etiqueta del sistema de archivos para buscar, o --fs-uuid seguido del UUID del sistema de archivos.

Puede encontrar el UUID de un sistema de archivos con el siguiente comando:

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 nov  4 08:40 3e0b34e2-949c-43f2-90b0-25454ac1595d -> ../../sda5
lrwxrwxrwx 1 root root 10 nov  4 08:40 428e35ee-5ad5-4dcb-adca-539aba6c2d84 -> ../../sda6
lrwxrwxrwx 1 root root 10 nov  5 19:10 56C11DCC5D2E1334 -> ../../sdb1
lrwxrwxrwx 1 root root 10 nov  4 08:40 ae71b214-0aec-48e8-80b2-090b6986b625 -> ../../sda1

En el ejemplo anterior, el UUID para /dev/sda1 es ae71b214-0aec-48e8-80b2-090b6986b625. Si desea establecerlo como el dispositivo raíz para GRUB 2, el comando sería search --set=root --fs-uuid ae71b214-0aec-48e8-80b2-090b6986b625.

Cuando se usa el comando search, es común agregar el parámetro --no-floppy para que GRUB no pierda el tiempo buscando en disquetes.

La línea linux indica dónde se encuentra el núcleo del sistema operativo (en este caso, el archivo vmlinuz en la raíz del sistema de archivos). Después de eso, puede pasar los parámetros de la línea de comandos al núcleo del sistema operativo.

En el ejemplo anterior, especificamos la partición raíz (root=/dev/sda1) y pasamos tres parámetros del kernel: la partición raíz debe montarse como solo lectura (ro), la mayoría de los mensajes de registro deben estar deshabilitados (quiet) y se debe mostrar una pantalla de bienvenida (splash).

La línea initrd indica dónde se encuentra el disco RAM inicial. En el ejemplo anterior, el archivo es initrd.img, ubicado en la raíz del sistema de archivos.

Note

La mayoría de las distribuciones de Linux no colocan el núcleo y el initrd en el directorio raíz del sistema de archivos. En cambio, estos son enlaces a los archivos reales dentro del directorio o partición /boot.

La última línea de una entrada de menú debe contener solo el carácter }.

Interactuando con GRUB 2

Al iniciar un sistema con GRUB 2, verá un menú de opciones. Use las teclas de flecha para seleccionar una opción y Enter para confirmar y arrancar la entrada seleccionada.

Tip

Si ve solo una cuenta regresiva, pero no un menú, presione Shift para que aparezca el menú.

Para editar una opción, selecciónela con las teclas de flecha y presione E. Esto mostrará una ventana del editor con el contenido del menuentry asociado con esa opción, como se define en /boot/grub/grub.cfg.

Después de editar una opción, escriba Ctrl+X o F10 para arrancar, o Esc para volver al menú.

Para ingresar al shell de GRUB 2, presione C en la pantalla del menú (o Ctrl+C) en la ventana de edición). Verá un símbolo del sistema como este: grub>

Escriba help para ver una lista de todos los comandos disponibles, o presione Esc para salir del shell y volver a la pantalla del menú.

Note

Recuerde que este menú no aparecerá si GRUB_TIMEOUT está configurado en 0 en /etc/default/grub.

Arranque desde la consola del GRUB 2

Puede usar el shell GRUB 2 para arrancar el sistema en caso de que una configuración incorrecta en una entrada del menú haga que falle.

Lo primero que debe hacer es averiguar dónde está la partición de arranque. Puede hacerlo con el comando ls, que le mostrará una lista de las particiones y discos que GRUB 2 ha encontrado.

grub> ls
(proc) (hd0) (hd0,msdos1)

En el ejemplo anterior, las cosas son fáciles. Solo hay un disco (hd0) con solo una partición: (hd0, msdos1).

Los discos y particiones enumerados serán diferentes en su sistema. En nuestro ejemplo, la primera partición de hd0 se llama msdos1 porque el disco se particionó utilizando el esquema de partición MBR. Si se particionara usando GPT, el nombre sería gpt1.

Para arrancar Linux, necesitamos un kernel y un disco RAM inicial (initrd). Veamos el contenido de (hd0, msdos1):

grub> ls (hd0,msdos1)/
lost+found/ swapfile etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ initrd.img initrd.img.old vmlinuz cdrom/

Puede agregar el parámetro -l a ls para obtener una lista larga, similar a lo que obtendría en un terminal Linux. Use Tab para autocompletar los nombres de disco, partición y archivo.

Tenga en cuenta que tenemos imágenes de kernel (vmlinuz) e initrd (initrd.img) directamente en el directorio raíz. Si no, podríamos verificar el contenido de /boot con list (hd0,msdos1)/boot/.

Ahora, configure la partición de arranque:

grub> set root=(hd0,msdos1)

Cargue el kernel de Linux con el comando linux, seguido de la ruta al kernel y la opción root= para decirle al kernel dónde se encuentra el sistema de archivos raíz para el sistema operativo.

grub> linux /vmlinuz root=/dev/sda1

Cargue el disco RAM inicial con initrd, seguido de la ruta completa al archivo initrd.img:

grub> initrd /initrd.img

Ahora, inicie el sistema con boot.

Arranque desde la consola de rescate

En caso de una falla de arranque, GRUB 2 puede cargar un shell de rescate, una versión simplificada del shell que mencionamos anteriormente. Lo reconocerá mediante el símbolo del sistema, que se muestra como grub rescue>.

El proceso para iniciar un sistema desde esta consola es casi el mismo que se muestra anteriormente. Sin embargo, deberá cargar algunos módulos GRUB 2 para que todo funcione.

Después de descubrir qué partición es la partición de arranque (con ls, como se muestra antes), use el comando set prefix=, seguido de la ruta completa al directorio que contiene los archivos GRUB 2. Usualmente /boot/grub. En nuestro ejemplo:

grub rescue> set prefix=(hd0,msdos1)/boot/grub

Ahora, cargue los módulos normal y linux con el comando insmod:

grub rescue> insmod normal
grub rescue> insmod linux

Luego, configure la partición de arranque con set root= como se indicó anteriormente, cargue el kernel de Linux (con linux), el disco RAM inicial (initrd) e intente arrancar con boot.

GRUB Legacy

Instalación de GRUB Legacy desde un sistema en ejecución

Para instalar GRUB Legacy en un disco desde un sistema en ejecución, utilizaremos la utilidad grub-install. El comando básico es grub-install DEVICE donde DEVICE es el disco donde desea instalar GRUB Legacy. Un ejemplo sería /dev/sda.

# grub-install /dev/sda

Tenga en cuenta que debe especificar el device donde se instalará GRUB Legacy, como /dev/sda/, no la partición como en /dev/sda1.

Por defecto, GRUB copiará los archivos necesarios al directorio /boot en el dispositivo especificado. Si desea copiarlos a otro directorio, use el parámetro --boot-directory=, seguido de la ruta completa a donde se deben copiar los archivos.

Instalación de GRUB Legacy desde un GRUB Shell

Si no puede iniciar el sistema por algún motivo y necesita reinstalar GRUB Legacy, puede hacerlo desde la consola de GRUB en un disco de inicio de GRUB Legacy.

Desde el shell de GRUB (escriba c en el menú de arranque para acceder al indicador grub>), el primer paso es configurar el dispositivo de arranque, que contiene el directorio /boot. Por ejemplo, si este directorio está en la primera partición del primer disco, el comando sería:

grub> root (hd0,0)

Si no sabe qué dispositivo contiene el directorio /boot, puede pedirle a GRUB que lo busque con el comando find, como se muestra a continuación:

grub> find /boot/grub/stage1
 (hd0,0)

Luego, configure la partición de arranque como se indicó anteriormente y use el comando setup para instalar GRUB Legacy en el MBR y copie los archivos necesarios en el disco:

grub> setup (hd0)

Cuando termine, reinicie el sistema y debería arrancar normalmente.

Configuración de entradas y ajustes del menú GRUB Legacy

Las entradas y configuraciones de menú de GRUB Legacy se almacenan en el archivo /boot/grub/menu.lst. Este es un archivo de texto simple con una lista de comandos y parámetros, que puede editarse directamente con su editor de texto favorito.

Las líneas que comienzan con # se consideran comentarios y las líneas en blanco se ignoran.

Una entrada de menú tiene al menos tres comandos. El primero, title, establece el título del sistema operativo en la pantalla del menú. El segundo, root, le dice a GRUB legado desde qué dispositivo o partición arrancar.

La tercera entrada, kernel, especifica la ruta completa a la imagen del núcleo del sistema operativo que debe cargarse cuando se selecciona la entrada correspondiente. Tenga en cuenta que esta ruta es relativa al dispositivo especificado en el parámetro root.

A continuación, un ejemplo simple:

# This line is a comment
title My Linux Distribution
root (hd0,0)
kernel /vmlinuz root=/dev/hda1

A diferencia de GRUB 2, en GRUB Legacy ambos discos y particiones están numerados desde cero. Entonces, el comando root (hd0,0) establecerá la partición de arranque como la primera partición (0) del primer disco (hd0).

Puede omitir la instrucción root si especifica el dispositivo de arranque antes de la ruta en el comando kernel. La sintaxis es la misma, entonces:

kernel (hd0,0)/vmlinuz root=dev/hda1

es equivalente a:

root (hd0,0)
kernel /vmlinuz root=/dev/hda1

Ambos cargarán el archivo vmlinuz desde el directorio raíz (/) de la primera partición del primer disco (hd0,0).

El parámetro root=/dev/hda1 después del comando kernel le dice al kernel de Linux qué partición debe usarse como sistema de archivos raíz. Este es un parámetro del núcleo de Linux, no un comando GRUB legacy.

Note

Para obtener más información sobre los parámetros del núcleo de Linux, visite https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html.

Es posible que deba especificar la ubicación de la imagen de disco RAM inicial para el sistema operativo con el parámetro initrd. La ruta completa al archivo puede especificarse como en el parámetro kernel, y también puede especificar un dispositivo o partición antes de la ruta, por ejemplo:

# This line is a comment
title My Linux Distribution
root (hd0,0)
kernel /vmlinuz root=/dev/hda1
initrd /initrd.img

GRUB Legacy tiene un diseño modular, donde los módulos (generalmente almacenados como archivos .mod en /boot/grub/i386-pc) se pueden cargar para agregar funciones adicionales, como soporte para hardware inusual, sistemas de archivos o nuevos algoritmos de compresión.

Los módulos se cargan utilizando el comando module, seguido de la ruta completa al archivo .mod correspondiente. Tenga en cuenta que, al igual que los núcleos y las imágenes initrd, esta ruta es relativa al dispositivo especificado en el comando root.

El siguiente ejemplo cargará el módulo 915resolution, necesario para establecer correctamente la resolución de framebuffer en sistemas con conjuntos de chips de video Intel de las series 800 o 900.

module /boot/grub/i386-pc/915resolution.mod

Carga en cadena de otros sistemas operativos

GRUB Legacy se puede usar para cargar sistemas operativos no compatibles, como Windows, mediante un proceso llamado chainloading. GRUB Legacy se carga primero, y cuando se selecciona la opción correspondiente, se carga el gestor de arranque para el sistema deseado.

Una entrada típica para cargar Windows en cadena se vería como la siguiente:

# Load Windows
title Windows XP
root (hd0,1)
makeactive
chainload +1
boot

Pasemos por cada parámetro. Como antes, root (hd0,1) especifica el dispositivo y la partición donde se encuentra el cargador de arranque para el sistema operativo que deseamos cargar. En este ejemplo, la segunda partición del primer disco.

makeactive

establecerá una bandera que indica que esta es una partición activa. Esto solo funciona en particiones primarias de DOS.

chainload +1

le dice a GRUB que cargue el primer sector de la partición de arranque. Aquí es donde generalmente se encuentran los gestores de arranque.

boot

ejecutará el gestor de arranque y cargará el sistema operativo correspondiente.

Ejercicios Guiados

  1. ¿Cuál es la ubicación predeterminada para el archivo de configuración GRUB 2?

  2. ¿Cuáles son los pasos necesarios para cambiar la configuración de GRUB 2?

  3. ¿En qué archivo se deben agregar entradas de menú personalizadas de GRUB 2?

  4. ¿Dónde se almacenan las entradas de menú para GRUB Legacy?

  5. Desde un menú GRUB 2 o GRUB Legacy, ¿cómo puede ingresar a la consola de GRUB?

Ejercicios Exploratorios

  1. Imagine un usuario que configura GRUB Legacy para arrancar desde la segunda partición del primer disco. Escribe la siguiente entrada de menú personalizada:

    title My Linux Distro
    root (hd0,2)
    kernel /vmlinuz root=/dev/hda1
    initrd /initrd.img

    Sin embargo, el sistema no se iniciará. ¿Qué está mal?

  2. Imagine que tiene un disco identificado como /dev/sda con múltiples particiones. ¿Qué comando se puede usar para averiguar cuál es la partición de arranque en un sistema?

  3. ¿Qué comando se puede usar para averiguar el UUID de una partición?

  4. Considere la siguiente entrada para GRUB 2

    menuentry "Default OS" {
        set root=(hd0,1)
        linux /vmlinuz root=/dev/sda1 ro quiet splash
        initrd /initrd.img
    }

    Cámbiela para que el sistema arranque desde un disco con el UUID 5dda0af3-c995-481a-a6f3-46dcd3b6998d

  5. ¿Cómo puede configurar GRUB 2 para que espere 10 segundos antes de iniciar la entrada de menú predeterminada?

  6. Desde una consola GRUB Legacy, ¿cuáles son los comandos para instalar GRUB en la primera partición del segundo disco?

Resumen

En esta lección aprendimos

  • ¿Qué es un gestor de arranque?.

  • Las diferencias entre GRUB Legacy y GRUB 2.

  • ¿Qué es una partición de arranque y cuáles son sus contenidos?

  • ¿Cómo instalar GRUB Legacy y GRUB 2?

  • ¿Cómo configurar GRUB Legacy y GRUB 2?

  • ¿Cómo agregar entradas de menú personalizadas a GRUB Legacy y GRUB 2?

  • ¿Cómo interactuar con la pantalla del menú y la consola de GRUB Legacy y GRUB 2?

  • ¿Cómo arrancar un sistema desde un shell GRUB Legacy o GRUB 2 o una consola de rescate?

Los siguientes comandos se discutieron en esta lección:

  • grub-install

  • update-grub

  • grub-mkconfig

Respuestas a los ejercicios guiados

  1. ¿Cuál es la ubicación predeterminada para el archivo de configuración GRUB 2?

    /boot/grub/grub.cfg

  2. ¿Cuáles son los pasos necesarios para cambiar la configuración de GRUB 2?

    Realice los cambios en el archivo /etc/default/grub, luego actualice la configuración con update-grub.

  3. ¿En qué archivo se deben agregar entradas de menú personalizadas de GRUB 2?

    /etc/grub.d/40_custom

  4. ¿Dónde se almacenan las entradas de menú para GRUB Legacy?

    /boot/grub/menu.lst

  5. Desde un menú GRUB 2 o GRUB Legacy, ¿cómo puede ingresar a la consola de GRUB?

    Presione c en la pantalla del menú.

Respuestas a ejercicios exploratorios

  1. Imagine un usuario que configura GRUB Legado para arrancar desde la segunda partición del primer disco. Escribe la siguiente entrada de menú personalizada:

    title My Linux Distro
    root (hd0,2)
    kernel /vmlinuz root=/dev/hda1
    initrd /initrd.img

    Sin embargo, el sistema no se iniciará. ¿Qué está mal?

    La partición de arranque está mal. Recuerde que, a diferencia de GRUB 2, GRUB Legacy cuenta las particiones a partir de cero (zero). Entonces, el comando correcto para la segunda partición del primer disco debe ser root (hd0,1).

  2. Imagine que tiene un disco identificado como /dev/sda con múltiples particiones. ¿Qué comando se puede usar para averiguar cuál es la partición de arranque en un sistema?

    Use fdisk -l /dev/sda. La partición de arranque se marcará con un asterisco (*) en la lista.

  3. ¿Qué comando se puede usar para averiguar el UUID de una partición?

    Use ls -la /dev/disk/by-uuid/ y busque el UUID que apunta a la partición.

  4. Considere la siguiente entrada para GRUB 2

    menuentry "Default OS" {
        set root=(hd0,1)
        linux /vmlinuz root=/dev/sda1 ro quiet splash
        initrd /initrd.img
    }

    Cámbiela para que el sistema arranque desde un disco con el UUID 5dda0af3-c995-481a-a6f3-46dcd3b6998d

    Deberá cambiar la instrucción set root. En lugar de especificar un disco y una partición, configure el grub de manera que busque la partición con el UUID deseado.

    menuentry "Default OS" {
        search --set=root --fs-uuid 5dda0af3-c995-481a-a6f3-46dcd3b6998d
        linux /vmlinuz root=/dev/sda1 ro quiet splash
        initrd /initrd.img
    }
  5. ¿Cómo puede configurar GRUB 2 para que espere 10 segundos antes de iniciar la entrada de menú predeterminada?

    Agregue el parámetro GRUB_TIMEOUT=10 a /etc/default/grub.

  6. Desde una consola GRUB Legacy, ¿cuáles son los comandos para instalar GRUB en la primera partición del segundo disco?

    grub> root (hd1,0)
    grub> setup (hd1)

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

102.3 Gestión de librerías compartidas (102.3 Lección 1)

Leer la próxima lección

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.