GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es Grub la mejor solución de carga de arranque? ¿Hay una alternativa más fácil?

He tenido algunas experiencias bastante malas con GRUB2 . Podría decir (y haber dicho) algunas cosas desagradables sobre su proceso de diseño y desarrollo. Me desagrada especialmente su forma de actualización:por la razón que sea, debe actualizar semiautomáticamente varios scripts, uno indirectamente a través de otro en una cadena, para cada actualización del kernel, o muchos otros menores (y aparentemente no relacionados) modificaciones de configuración.

Esto contrasta directamente con experiencias anteriores que tuve con LILO – al cual estoy considerando seriamente volver – ya que nunca tuve ningún problema con él, y su configuración fue bastante simple. Por un lado, tal como lo recuerdo, solo tenía que actualizar (o, más bien, solo se actualizaba) un único archivo de texto de configuración administrado de manera simple por actualización del kernel.

Entonces, ¿cómo funciona LILO en hardware moderno con los núcleos actuales? ¿Cómo funciona GRUB? ¿Cómo funcionan otros cargadores de arranque? ¿Tengo que cumplir alguna condición previa, o solo se trata de escribir el archivo de configuración y ejecutar lilo? comando como lo recuerdo con cariño en los viejos tiempos? ¿La actualización del paquete del kernel (Debian/Ubuntu) actualiza LILO como lo hace con GRUB2?

Respuesta aceptada:

ELILO

Administración de cargadores de arranque EFI para Linux:uso de ELILO

Es realmente difícil para mí decidir qué parte de eso copiar y pegar porque todo es muy bueno, así que solo les pido que lo lean.

Rod Smith

Elaboró ​​y mantiene ambos gdisk y rEFInd .

Pero antes me gustaría comentar un poco al respecto. El enlace ELILO anterior es a una de las muchas páginas sobre el arranque UEFI que encontrará en rodsbooks.com escritas por Rod Smith. Es un escritor técnico consumado, y si alguna vez buscó en Google el tema del arranque UEFI y terminó sin leer algo suyo, probablemente se debió a que se saltó los resultados principales.

Arranque Linux UEFI

Básicamente, el kernel de Linux puede ser ejecutado directamente por el firmware.

En el enlace anterior, menciona el cargador auxiliar EFI del kernel de Linux; en mi opinión, esto es lo que debería usar, ya que permite que el firmware mismo llame directamente al kernel de Linux. Independientemente de lo que estés haciendo algo está siendo ejecutado por el firmware, y parece que algo es grub . Si el firmware puede cargar directamente el kernel de su sistema operativo, ¿de qué sirve un gestor de arranque? El firmware UEFI monta una partición GPT con formato FAT marcada esp por la tabla de particiones y ejecuta una ruta allí guardada como una variable de arranque UEFI en un módulo de memoria flash integrado. Entonces, una cosa que podría hacer es colocar el kernel de Linux en esa partición FAT y almacenar su ruta en esa variable de arranque. De repente, el núcleo es propio gestor de arranque.

Cargadores de arranque

En los sistemas UEFI, los gestores de arranque son redundantes, incluido ELILO.

El problema que se diseñó para resolver los cargadores de arranque era que los sistemas BIOS solo leían en el primer sector del arranque partición marcada y ejecútela. Es un poco difícil hacer algo significativo con un kernel de 512 bytes, por lo que lo más común era escribir una pequeña utilidad que pudiera montar un sistema de archivos donde mantuvieras el real kernel y cargarlo en cadena.

Relacionado:¿determinar el shell en el script durante el tiempo de ejecución?

De hecho, los 512 bytes a menudo no eran suficientes ni siquiera para los gestores de arranque. grub , por ejemplo, en realidad se carga en cadena antes de cargar en cadena su kernel, porque encaja su segunda etapa en el espacio vacío entre el sector de arranque y el primer sector de su sistema de archivos. Es una especie de truco sucio, pero funcionó.

Administradores de arranque

Sin embargo, en aras de una fácil configuración, algunos intermediario puede ser útil.

Lo que hace rEFInd de Rod Smith es iniciar como una aplicación de EFI – Este es un concepto relativamente nuevo. Es un programa que se ejecuta desde el disco y que regresa al firmware. Lo que hace rEFInd es permitirle administrar los menús de arranque y luego devuelve su selección de arranque al firmware ejecutar. Viene con controladores de sistema de archivos UEFI – entonces, por ejemplo, puede usar el cargador de código auxiliar EFI del kernel en un no FAT partición (como su actual /boot ). Es muy simple de administrar, si tal cosa es necesaria, y agrega la simplicidad de un kernel de sistema ejecutable a la conveniencia de un gestor de arranque configurable.

Indirección atómica

El núcleo no necesita enlaces simbólicos:puede mount --bind .

Si hay alguna ruta en su / donde debería no permitir enlaces simbólicos, es /boot . Un enlace simbólico huérfano en /boot es no el tipo de problema que deberías tener que solucionar. Aún así, es una práctica bastante común configurar direcciones indirectas elaboradas en /boot por varias distribuciones, incluso si es una idea horrible, para manejar actualizaciones de kernel en el lugar y/o configuraciones de kernel múltiples.

Este es un problema para sistemas EFI no configurado para cargar controladores de sistemas de archivos (como los que se proporcionan con el paquete rEFInd) porque FAT es un sistema de archivos bastante estúpido en general y no los entiende.

Personalmente, no uso los controladores del sistema de archivos UEFI provistos con rEFInd, aunque la mayoría de las distribuciones incluyen un paquete rEFInd que se puede instalar a través del administrador de paquetes y olvidarse de usar su propio enlace simbólico horrible /boot config y los controladores del sistema de archivos UEFI empaquetados de rEFInd.

Mi configuración

Una vez escribí un conjunto de instrucciones y lo publiqué aquí, pero parece:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Así que puse esas dos líneas en mi /etc/fstab apuntando a una carpeta que pretendo que contenga el /boot de la nueva instalación de Linux y estoy casi terminado de preocuparse por todo el asunto. También tengo que hacer:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

Aparte de instalar el refind-efi paquete a través de pacman para el primero, eso es todo lo que se requiere para configurar tantas instalaciones/configuraciones separadas como desee. Tenga en cuenta que la mayoría de esa cadena anterior consiste en opciones de montaje específicas de btrfs especificadas como parámetros del núcleo. Un /boot/refind_linux.conf más típico probablemente se vería así:

"Menu Entry" "root=/dev/sda2"

Y eso es todo lo que se necesita.

rodsbooks.com

Si aún desea ELILO, puede encontrar las instrucciones de instalación en el enlace de arriba. Si desea REFInd, encontrará enlaces a él en el primer párrafo. Básicamente, si desea realizar cualquier configuración de arranque UEFI, primero lea rodsbooks.com.

Relacionado:¿N alternativa a sed que admita Unicode?
Linux
  1. El kernel de Linux:las 5 principales innovaciones

  2. ¿Cuál es la mejor solución para reemplazar un nuevo asignador de memoria en un código existente?

  3. ¿Cómo verificar HZ en la terminal?

  4. ¿Cuál es la mejor manera de aprender SELinux?

  5. ¿La mejor manera de evitar que el sistema raíz se llene cuando falla un montaje?

Los 5 mejores temas de Linux Conky

Los 10 mejores sistemas operativos alternativos de Windows:¿cuál es mejor para usted?

Las 13 mejores aplicaciones alternativas para tomar notas de Evernote para Linux

Los 10 mejores programas gratuitos de Office Suite como alternativa de MS Office para Linux

¿Cuáles son las mejores formas de realizar tareas casi en tiempo real en un sistema operativo/núcleo que no es en tiempo real?

¿Existe una alternativa GUI a Putty SSH para transferir archivos?