En los discos duros particionados con tabla de particiones estilo BIOS, se reserva un espacio para el MBR (Master Boot Record) o Sector de Arranque. Esta es la estructura básica, sobre el espacio restante se hacen las particiones, y en ellas se puede o no instalar un SO (Sistema Operativo).
Cada SO tiene su gestor de arranque, así que cuando instalamos un SO, en el proceso de instalación se modifica el MBR del disco para que pueda arrancar el SO que hay instalado en la partición x.
En el caso de Windows, ese sector de arranque, solo permite arrancar Windows, sin embargo Linux, utiliza gestores de arranque que permiten arrancar otros SO’s instalados en el disco, gestores de arranque como LiLo o Grub.
Como grub es un cargador de arranque, veremos que pasa desde que encendemos el ordenador:
Primero la BIOS, enlaza a un dispositivo de arranque, como el HDD o CD-ROM, en el caso de HDD, se le pasa el control al MBR del Disco.
En el MBR se encuentra la Fase 1 del GRUB, ya que el MBR solo tiene 512 bytes de espacio. La fase 1 carga la siguiente fase del GRUB, que puede encontrarse en cualquier parte del disco duro.
De la fase 1 se puede pasar a la 1.5 o a la fase 2, de todos modos la 1.5 pasa a la 2, así que obviaremos detalles en esto.
La fase 2, que es la que contiene el menú, lo muestra, y una vez el usuario elige la opción, Grub carga el kernel elegido
De modo que Grub se instala en dos partes, primero en el MBR como ya hemos dicho, y después en el disco, bien en una partición /boot o bien en la partición / de la distribución linux principal.
En cualquier caso Grub, una vez instalado se encuentra en /boot , y ahí tiene su archivo de configuración, donde podemos configurar las opciones de arranque.
Como arranca Linux
Para arrancar un SO Linux los pasos son los siguientes:
Decirle a Grub la partición en la que se encuentra instalado el SO Linux
Iniciar el kernel
Un ejemplo de como cargar un SO Linux, sería el siguiente:
root (hd0,1)
kernel /vmlinuz root=/dev/hda2 ro
Para arrancar un SO Windows seguimos estos pasos:
Decirle a Grub la partición en la que se encuentra instalado
Hacer la partición Activa
Llamara al cargador de arranque Windows
El ejemplo de como cargar un SO Windows, es este:
root (hd0,0)
makeactive
chainloader +1
El archivo de configuración para Grub es el menu.lst, que se encuentra en /boot/grub/.
En este archivo debemos de poner las entradas del menú de Grub, con sus opciones de arranque correspondiente, además de algunos valores generales.
Los Discos Duros se enumeran desde 0, y las particiones también se enumeran desde 0. Así por ejemplo para la primera partición del primer disco escribiríamos (hd0,0)
Ejemplo de /boot/grub/menu.lst:
# Configuration General timeout 5 default 1 color light-blue/black light-cyan/blue # Entradas del menú # (0) Arch Linux title Arch Linux root (hd0,1) kernel /boot/vmlinuz26 root=/dev/sda2 ro vga=773 initrd /boot/kernel26.img # (1) Windows XP title Windows XP rootnoverify (hd0,0) makeactive chainloader +1
El archivo de configuración para Grub2 es el grub.cfg, que se encuentra en /boot/grub/ .
En el archivo debemos de poner las entradas del menú de Grub2, con sus opciones de arranque correspondientes, además de algunos valores generales.
Los Discos Duros se enumeran desde 0, sin embargo lasparticiones se enumeran desde 1. Así por ejemplo para la primera partición del primer disco escribiríamos (hd0,1)
Ejemplo de /boot/grub/gurb.cfg:
# Configuration General set timeout=5 set default=0 # (0) Arch Linux menuentry "Arch Linux" { set root=(hd0,2) linux /vmlinuz26 root=/dev/sda2 ro initrd /kernel26.img } # (1) Windows menuentry "Windows" { set root=(hd0,1) chainloader +1 }
A veces no es posible prescindir de Windows, bien por los juegos o por trabajo, pero no todo se puede hacer en Linux. Pero en Windows es necesario un formateo cada cierto tiempo. Al formatear Windows, el MBR se reescribe para este, perdiendo Grub en 99% de los casos.
La solución es reinstalar grub, para lo que tendremos que arrancar desde alguna distribución live:
PartedMagic: Es una distribución Live, ideada para trabajar con particiones.
GParted Live: Es otra distribución Live, ideada para trabajar con particiones.
Arch Linux: Es el CD de Instalación de Arch Linux, pero arranca una consola desde la que podemos trabajar igual.
Debian: Igual que Arch, es el CD de Instalación de Debian, arranca una consola desde la que podemos reinstalar grub.
Además prácticamente podemos reinstalar grub desde cualquier CD Linux. Veamos como reinstalar el Grub.
Ejecutamos el interprete de comandos de grub:
grub
Indicamos la localización de la partición donde se encuentra Grub:
root (hdX,Y)
Instalamos grub en el MBR del Disco.
setup (hdX)
Salimos y reiniciamos, ya está grub reinstalado.
quit
Este error puede darse tanto en Grub como en Grub 2. Suele darse cuando las ordenes escritas en el menu.lst o en el grub.cfg no son correctas. En particular cuando no hemos escrito correctamente el número de disco o partición.
En lugar del menú, aparece el mensaje de debajo.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[Minimal BASH-like line editing is supported. For the first
word, TAB list possible command completions. Anywhere else TAB lists
the possible completitions of a device/filename. ]
grub>
La respuesta es clara, primero pulsamos TAB, así vemos los posibles comandos a ejecutar. Entre ellos se encuentra cat, con lo que es fácil ver el archivo menu.lst o grub.cfg.
cat /boot/grub/menu.lst
cat /boot/grub/grub.cfg
Con esto podemos ver las ordenes necesarias para el arranque, que en el caso de Linux son root y kernel . En realidad este paso no es necesario si sabes lo que hay que poner. El cat es solo para orientarse/recordar comandos.
Una vez vistos basta con escribir los comandos y arrancar el SO Linux, y una vez hecho lo primero es modificar el archivo de configuración, para no volver a obtener este error.
Además de los anteriores hay otros errores numerados. El arranque de Grub se divide en dos etapas, Stage 1 y Stage 2 cada una de ellas tiene sus mensajes de error. Listaremos los errores en función de la etapa en la que aparecen:
En esta etapa tan solo se muestra el error y se detiene el sistema:
Hard Disk Error: No se puede averiguar la geometría ni el tamaño del disco.
Floppy Error: El error es el mismo que el anterior, pero se refiere a un Diskette.
Read Error: Error de lectura al intentar pasar a la segunda etapa (stage 2).
Geom Error: La ubicación en disco del Stage 2 no es accesible mediante llamadas BIOS. Este error suele deberse a modificaciones en la configuración del disco, ya sea modificar la tabla de particiones o cmabiar el disco de máquina.
Filename must be either an absolute filename or blocklist: El fichero solicitado por grub, no cumple la sintaxis exigida.
Bad file or directory type: El fichero solicitado por grub, no es un archivo regular sino un enlace simbólico, directorio o pipe (tubería).
Bad or corrupt data while decompressing file: Este error aparece cuando la descompresión devuelve un error. Suele tratarse de un fichero dañado.
Bad or incompatible header in compressed file: La cabecera de un fichero comprimido es incorrecta.
Partition table invalid or corrupt: Este error aparece cuando la verificación de la tabla de particiones falla. A este error hay que temerle.
Mismatched or corrupt version of stage1/stage2: Este error se debe a versiones incompatibles o dañadas de stage1 o stage2.
Loading below 1MB is not supported: Aparece cuando la dirección más baja de un núcleo está por debajo de la cota de 1MB. El formato zImage de Linux es un caso especial, se puede manejar ya que su dirección de carga es fija y tiene un tamaño máximo.
Kernel must be loaded before booting: Si le indicamos a grub que ejecute una secuencia de arranque sin haberle indicado un núcleo antes, aparece este error.
Unknown boot failure: Razones desconocidas.
Unsupported Multiboot features requested: A veces las características Multiboot requieren una característica que no se reconoce. El kernel requiere una gestión especial que Grub no tiene.
Unrecognized device string: Se espera un nombre de dispositivo y el texto encontrado no cumple las reglas de nombres de dispositivos.
Invalid device requested: El nombre de dispositivo es válido pero tiene un error en otro sitio.
Invalid or unsupported executable format: La imagen del núcleo no se reconoce como multiboot o alguno de los formatos reconocidos.
Filesystem compatibility error, cannot read whole file: Algún Sistema de Archivos de los que tiene que leer Grub, tiene una limitación en el tamaño de lectura. Se corrige eliminando dicho límite.
File not found: No se encuentra el archivo solicitado, pero la ruta es correcta.
Inconsistent filesystem structure: Error en la estructura del sistema de archivos. Suele deberse a un Sistema de Archivos dañado
Cannot mount selected partition: La partición existe, pero Grub no la reconoce.
Selected cylinder exceeds maximum supported by BIOS: La lectura intenta ir más allá del área direccionada por la BIOS. El error aparece cuando se intentan leer bloques lineales. Suele aparecer en discos IDE de gran tamaño.
Linux kernel must be loaded before initrd: El error se debe a que hemos puesto initrd antes que kernel.
Multiboot kernel must be loaded before modules: El error se debe a que hemos cargado módulos antes de cargar un núcleo Multiboot.
Selected disk does not exist: El disco refereido no está presente o no se reconoce por la BIOS.
No such partition: No existe la partición específica.
Error while parsing number: Grub espera leer un número y encuentra datos incorrectos.
Attempt to access block outside partition: La dirección lineal del bloque está fuera de la partición. Se debe a daños en el sistema de Archivos o a algún bug detectado por Grub.
Disk read error: Se ha producido un error de lectura en el disco.
Too many symbolic links: Demasiados enlaces simbólicos. El máximo son 5. Puede ser que los enlaces tengan un bucle.
Unrecognized command: Cuando introducimos un nombre de orden no reconocido por Grub. Puede tratarse de un error al escribir.
Selected item cannot fit into memory: Aparece cuando tratamos de cargar en memoria algo que no cabe.
Disk write error: Este error se produce cuando grub intenta escribir en disco. Esto solo puede ocurrir durante la instalación o con la orden makeactive.
Invalid argument: Algún argumento de alguna orden es incorrecto.
File is not sector aligned: Cuando se accede a una partición ReiserFS. Se debe montar la partición con la opción ‘notail’.
Must be authenticated: Se trata de acceder a un arranque protegido por contraseña. Hay que introducir una contraseña válida.
Serial device not configured: Se intenta cmabiar el terminal a uno serie, pero no se ha activado ningún dispositivo serie.
No spare sectors on the disk: Cuando no queda espacio libre. Si se intenta entrar en los sectores no usados tras el MBR, pero la partición primera empieza justo después del MBR.