sábado, 8 de marzo de 2014

Grub

Definicion :  


Técnicamente, un gestor de arranque múltiple es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera en los primeros 8 KB del archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores (flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen ejecutable.




Actualmente, soporta los siguientes sistemas de archivos:

Unidades de disco en grub

grub describe los discos duros como (hd0), (hd1), (hd2) y así sucesivamente. grub no hace distinciones entre discos SCSI e IDE. El primer disco que reconoce el BIOS será (hd0), el segundo (hd1), etc. Todas estas anteiores denominaciones hacen referencia al disco duro completo. De la misma forma comienza a numerar las particiones desde cero; así (hd0,0) indica la primera partición del primer disco duro.



grub en el disco duro

Antes de instalar en el disco duro deberemos aseguranos que el disquete de arranque creado funciona correctamente.
Una vez que nos hemos asegurado que no vamos a perder el arranque ejecutamos:
# /sbin/grub-install --root-directory=/boot /dev/hda
            
con lo cual estamos reescribiendo el MBR (Master Boot Record) de /dev/hda. En este caso suponemos que /boot está instalado en una partición independiente.
Si /boot es un directorio más de la partición raíz del sistema, tendremos que poner:
# grub-install /dev/hda
Cuando arrancamos nos debe aparecer lo mismo que cuando iniciamos desde el disquete. El proceso posterior es idéntico: tenemos que introducir las órdenes a mano.

Reinstalar grub en el disco duro

Por alguna circunstacia puede que se haya deteriorado el arranque de grub, por ejemplo si hemos alterado las particiones del disco o hemos instalado otro sistema operativo.
Si arrancamos el sistema con un disco de rescate, por ejemplo, el de Fedora, montará el sistema Linux del disco duro bajo /mnt/sysimage. Si arrancamos con alguna distribución en un cd autónomo, también podemos montar el sistema instalado en disco en /mnt/sysimage.
Entonces ejecutamos:
# chroot /mnt/sysimage
              
# grub-install /dev/hda
Otra posibilidad es arrancar con un cd autónomo, abrir una shell de grub y reinstalarlo en disco desde allí:
Primero buscamos la partición raíz de grub, que puede estár en la partición raíz del sistema o en una partición independiente y a continuación instalamos grub. A continuación un ejemplo de la secuencia de órdenes que tendríamos que realizar:
# grub
    GNU GRUB  version 0.94  (640K lower / 3072K upper memory)
 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> find /boot/grub/stage1
Error 15: File not found
grub> find /grub/stage1
 (hd0,0)
grub> root (hd0,0)
grub > setup(hd0)
              
y habríamos instalado GRUB en el MBR.
Si quisiéramos intalarlo en una partición ejecutaríamos, por ejemplo:
grub> setup (hd0,0)
              
pero teniendo en cuenta que este arranque habría que enlazarlo con otro previo.















grub en un disquete

Instalación

Es aconsejable disponer de un disquete de arranque para poder iniciar el sistema en caso de fallo en el arranque por una instalación defectuosa en el disco duro o por que otro sistema operativo borre el gestor de arranque durante su instalación.
Para instalar grub en el disquete lo introducimos en la unidad y ejecutamos, como root:
# mkfs -t ext3 /dev/fd0
# mount -t ext3 /dev/fd0 /mnt/floppy
# grub-install --root-directory=/mnt/floppy  fd0
# umount /mnt
              
O también volcando directamente los ficheros:
# dd if=/ruta-acceso/stage1 of=/dev/fd0 count=1      
# dd if=/usr/ruta-aceso/stage2 of=/dev/fd0 seek=1
              
bien
# cat /ruta-acceso/grub/stage{1,2} >> /dev/fd0
              




Arranque

Para poder arrancar linux con un disquete grub necesitaremos conocer algunos datos, en particular donde está el núcleo y cuale son las particiones de arranque de los distintos sistemas.
Suponiendo que tenemos instalado Linux en /dev/hda3 como partición raíz y Windows en /dev/hda1.
Arrancamos el sistema desde el disquete y nos debe aparecer el indicador:
grub>
              
lo que quiere decir que grub está esperando nuestra órdenes.
Para iniciar Linux suponiendo que /boot está en una partición independiente (por ejemplo /dev/hda2) tecleamos:
   grub> root (hd0,1)      
    grub> kernel /vmlinuz-2.4.20-18-8 root=/dev/hda3
    grub> initrd /initrd-2.4.20-18-8.img
    grub> boot
              
es decir todas las rutas de acceso a ficheros son relativas a la partición /boot.
Primero indiacamos cual es la partición correspondiente a /boot, que si en nuestro caso es /dev/hda2, entonces en notación "grub" será (hd0,1).
En segundo lugar indicamos el fichero que contiene el núcleo y a continuación le pasamos los parámetros necesarios. En particular root=/dev/hda3 indica cual es la partición raíz del sistema operativo.
Por último boot inicia la carga del sistema.
Si no tuviéramos una partición independiente para /boot, si tuviéramos /boot como un directorio de l patición raíz, entonces deberíamos poner:
   grub> root (hd0,2)      
    grub> kernel /boot/vmlinuz-2.4.20-18-8 root=/dev/hda3      
    grub> initrd /boot/initrd-2.4.20-18-8.img      
    grub> boot
              
En este caso la partición raíz de grub y la partición raíz del sistema coinciden y en el ejemplo es /dev/hda3 o bien (hd0,2).
Ahora la ruta al fichero que contiene el núcleo debe incluir el directorio /boot, que ya no es una partición independiente. Igual para con initrd.
Como antes, una vez escritos los parámetros procedemos a la carga con boot.
Para arrancar Windows:
    grub> root (hd0,0)      
     grub> makeactive      
     grub> chainloader +1      
     grub> boot
              
Para evitar errores al teclear podemos usar el tabulador para completar las órdenes que tenemos que introducir.
Hay que tener en cuenta que el teclado que utiliza grub es el US, por lo que puede que la distribución de las teclas tengan algunas diferencias sobre lo que refleja el teclado.




Automatización del arranque

Para no tener que introducir la órdenes a mano cada vez que queremos arrancar el sistema editaremos el fichero/boot/grub/grub.conf o menu.lst, esto depende de la denominación que le dé el sistema al fichero de configuración. Hay que tener en cuenta que el fichero tiene que estar en la partición /boot que es la única inicialmente accesible por grub y dónde espera encontrarlo.
Hay una partición /boot. Esto significa que todas las rutas de núcleo e initrd son relativas a /boot/, root (hd0,1).
En /boot/grub/grub.conf o menu.lst escribimos:
default=0
timeout=10
splashimage=(hd0,1)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
        root (hd0,1)
        kernel /vmlinuz-2.4.18-14 ro root=/dev/hda3
        initrd /initrd-2.4.18-14.img
title Windows 98
        rootnoverify (hd0,0)
        chainloader +1
            
Si /boot está en la partición raíz del sistema (/dev/hda3) entonces tendríamos:
default=0
timeout=10
splashimage=/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
        root (hd0,2)
        kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda3
        initrd /boot/initrd-2.4.18-14.img
title Windows 98
        rootnoverify (hd0,0)
        chainloader +1
            
No es necesario ejecutar grub cada vez que realicemos una modificación de este fichero.
El significado de las línea lo podemos ver en:
  • default=0 indica que el sistema predeterminado que se carga el el primero.
  • timeout=10 deja un margen de 10 segundos para seleccionar un sistema antes de cargar el predeterminado
  • splashimage indica la imagen que se muestra en la pantalla de inicio.
  • title indica el texto que aparece en el menú de pantalla.
  • root indica qué partición contiene el núcleo linux y puede ser o no la partición raíz del sistema (/). Así root (hd0,0) indica a grub que el núcleo se encuentra en la primera partición del primer disco duro (/dev/hda).
  • kernel se utiliza para indicar las carcterísticas de carga del núcleo. Incluye el fichero del núcleo, la partición raíz del sistema y en general los parámetros que queremos pasarle al núcleo.
  • initrd indica donde se localiza la imagen del disco de memoria.
  • map map permite modificar la asignación de particiones.
  • rootnoverify indica a grub que arranque la partición de Windows pero sin intentar montarla.
  • chainloader +1 indica a grub que encadene el cargador propio de otro sistema operativo.



Mensajes de error de grub

El arranque de grub se divide en dos etapas, Stage 1 y Stage 2 y cada una de ellas tiene sus mensajes de error.
En general, los errores en Stage 1 se limitan a mostrar un error y detener el sistema.
Los errores en Stage 2 interrumpen la operación, muestran un mensaje y si es posible continúa con la operación, por ejemplo solicitanmdo al usuario que lo corrija.

Hard Disk Error

El intento de lectura del disco no permite averiguar su geometría y su tamaño.

Floppy Error

Es el mismo error anterior, pero se indica de forma separada por el orden de comprobación.

Read Error

Error de lectura al intentar leer stage2.

Geom Error

La ubicación en disco de stage2 no está en la parte del disco accesible mediatne llamadas al BIOS. Puede deberse a que hayamos modificado la configuración del disco, o que hayamos cambiado el disco de máquina o que grub no esté bien instalado.

1 : Filename must be either an absolute filename or blocklist

Este error se origina cuando un nombre de fichero solicitado por grub no verifica la sintaxis adecuada.

2 : Bad file or directory type

Este error se origina cuando un fichero soliciatado por grub no es un fichero regular sino un enlace simbólico, un directorio o una tubería con nombre.

3 : Bad or corrupt data while decompressing file

Este error se origina cuando el código de descompresión devuelve un error. Normalmente se trata de un fichero dañado.

4 : Bad or incompatible header in compressed file

Este error se origina cuando laa cabecera de un fichero comprimido es incorrecta

5 : Partition table invalid or corrupt

Este error se origina cuando verificación del estado de la tabla de particiones falla. Es un mal síntoma.

6 : Mismatched or corrupt version of stage1/stage2

Este error se origina cuando ela orden de instalación apunta a versiones incompatibles o dañadas de stage1 o stage2. En general no puede detectar los daños y en este caso sólo se trata de los números de versión.

7 : Loading below 1MB is not supported

Este error se origina 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 y se puede manejar ya que tiene una dirección de carga fija y tamaño máximo.

8 : Kernel must be loaded before booting

Este error se origina si le decimos a GRUB que ejecute una secuencia de arranque sin haber indicado un núcleo.

9 : Unknown boot failure

Este error se origina por razones desconocidas.

10 : Unsupported Multiboot features requested

Este error se origina cuando las características Multiboot requieren una característica que no se reconoce. El núcleo requiere una gestión especial que GRUB probablemente no tiene.

11 : Unrecognized device string

Este error se origina cuando se espera un nombre de dispositivo y el texto encontrado no cumple las reglas de nombres de dispositivos.

12 : Invalid device requested

Este error se origina cuando un nombre dispositivo es válido y tiene un error no contemplado en otro error.

13 : Invalid or unsupported executable format

Este error se origina cuando la imagen del núcleo cargada no se reconoce como Multiboot o alguno de los formatos nativos admitidos : Linux zImage o bzImage, FreeBSD o NetBSD.

14 : Filesystem compatibility error, cannot read whole file

Alguno de los sistema de fichero que tiene que leer GRUB tiene limitado el tamaño de lectura de ficheros. Se corrige eliminado el límite.

15 : File not found

Este error se origina cuando uno se puede encontrar un fichero solicitado, pero la ruta de acceso es correcta.

16 : Inconsistent filesystem structure

Este error lo devuelve el sistemade ficheros para indicar un error interno debido al estado de la estructrua del sistema de ficheros que no encaja con lo previsto. Puede deberse a un sitema de ficheros dañado o algún bug de GRUB para manejar ese sistema de ficheros

17 : Cannot mount selected partition

Este error se origina cuando una partición existe pero GRUB no la reconoce.

18 : Selected cylinder exceeds maximum supported by BIOS

Este error se origina cuando una lectura intenta ir más alla del área direccionada por el BIOS. Este error se origina cuando se trata de leer bloques lineales. Este problema lo podemos encontrar en dicos (E)IDE mayores 512MB o de 8GB en máquinas antiguas.

19 : Linux kernel must be loaded before initrd

Este error se origina cuando ponemos initrd antes que kernel.

20 : Multiboot kernel must be loaded before modules

Este error se origina cuando la orden de carga de módulos se usa antes que de cargar un núcleo Multiboot. Sólo tiene sentido en este caso ya que GRUB no tiene idea de como comunicar la presencia de tales módulos a un núcleo que no sea Multiboot-aware.

21 : Selected disk does not exist

Este error se origina cuando otodo o parte un nombre de dispositivo referido a disco o dispositivo BIOS no está presente o no se reconoce por la BIOS en el sistema.

22 : No such partition

Este error se origina cuando no existe la partición especificada

23 : Error while parsing number

Este error se origina si GRUB espera leer un número y encuantra datos incorrectos.

24 : Attempt to access block outside partition

Este error se origina cuando una dirección lineal de bloque está fuera de la partición. Normalmente se debe daños en el sistema de ficheros o a algun bug detectado por GRUB.

25 : Disk read error

Se ha producido un error de lectur en el disco.

26 : Too many symbolic links

Demasiados enlaces simbólicos. El número máximo es 5.
Es posible que los enlaces tengan un bucle

27 : Unrecognized command

Este error se origina cuando introducimos un nombre de orden no reconocido por grub. Puede tratarse de un error al escribir.

28 : Selected item cannot fit into memory

Este error se origina cuando tratamos da cargar algo en memoria y no cabe.

29 : Disk write error

Error producido cuando grub trataba de escribir en disco. Normalmente sólo puede ocurrir durante la instalación o con la orden makeactive.

30 : Invalid argument

Este error se origina cuando el argumento para algunaorden es incorrecto.

31 : File is not sector aligned

Este error se origina cuando accede a una partición ReiserFS por lista de bloques (v.g. la orden `install'). En este caso debería montar la artición con la opción `notail'.

32 : Must be authenticated

Este error se origina cuando se trata de acceder a un arranque con "lock". Se debe introducir una contraseña válida.

33 : Serial device not configured

Este error se origina cuando trata de cambiar el terminal a uno serie pero no se ha activado ningún dispositivo serir

34 : No spare sectors on the disk

Este error se origina cuando no queda espacio libre. Sucede intenta introducir Stage 1.5 en los sectores no utilizados tras el MBR, pero la primera partición comienza justo tras el MBR o los está usando EZ-BIOS.






No hay comentarios:

Publicar un comentario