# rm-rf.es

Arrancar Linux manualmente desde Grub (configuración de Grub borrada o incorrecta)

Existe la posibilidad de que llegue un día, arranquemos uno de nuestros sistemas GNU/Linux y en el momento en el que deberíamos visualizar el menú de Grub con los sistemas y Kernel disponibles para arrancar nos encontremos con esto:

grub>

Antes de entrar en modo pánico debemos tener unas nociones básicas que nos permiten arrancar un sistema manualmente desde Grub cuando su fichero de configuración ha sido borrado o está vacío/incorrecto. Básicamente se trata de construir y ejecutar manualmente las líneas que componen cada entrada en el fichero grub.conf o menu.lst. El siguiente ejemplo práctico ha sido realizado sobre un sistema CentOS (RHEL, Fedora, etc) con el fichero /etc/grub.conf | /boot/grub/grub.conf eliminado.

Bien, para arrancar el sistema de forma correcta tenemos que establecer una secuencia de tres comandos en la que especifiquemos lo siguiente:

Partición que contiene el kernel

Una vez que estemos en la shell de Grub, si ejecutamos el comando root a secas nos dirá la partición en la cual se encuentra el/los kernel (podéis usar [TAB] para ver los comandos disponibles:

grub> root
 (hd0,0): Filesystem type is ext2fs, partition type 0x83

Ya sabemos que la partición que contiene el kernel, imágenes initrd y demás es la (hd0,0), podemos navegar por ella usando el comando find y haciendo uso de la tabulación para el auto-completado de nombres, lo verificamos:

grub> find (hd0,0)/ <- presionad [TAB]
 Possible files are: lost+found grub efi initramfs-2.6... vmlinux-2.6.....

Una vez verificado ejecutamos el siguiente comando (normalmente no es necesario ya que como vemos anteriormente lo detecta automáticamente):

grub> root (hd0,0)

Especificar el kernel y ruta al filesystem

grub> kernel /vmlinuz-2.6.32-71.el6.i686  ro root=/dev/sda1

Ya sabemos que el kernel está en /vml* así que lo especificamos como veis en la línea superior, usad el auto completado con [TAB] para no tener que escribir todo el nombre. Especificamos que en primera instancia se tiene que arrancar en modo lectura (ro) y finalmente la ruta a la partición root de nuestro sistema (dev/sda1). La partición root es la que contiene /sbin/init, también se puede especificar mediante el UUID. Si no sabemos cual es podemos localizarla con el siguiente comando:

grub> find /sbin/init
 (hd0,1)

(hd0,1)=/dev/sda2

Otra forma sería consultando el fichero fstab:

grub> cat (hd0,1)/etc/fstab

Ubicación del Initial RAM disk

El RAM disk se encuentra en la misma ruta/partición que el kernel:

grub> initrd /initramfs-2.6.32-71.el6.i686.img

Secuencia completa para arrancar el sistema

Haciendo un resumen y añadiendo el último comando para arrancar el sistema (boot) quedaría así:

grub> root (hd0,0)
grub> kernel /vmlinuz-2.6.32-71.el6.i686  ro root=/dev/sda1
grub> initrd /initramfs-2.6.32-71.el6.i686.img
grub> boot

Si todo va bien, debería arrancar sin problemas el sistema. Una vez dentro podréis restaurar el Grub con tranquilidad.

Salir de la versión móvil