Érase una vez que teníamos legacy GRUB, el Gran Gestor de arranque Unificado de Linux versión 0.97. Legacy GRUB tenía muchas virtudes, pero se hizo viejo y sus desarrolladores anhelaron más funcionalidad, y por lo tanto GRUB 2 llegó al mundo.
GRUB 2 es una reescritura importante con varias diferencias significativas. Arranca medios extraíbles y se puede configurar con una opción para ingresar al BIOS de su sistema. Es más complicado de configurar con todo tipo de scripts para recorrer, y en lugar de tener un archivo bastante simple /boot/grub/menu.lst
con todas las configuraciones en un solo lugar, el valor predeterminado es /boot/grub/grub.cfg
. Que no editas directamente, oh no, porque esto no es para que lo toquen meros humanos, sino solo otros guiones. Los humanos humildes podemos editar /etc/default/grub
, que controla principalmente la apariencia del menú GRUB. También podemos editar los scripts en /etc/grub.d/
. Estos son los scripts que arrancan sus sistemas operativos, controlan aplicaciones externas como memtest
y os_prober
, y la tematización./boot/grub/grub.cfg
se construye a partir de /etc/default/grub
y /etc/grub.d/*
cuando ejecuta el comando update-grub
, que debe ejecutar cada vez que realice cambios.
La buena noticia es que el script update-grub
es confiable para encontrar núcleos, archivos de arranque y agregar todos los sistemas operativos a su menú de arranque de GRUB, por lo que no tiene que hacerlo manualmente.
vamos a aprender a solucionar dos de los más comunes errores. Cuando arranca su sistema y se detiene en el indicador grub>
, es el shell de comandos completo de GRUB 2. Eso significa que GRUB 2 comenzó normalmente y cargó el módulo normal.mod
(y otros módulos que se encuentran en /boot/grub//
), pero no encontró su archivo grub.cfg
. Si ves grub rescue>
eso significa que no pudo encontrar normal.mod
, por lo que probablemente no pudo encontrar ninguno de tus archivos de arranque.
¿Cómo sucede esto? Es posible que el núcleo haya cambiado las asignaciones de unidades o que haya movido sus discos duros, haya cambiado algunas particiones o haya instalado un nuevo sistema operativo y haya movido cosas. En estos escenarios, los archivos de arranque siguen ahí, pero GRUB no puede encontrarlos. Por lo tanto, puede buscar sus archivos de arranque en el indicador de GRUB, establecer sus ubicaciones y, a continuación, arrancar el sistema y corregir la configuración de GRUB.
Shell de comandos GRUB 2
El shell de comandos GRUB 2 es tan potente como el shell de GRUB heredado. Puede usarlo para descubrir imágenes de arranque, núcleos y sistemas de archivos raíz. De hecho, le da acceso completo a todos los sistemas de archivos de la máquina local, independientemente de los permisos u otras protecciones. Lo que algunos podrían considerar un agujero de seguridad, pero ya conoces el viejo dicho de Unix: quienquiera que tenga acceso físico a la máquina es el propietario.
Cuando estás en el indicador grub>
, tienes una gran cantidad de funciones similares a cualquier shell de comandos, como el historial y la finalización de pestañas. El modo grub rescue>
es más limitado, sin historial ni finalización de pestañas.
Si está practicando en un sistema en funcionamiento, pulse C cuando aparezca el menú de arranque de GRUB para abrir el shell de comandos de GRUB. Puede detener la cuenta regresiva de arranque desplazando hacia arriba y hacia abajo las entradas del menú con las teclas de flecha. Es seguro experimentar en la línea de comandos de GRUB porque nada de lo que hagas allí es permanente. Si ya está mirando el indicador grub>
o grub rescue>
, entonces está listo para rockear.
El siguiente par de comandos funcionan con grub>
y grub rescue>
. El primer comando que debe ejecutar invoca el buscapersonas, para buscar salidas de comando largas:
grub> set pager=1
No debe haber espacios a ambos lados del signo igual. Ahora exploremos un poco. Escriba ls
para enumerar todas las particiones que ve GRUB:
grub> ls(hd0) (hd0,msdos2) (hd0,msdos1)
¿Qué es todo esto msdos stuff
? Esto significa que este sistema tiene la tabla de particiones MS-DOS de estilo antiguo, en lugar de la nueva y brillante Tabla de particiones de Identificadores Únicos globales (GPT). (Consulte Uso de la Nueva Tabla de particiones GUID en Linux (Adiós al antiguo MBR). Si está ejecutando GPT, dirá (hd0,gpt1)
. Ahora vamos a snoop. Use el comando ls
para ver qué archivos hay en su sistema:
grub> ls (hd0,1)/lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old
Hurrah, hemos encontrado el sistema de archivos raíz. Se puede omitir el msdos
y gpt
etiquetas. Si deja fuera la barra diagonal, se imprimirá información sobre la partición. Puede leer cualquier archivo en el sistema con el comando cat
:
grub> cat (hd0,1)/etc/issueUbuntu 14.04 LTS n l
Leer /etc/issue
podría ser útil en un sistema de arranque múltiple para identificar sus diversos Linuxes.
Arranque Desde grub>
Esta es la forma de configurar los archivos de arranque y arrancar el sistema desde el símbolo del sistema grub>
. Sabemos por ejecutar el comando ls
que hay un sistema de archivos raíz de Linux en (hd0,1)
, y puede seguir buscando hasta verificar dónde está /boot/grub
. A continuación, ejecute estos comandos, utilizando su propia partición raíz, núcleo e imagen initrd:
grub> set root=(hd0,1)grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub> initrd /boot/initrd.img-3.13.0-29-genericgrub> boot
La primera línea establece la partición en la que se encuentra el sistema de archivos raíz. La segunda línea indica a GRUB la ubicación del núcleo que desea utilizar. Comience a escribir /boot/vmli
y, a continuación, use el relleno de pestañas para completar el resto. Escriba root=/dev/sdX
para establecer la ubicación del sistema de archivos raíz. Sí, esto parece redundante, pero si lo omites, te dará pánico el kernel. ¿Cómo sabe la partición correcta? hd0,1 = / dev / sda1. hd1,1 = / dev / sdb1. hd3,2 = / dev / sdd2. Creo que puedes extrapolar el resto.
La tercera línea establece el archivo initrd
, que debe tener el mismo número de versión que el núcleo.
La cuarta línea arranca su sistema.
En algunos sistemas Linux, los núcleos e iniciadores actuales están enlazados simbólicamente al nivel superior del sistema de archivos raíz:
$ ls -l /vmlinuz -> boot/vmlinuz-3.13.0-29-genericinitrd.img -> boot/initrd.img-3.13.0-29-generic
Para que pueda arrancar desde grub>
de la siguiente manera:
grub> set root=(hd0,1)grub> linux /vmlinuz root=/dev/sda1grub> initrd /initrd.imggrub> boot
Arrancar Desde grub-rescue>
Si estás en el shell de GRUB rescue los comandos son diferentes, y tienes que cargar el normal.mod
y:
grub rescue> set prefix=(hd0,1)/boot/grubgrub rescue> set root=(hd0,1)grub rescue> insmod normalgrub rescue> normalgrub rescue> insmod linuxgrub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub rescue> initrd /boot/initrd.img-3.13.0-29-genericgrub rescue> boot
La finalización de la pestaña debería comenzar a funcionar después de cargar ambos módulos.
Hacer reparaciones permanentes
Cuando haya arrancado correctamente su sistema, ejecute estos comandos para reparar GRUB de forma permanente:
# update-grubGenerating grub configuration file ...Found background: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound background image: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound linux image: /boot/vmlinuz-3.13.0-29-genericFound initrd image: /boot/initrd.img-3.13.0-29-genericFound linux image: /boot/vmlinuz-3.13.0-27-genericFound initrd image: /boot/initrd.img-3.13.0-27-genericFound linux image: /boot/vmlinuz-3.13.0-24-genericFound initrd image: /boot/initrd.img-3.13.0-24-genericFound memtest86+ image: /boot/memtest86+.elfFound memtest86+ image: /boot/memtest86+.bindone# grub-install /dev/sdaInstalling for i386-pc platform.Installation finished. No error reported.
Cuando ejecute grub-install
recuerde que lo está instalando en el sector de arranque de su disco duro y no en una partición, por lo que no use un número de partición como /dev/sda1
.
Pero Aún Así no funciona
Si su sistema está tan desordenado que nada de esto funciona, pruebe el disco de rescate en vivo Super GRUB2. El Manual oficial de GNU GRUB 2.00 también debería ser útil.