Archivo

Archive for 13 febrero 2013

GRUB

Extraído de http://tuxjm.net/docs/grub-howto.txt

Nomenclatura de dispositivos en GRUB

GRUB usa los dispositivos de una manera peculiar para especificar el dispositivo/partición que usará. Se compone de dos siglas indicando el tipo de dispositivo:

  • fd, para floppys
  • hd, para hardisks

Seguidas de un número que indicará el número de orden de la unidad en tu hardware, contando desde 0, separadas por una coma. En el caso de los discos duros (hd) habrá otro número que indicará la partición a la que se quiere acceder, también contando desde 0. Todo ello encerrado entre paréntesis ().

Algunos ejemplos de esta nomenclatura son:

(fd0)

  • Aqui se accederá a la primera unidad floppy (conectada en la primera controladora) en su totalidad, puesto que no tiene particiones.

(hd0,1)

  • Aquí­ se accederá al primer disco duro, pero a su segunda partición.

(hd0,5)

  • Este ejemplo especifica la primera partición lógica de una extendida del primer disco duro. Notar que los números de las particiones extendidas son contadas a partir de la cuarta, ya que solo puede haber 4 primarias en un disco duro.

La siguiente tabla es una muestra de la conversión de la nomenclatura para dispositivos de Linux a la de GRUB:

  • /dev/hda1 = (hd0,0)
  • /dev/hda2 = (hd0,1)
  • /dev/hda3 = (hd0,2)
  • /dev/hdb1 = (hd1,0)
  • /dev/hdb2 = (hd1,1)
  • /dev/hdb3 = (hd1,2)

Funcionamiento de GRUB

GRUB funciona en 2 stages o etapas que son cargados de la siguiente manera:

  1. Stage 1, es el arrancador primario, es cargado en memoria por la BIOS, este ocupa menos de 512 bytes y se instala en el MBR, lo único que hace este stage es cargar el stage 2.
  2. Stage 2 o arrancador secundario, es el que muestra el menú de GRUB con su línea de comandos. En esta interfaz es donde puedes seleccionar las diferentes opciones de arranque del equipo (SOs, Kernels, etc). Además mediante la línea de comandos puedes pasar otro tipo de argumentos a la opción elegida, o ejecutar otros comando GRUB (ver mas adelante)
    Los archivos stage se encuentran en /usr/lib/grub/i386-pc/ y deben copiarse al directorio o partición /boot (según hayamos configurado las particiones).

Línea de comandos de GRUB

Una vez instalado GRUB (ver más adelante), debemos saber que éste trabaja por línea de comandos a la cual se accede mediante:

/usr/sbin/grub

Presentando el prompt de GRUB:

grub>

Aquí es donde tu puedes teclear los comandos de GRUB (puedes teclear ‘help’ para ver una lista de comandos soportados) y donde se usa la nomenclatura de dispositivos. Ésta interfaz tiene soporte para auto completar tanto para comandos como para dispositivos para ayudar a encontrar el comando o dispositivo que buscas.

Algunos comandos de GRUB:

root (dispositivo)

Le dice a GRUB la localización de la partición boot

setup (dispositivo)

Le dice a GRUB donde instalar el arrancador primario (stage 1) para buscar el stage1 y stage2 donde haya indicado el comando root().

(dispostivo)/vmlinuz

Indica a GRUB donde encuentra un archivo específico, un kernel en este caso.

displaymem

Muestra la cantidad de memoria disponible.

Instalar GRUB

Hay que diferenciar entre el paquete GRUB e instarlo como gestor de arranque. Lo primero dependerá de cada SO (apt-get grub, en caso de Debian y derivados). La segunda opción es instalar el gestor de arranque en el MBR del disco:

grub> root (hd0,2)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if “/boot/grub/stage1” exists… yes
Checking if “/boot/grub/stage2” exists… yes
Checking if “/boot/grub/e2fs_stage1_5” exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd0)”… 17 sectors are embedded. succeeded
Running “install /boot/grub/stage1 (hd0) (hd0)1+17 p(hd0,2)/boot/grub/stage2 /boot/grub/menu.lst”… succeeded
Done.
grub>

Explicación:
Indicamos donde está el directorio /boot con root (hd0,2) y luego con setup (hd0) donde instalar el stage1. Con esto buscará los archivos stage (stage1 y stage2) en (hd0,2) en este caso.

Configurar GRUB

Una vez más hay que diferenciar entre GRUB v1 y GRUB v2.

GRUB v1

Con esto ya deberías de tener correctamente instalado GRUB en tu MBR, lo que sigue es configurar el archivo de configuración de GRUB /boot/grub/menu.lst . Puedes bajar un archivo de configuración de ejemplo de: Aqui y copiarlo a /boot/grub con el nombre menu.lst. Éste archivo trae algunas configuraciones básicas, y trae secciones para arrancar el sistema default de Slackware y el sistema Windows XP Pro. Te aconsejo que copies este archivo para que puedas trabajar con él modificándolo a tus necesidades.

NOTA: si haces alguna modificación a este archivo no será necesario volver a ejecutar GRUB para que tome los cambios.

GRUB v2

extraído de: http://linuxenandalu.blogspot.com.es/2013/01/editar-el-menu-de-arranque-grub2.html

La configuración general de GRUB v2 se encuentra en /etc/default/grub.
OJO  que no tiene que ver con las entradas del menú.

El contenido de este archivo es el siguiente:

GRUB_DEFAULT= 0 –> Con la opción 0 hacemos que se seleccione por defecto la primera entrada (sistema).  Si en cambio ponemos “saved”, hacemos que siempre se seleccione el último sistema al que se accedió.
#GRUB_HIDDEN_TIMEOUT=0 –> Si descomentamos esta línea se ocultará el menú de entradas del GRUB. Si ponemos un tiempo mas alto lo que hace es esconder el menú, pero esperarse un tiempo hasta continuar.
GRUB_HIDDEN_MENU_QUIET=true/false –> Si está a “true” oculta la cuenta atrás , mientras que si está a “false” muestra la cuenta atrás (aparecerá en la zona inferior de la pantalla).
GRUB_TIMEOUT=90 –>  Esta línea indica el tiempo para la cuenta atrás (en segundos) hasta iniciar el sistema que tenemos como DEFAULT.
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash acpi_osi=Linux” –> esta línea se usa para pasarle parámetros al kernel:

  • la opción quiet agrupa las entradas iguales,
  • splash, tras elegir el sistema, se muestra la imagen de carga en vez de los mensajes del kernel
  • acpi_osi=Linux puede arreglar varios problemas de hardware en nuestro sistema Linux, como por ejemplo el brillo, tal y como explico en este otro post.

#GRUB_GFXMODE=640×480 –> Esta línea permite cambiar la resolución del GRUB.  Para conocer las resoluciones soportadas por nuestra tarjeta gráfica debemos poner vbeinfo en la línea de comandos del GRUB (pulsar c para acceder a ella).
#GRUB_DISABLE_LINUX_RECOVERY=”true” –> Al descomentar esta línea, no aparezcerá la opción de recovery mode de los sistemas Linux en el menú.

SIEMPRE QUE MODIFIQUEMOS alguna línea de esta configuración o alguna entrada del menú, será necesario que actualicemos el GRUB:
sudo update-grub && sudo update-grub2
Si hacemos cualquier cambio relacionado con las entradas del menú (número de entradas, nombre de estas…)  podemos probar como aparecerían en nuestro GRUB con el siguiente comando: (además es útil como ejemp`lo de CLI) :
sudo cat /boot/grub/grub.cfg | grep "menuentry" | cut -d "" -f 2

Con respecto a las entradas están definidas en ficheros ubicados en /etc/grub.d donde se leerán SOLO aquellos que tengan permisos de ejecución (chmod +x) y los nombre de estos ficheros indican su orden de lectura y posición dentro del GRUB. Podemos diferenciar varios tipos:

  • Las entradas del propio sistema operativo (distintos kernels, modo recovery…) cuya configuración la encontramos en /etc/grub.d/10_linux. Por defecto el grub escaneará la carpeta /boot para extraer todos los kernels instalados a incluir dentro del menú. Para evitar tener tantos kernels podemos desinstalarlos o moverlos a una subcarpeta.
  • Una entrada específica para Memtest86 (una pequeña utilidad para comprobar la memoria) /etc/grub.d/20_memtest86+.
  • La de otros sistemas cuya configuración se encuentra en /etc/grub.d/30_os-prober 

 

Para cambiar de alguna entrada del propio sistema operativo, editaremos /etc/grub.d/10_linux donde las líneas que nos interesan son:

title=”$(gettext_quoted “%s, with Linux %s (recovery mode)”)” 
title=”$(gettext_quoted “%s, with Linux %s”)” 

las cuales establecen el formato de la línea de entrada del menú. Cada %s corresponde a una cadena.

printf “menuentry ‘${title}’ ${CLASS} {\n” “${os}” “${version}”

Esta línea es la que imprime la entrada del menú correspondiendo “${os}” a la primera cadena (%s) y “${version}” a la segunda.

Para cambiar alguna entrada de otro sistema operativo (Windows), editaremos /etc/grub.d/30_os-prober 

Este archivo usa una estructura parecida al anterior un menuentry con cadenas definidas en otro lugar. El menuentry será:

menuentry “${LONGNAME} (on ${DEVICE})” –class windows –class os

Longname, corresponde al nombre del sistema operativo y device al disco/partición donde se encuentra. Para cambiar el nombre del sistema operativo buscamos:

<span style="line-height: 1.5;">if [ -z "${LONGNAME}" ] ; then</span>

    LONGNAME="${LABEL}"
  fi

y lo cambiamos por:

if [ "${LONGNAME}" = "Nombre literal que aparece en la entrada actual" ] ; then
   LONGNAME="Nuevo nombre para la entrada"
elif [ -z "${LONGNAME}" ] ; then
   LONGNAME="${LABEL}"
fi

También podemos personalizar GRUBv1 y GRUBv2 con una imagen de fondo, a diferencia del menú de arranque de Windows (MBR). Las dimensiones de la imagen deben ser las configuradas en GRUB_GFXMODE (/etc/default/grub) y en formato png o jpg y además el fichero ha de llamarse desktop-grub y encontrarse en /boot/grub.

Anuncios
Categorías:Linux, Sistemas Operativos