[Como] Configuración del Grub2 - Su reemplazo por el Grub Legacy

Imagen de Gabriel_M
11,477 puntos

En el Grub2, la configuración se almacena en el archivo /boot/grub/grub.cfg.
Este archivo es generado automáticamente por la orden

sudo update-grub 

Que se basa en los scripts almacenados en

/etc/grub.d 
y en el archivo 
/etc/default/grub

Al contrario del Grub legacy, donde se editaba el archivo /boot/grub/menu.lst
en el Grub2 su archivo /boot/grub/grub.cfg no se debe editar, los que se editan
son los archivos existentes en /etc/grub.d y el archivo /etc/default/grub

Este es un ejemplo del contenido del archivo grub.cfg, que no se debe editar.

===============================================================================
      #
      # DO NOT EDIT THIS FILE
      #
      # It is automatically generated by /usr/sbin/update-grub using templates
      # from /etc/grub.d and settings from /etc/default/grub
      #

      ### BEGIN /etc/grub.d/00_header ###
      set default=0
      set timeout=5
      set root=(hd0,5)
      search --fs-uuid --set b02e1934-12dd-418a
      if font /usr/share/grub/ascii.pff ; then
        set gfxmode=640x480
        insmod gfxterm
        insmod vbe
        terminal gfxterm
      fi
      ### END /etc/grub.d/00_header ###

      ### BEGIN /etc/grub.d/05_debian_theme ###
      set menu_color_normal=cyan/blue
      set menu_color_highlight=white/blue
      ### END /etc/grub.d/05_debian_theme ###

      ### BEGIN /etc/grub.d/10_hurd ###
      ### END /etc/grub.d/10_hurd ###

      ### BEGIN /etc/grub.d/10_linux ###
      set root=(hd0,5)
      search --fs-uuid --set b02e1934-12dd-418a-be3a-9ff7d3e7e7ea
      menuentry "Ubuntu, linux 2.6.28-13-generic" {
              linux   /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro  quiet splash vga800
              initrd  /boot/initrd.img-2.6.28-13-generic
      }
      menuentry "Ubuntu, linux 2.6.28-13-generic (single-user mode)" {
              linux   /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro single 
              initrd  /boot/initrd.img-2.6.28-13-generic
      }
      menuentry "Ubuntu, linux 2.6.28-11-generic" {
              linux   /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro  quiet splash vga800
              initrd  /boot/initrd.img-2.6.28-11-generic
      }
      menuentry "Ubuntu, linux 2.6.28-11-generic (single-user mode)" {
              linux   /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro single 
              initrd  /boot/initrd.img-2.6.28-11-generic
      }
      ### END /etc/grub.d/10_linux ###

      ### BEGIN /etc/grub.d/20_memtest86+ ###
      menuentry "Memory test (memtest86+)" {
              linux   /boot/memtest86+.bin
      }
      menuentry "Memory test (memtest86+, serial console 115200)" {
              linux   /boot/memtest86+.bin console=ttyS0,115200n8
      }
      ### END /etc/grub.d/20_memtest86+ ###

      ### BEGIN /etc/grub.d/30_os-prober ###
      menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
              set root=(hd0,1)
              chainloader +1
      }
      ### END /etc/grub.d/30_os-prober ###

      ### BEGIN /etc/grub.d/40_custom ###
      # This file is an example on how to add custom entries

      ### END /etc/grub.d/40_custom ###

      ### BEGIN /etc/grub.d/41_srcd ###
      menuentry "SystemRescue CD on hard drive" {
              set root=(hd0,10)
              linux   /sysrcd/rescuecd subdir=sysrcd setkmap=us
              initrd  /sysrcd/initram.igz
      } 
      ### END /etc/grub.d/41_srcd ###

================================================================================

Archivo grub, /etc/default/grub

Este archivo contiene la información, que antiguamente se encontraba en la primer sección
del archivo /boot/grub/menu.lst del Grub Legacy, contiene las configuraciones acerca como
se muestra el menu del Grub2 y puede ser editado con la orden

sudo nano /etc/default/grub

Luego de editado sus configuraciones se importan al archivo grub.cfg mediante la orden

sudo update-grub

Este es un contenido típico

============================================================================= 

      # If you change this file, run 'update-grub' afterwards to update
      # /boot/grub/grub.cfg.

      GRUB_DEFAULT=0
      GRUB_HIDDEN_TIMEOUT=0
      GRUB_HIDDEN_TIMEOUT_QUIET=true
      GRUB_TIMEOUT=10
      GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
      GRUB_CMDLINE_LINUX=""

      # Uncomment to disable graphical terminal (grub-pc only)
      #GRUB_TERMINAL=console

      # The resolution used on graphical terminal
      # note that you can use only modes which your graphic card supports via VBE
      # you can see them in real GRUB with the command `vbeinfo'
      #GRUB_GFXMODE=640x480

      # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
      #GRUB_DISABLE_LINUX_UUID=true

      # Uncomment to disable generation of recovery mode menu entrys
      #GRUB_DISABLE_LINUX_RECOVERY="true"
=============================================================================

Sus items corresponden a:

      GRUB_DEFAULT=0
Establece la entrada de menu por defecto, numerando los menuentry de 0 en adelante.

o
      GRUB_DEFAULT="Windows XP Professional (on /dev/sda1)"
Establece la entrada de menu por defecto, mediante el nombre del menuentry. 
          
o
       GRUB_DEFAULT=saved
Establece la entrada de menu por defecto a la seleccionada en el último inicio, si el menu se muestra
al inicio esta entrada se muestra iluminada si no se cambia la seleccion o el menu no se muestra
inicia la opción elegida en el último inicio.


      GRUB_TIMEOUT=5
Corresponde al número de segundos que se espera antes de iniciar con la entrada del menu por defecto
Si el valor es -1 el menu se muestra idefinidamente hasta que se selecciona un menu y se da enter.

      GRUB_HIDDEN_TIMEOUT=0
Oculta el menu si esta precedido por # 

     # GRUB_HIDDEN_TIMEOUT=0 
Si hay otro operativo detectado en el sistema el menu se muestra
Si no hay otro operativo detectado en el sistema el menu se oculta 
Si se usa un valor mayor de 0, el sistema espera tantos segundos, pero el menu no se muestra
Si se usa el valor 0, el sistema no espera y no se muestra su menu.
En este último caso, para ver el menu es necesario presionar la tecla Shift (mayusculas)
También puede presionarse la tecla  Esc 
Si esta activo, el splash screen establecido en el archivo /etc/grub.d/05_debian_theme se muestra

      GRUB_HIDDEN_TIMEOUT_QUIET=true
true - No muestra en contador, la pantalla esta en blanco
false - El contador se muestra durante un tiempo igual al valor establecido en GRUB_HIDDEN_TIMEOUT 
    
      GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
Establece el nombre descriptivo correspondiente menuentry de la distribución elegida. (Ubuntu, Xubuntu, Debian, etc.) 
    
      GRUB_CMDLINE_LINUX
Si existe, agrega opciones  al final de las líneas de comando linux para inicios normales y de recuperación

      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Agrega las opciones al final de la línea de comando linux solo en inicio normal
Si se deja vacía, se muestran los mensajes de inicio del sistema

      #GRUB_TERMINAL=console
Descomentada, sin #, esta opción deshabilita la terminal gráfica, solo grub-pc 
    
      #GRUB_GFXMODE=640x480
Descomentada,sin #, se cambia la resolucion del cargador de arranque, debe usarse un ratio 4:3
                + GRUB_GFXMODE=640x480 
                + GRUB_GFXMODE=800x600
                + GRUB_GFXMODE=1024x768
                + GRUB_GFXMODE=1600×1200 

Se puede experimentar en caso de monitores widescreen con un ratio 16:10
                + GRUB_GFXMODE=640x400
                + GRUB_GFXMODE=800x500
                + GRUB_GFXMODE=1024x640
                + GRUB_GFXMODE=1280x800
                + GRUB_GFXMODE=1680x1050 

      #GRUB_DISABLE_LINUX_UUID=true
Descomentada, sin #, deshabilita que el Grub utilice el parámetro "root=UUID=xxx" para Linux. 
    
      #GRUB_DISABLE_LINUX_RECOVERY=true
Descomentada, sin #, evita que se muestre en el menu el menuentry de recuperación. 
    *
      GRUB_DISABLE_OS_PROBER=true
true - Desactiva la búsqueda por os-prober de otras particiones con otros sistemas operativos Windows, Linux, OSX and Hurd
false - Activa  la búsqueda por os-prober de otras particiones con otros sistemas operativos Windows, Linux, OSX and Hurd

Directorio /etc/grub.d/

Los archivos existentes en este directorio, exportan su contenido al ejecutarse la orden sudo update-grub
al archivo de configuración del Grub2, /boot/grub/grub.cfg
Estos archivos se ejecutan en orden secuencial, por que su nombre comienza por números, cuyo orden determina
su localización en el menu del Grub2

Las entradas personalizadas se agregan en el archivo 40_custom o en un nuevo archivo de número creciente
Todos estos archivos, deben recibir permiso de ejecutables para poder ser incorporados a grub.cfg, mediante la orden

sudo chmod u+x /etc/grub.d/nombre_archivo

Archivo:
00_header
Carga las configuraciones del archivo /etc/default/grub, presentaciones visuales, tiempo de espera y opciones de terminal.

Archivo:
05_debian_theme
Establece la imagen de fondo, los colores del texto y los temas.
Para cambiar colores, prestar atención a olas líneas 8 y 9, 8 establece el color del texto, 9 la linea seleccionada:

Ejemplo

  set menu_color_normal=magenta/black 
  set menu_color_highlight=cyan/blue 

Para cambiar la imagen de fondo se debe editar la línea 16:

                
for i in {/boot/grub,/usr/share/images/desktop-base}/NameOfPicture.{png,tga} ; 

Una forma es agregar el patch hacia la imagen entre las llaves ({})
Otra forma es copiar la imagen en una en uso

sudo cp /home/UserName/Pictures/NameOfPicture /usr/share/images/desktop-base

El archivo imagen debe estar en formato png o tga
Si el tamaño de la imagen no coincide con la resolución del Grub2, no se ajustara, se verá
recortada o insuficiente con área negra alrededor

Ejemplos:

{/boot/grub,/usr/share/images/desktop-base}/P1030084-picture-1024x768.png 
{/boot/grub,/usr/share/images/desktop-base}/CreatedFolderOfLink/picture.{png,tga} 

Archivo:
10_hurd
Busca kernels hurd

Archivo:
10_linux
Busca kernels Linux, de la distribución determinada por "lsb_release -i -s" results ("Ubuntu").

Archivo:
20_memtest86+
Si el archivo /boot/memtest86+.bin existe, se incluye como un item del menu

Archivo:
30_os-prober
Busca otros sistermas operastivos y los incluye en el menu.

Archivo:
40_custom
Es una plantilla para incluir entradas de menu personalizadas.

Entradas definidas por el usuario

Se crean actuando como con permisos temporarios de administrador

sudo editor_de_textos 4x_nombre_archivo

Se guardan en /etc/grub.d/

Se les da permisos de ejecución

sudo chmod +x /etc/grub.d/nombre_archivo

Se debe tener presente que:

Los discos rígidos siguen la nomenclatura del Grub Legacy
sda = hd0 , sdb = hd1 , sdc = hd2 , sdd = hd3

Las particiones inician de uno

sda1 = hd0,1 sdb2 = hd1,2 sdc5 = hd2,5

Para agregar por ejemplo una entrada personalizada para ejecutar SystemRescueCD instalado en sdb10 y
un kernel personalizado en sda9.

echo "Adding Custom Kernel & SystemRescue" >&2
      cat << EOF
      menuentry "Ubuntu, linux 2.6.31-11-custom" {
              set root=(hd0,9)
              linux /boot/vmlinuz-2.6.31-11-custom root=UUID=c6829e27-2350-4e84-bdbb-91b83f018f98 ro 
              initrd /boot/initrd.img-2.6.28-11-generic
      }

      menuentry "Boot SystemRescue CD from hard drive" {
              set root=(hd1,10)
              linux   /sysrcd/rescuecd subdir=sysrcd setkmap=us
              initrd  /sysrcd/initram.igz
      } 
      EOF

Para remover entradas del menu del Grub 2, no se debe editar el archivo menu.cfg

Se quitan archivos del directorio /etc/grub.d o se desinstalan los kernels desde synaptic y automáticamente se actualiza el archivo /boot/grub/grub.cfg

Si se elimina otro operativo del ordenador, al ejecutar manualmente

sudo update-grub  

Se actualiza el menu del Grub2

Si no se desea que aparezca memtest86+:
Se le quita el permiso de ejecución al archivo que lo incorpora

sudo chmod -x /etc/grub.d/20_memtest86+

si no se desea que aparezca la opción Recovery mode: (esta opción permite ingresar como
administrador sin contraseña para solucionare problemas, en caso de intrusos
para causarlos)

Se edita el archivo /etc/default/grub

Y se le agrega esta línea:

 GRUB_DISABLE_LINUX_RECOVERY=true

Recuperar reinstalar el Grub 2 via LiveCD

Iniciar con un live-cd de ubuntu

Abrir una consola (aplicaciones - Accesorios - Terminal)
Ejecutar
Para loguearse como administrador

sudo su

Para identificar la partición de la instalación de Ubuntu en el rígido

fdisk -l

suponiendo sea /dev/sda1

Para montarla

mount /dev/sda1 /mnt

Si /boot esta en partición separada, suponiendo sea /dev/sda2

mkdir /mnt/boot
mount /dev/sda2 /mnt/boot

ahora montar los dispositivos del sistema

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

chroot del sistema instalado en el disco y montado

chroot /mnt

Si hace falta editar el archivo /etc/default/grub

nano /etc/default/grub

Guardar el archivo

Cerrar el editor y ejecutar para incorporar los cambios

update-grub

Para instalar el Grub2 en el Mbr del disco hd0 , /dev/sda

grub-install /dev/sda

Si aparece algun error

grub-install --recheck /dev/sda

Ctrl+D para salir de chroot.

umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt

Para reiniciar el sistema

reboot

==========================================================

Si al terminar una instalación, el menu del Grub2 esta oculto por defecto
hay que editar el archivo /etc/default/grub y comentar la linea GRUB_HIDDEN_TIMEOUT

sudo nano /etc/default/grub
#GRUB_HIDDEN_TIMEOUT=3
GRUB_TIMEOUT=XXX       

Guardar el archivo
Cerrar nano
Ejecutar

sudo update-grub

============================================================
Si el Grub2 nos causa problemas y no podemos iniciar
lo podemos reemplazar por el Grub Legacy

Iniciar con el live-cd de Ubuntu
En una consola (Aplicaciones - Accesorios - Terminal)
Ejecutar:

sudo su
mount /dev/sda1 /mnt
mount --bind /dev /mnt/dev
chroot /mnt
cp /etc/default/grub /etc/default/grub.old
cp -R /etc/grub.d /etc/grub.d.old
cp -R /boot/grub /boot/grub.old
apt-get purge grub2 grub-pc
apt-get install grub
update-grub
grub-install /dev/sda
reboot

Extraer el cd

Al reiniciar, tendría que estar funcionando el Grub legacy (0.97)
con el que reemplazamos al Grub2 (1.97 beta).

Imagen de Abdoni
+1
0
-1

Buen día a todos:

He instalado sobre un hp pavilion dv7 ubuntu 9.10 con un arranque dual que me permite elegir entre windows 7 y ubuntu, la instalación se realizo sin problemas.

Si al arrancar elijo w7 no hay problema, el ordenador trabaja correctamente. Pero si arranco sobre ubuntu y cierro desde el menu: "apagar el equipo" al volver a arrancar me sale un mensaje de la bios diciendo que el equipo estaba en hibernacion. Aparece el arranque dual elijo ubuntu y el ordenador se cuelga con el logo de ubuntu. Tengo que apagar y repetir la operacion un par de veces para acceder a ubuntu o arrancar y apagar desde w7.

¿ Alguien sabe a que es debido ?
¿ Podéis ayudarme a resolver el problema ?

Gracias de antemano

Abdon

+1
0
-1
Imagen de Abdoni
+1
0
-1

Gracias Gabriel y perdona el lapsus

+1
0
-1
Imagen de txusti
+1
0
-1

por este engendro. Si era más fácil antes y funcionaba bien, no le veo sentido. Me parece un error y en este caso "lo mejor es enemigo de lo bueno". Perdón por el comentario, ya sé que no es lugar para hacerlo.
Muy buen post, y será muy útil para los que todavía estamos con versiones más antiguas de Ubuntu.

+1
0
-1
Imagen de arriero
+1
0
-1

Gracias por el howto, buenisimo, deberías de meterlo ya en los doc.

+1
0
-1

Si reparas tu problema, añade(Solucionado)en el asunto de tu primer post, así es mas fácil para el que busca después.Mi Blog

Imagen de maguercas
+1
0
-1

TAMbien estoy de acuerdo no sé porque cambiaron eL LEGacy por esta cosa... :( si aquel funcionaba perfecto no sé pára que lo cambian por esto que da tantos problemas..

+1
0
-1
Imagen de Tandourden
+1
0
-1

Una cosilla que no entiendo...
según tenía entendido, la nomenclatura de GRUB era diferente a la de GNU/Linux en cuanto a particiones:

GNU/Linux              GRUB
------------           -----
/dev/sda1              (hd0,0)   --> Primer disco duro, primera partición
/dev/sdb3              (hd1,2)   --> Segundo disco duro, tercera partición

Sin embargo, al principio del hilo, Gabriel comenta que:

"Se debe tener presente que:

Los discos rígidos siguen la nomenclatura del Grub Legacy
sda = hd0 , sdb = hd1 , sdc = hd2 , sdd = hd3

Las particiones inician de uno

sda1 = hd0,1 sdb2 = hd1,2 sdc5 = hd2,5"

Ya he visto varios posts de Gabriel y es poco probable que sea un error, por tanto si partimos de que es correcto, ¿quiere decir que la nomeclatura de GRUB2 es diferente a la GRUB Legacy o estoy equivocado en algo?

Desde ya, muchas gracias.

+1
0
-1
Imagen de Tandourden
+1
0
-1

que me surge, en

se muestra una opción llamada

GRUB_HIDDEN_MENU_QUIET=true/false

que no veo en tu post. Por lo que he podido entender, tiene el mismo efecto que la línea que tu llamas

GRUB_HIDDEN_TIMEOUT_QUIET=true/false

¿Es la misma opción con distinto nombre o hay un error por algún lado?

Gracias y un saludo.

PD: Enorme el post, por cierto.

+1
0
-1