Grub2. Modificar y eliminar lineas del gestor de arranque

Si has instalado más de un sistema operativo y uno de ellos es Ubuntu 9.10 o cualquier otra distribución GNU/Linux que instale por defecto Grub2, habrás comprobado que modificar o limpiar las lineas innecesarias del gestor de arranque es muy diferente al viejo Grub, a partir de ahora, conocido como Grub-Legacy.

Aquí en Benacasoft, os mostraremos como modificar y limpiar el arranque de Grub2 (actualmente versión 1.97 beta4) dejándolo limpio, eliminando así, antiguos kernels de Linux o modificando los nombres de los sistemas operativos instalados para una mejor presentación de nuestro ordenador al iniciar.

Para explicar como hacerlo, tomaremos como ejemplo que hemos instalado en nuestro ordenador primero Windows7 y luego Ubuntu 9.10 (así el grub se “comerá” el MBR de Windows).

Al acabar de instalar el último de los sistemas operativos, si reiniciamos, quedará el Grub2 algo parecido a:

Ubuntu, Linux 2.6.31-15-generic
Ubuntu, Linux 2.6.31-15-generic (recovery mode)
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Windows 7 (loader) (on /dev/sda1)

Pues bien, nuestra intención es dejar las lineas para arrancar Ubuntu 9.10 y Windows 7 únicamente, para ello, iniciamos Ubuntu, y abrimos el terminal (Aplicaciones/Accesorios/Terminal), y como root (ejecutando sudo su), ejecutamos lo siguiente:

  1. chmod 777 /boot/grub/grub.cfg, que dará permisos para que se nos permita modificar y guardar el archivo.
  2. gedit /boot/grub/grub.cfg, al ejecutar esto en el terminal nos abrirá en bloc de notas el archivo que modifica el menú del gestor de arranque de Grub2.

A continuación, debemos modificar un poco este archivo para eliminar lineas del Grub2 o dar algunas opciones.

Para empezar buscamos en el archivo la parte:

### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
  have_grubenv=true
  load_env
fi
set default="4"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi

Aquí podremos ver una linea donde pone: set default=”4″, que modificaremos cambiando el 4 por un 1, dejándolo así: set default=”1″, esto servirá para que Grub2 muestre marcado directamente Windows7 para iniciar, es decir, la linea de Ubuntu 9.10 sera la 0 y la de Windows7 sera la 1, la que mostrará seleccionada por defecto.

A continuación, vamos a modificar el tiempo que aparecerá el menú de Grub2 antes de entrar en el sistema operativo elegido por defecto (lo que modificamos antes), para ello nos vamos a la parte del archivo grub.cfg:

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

Ahora, en la linea donde pone set timeout=10, podremos indicar el numero de segundos que se mostrará el menú de arranque, en mi opinión, 10 segundos esta bien, si no, puedes cambiarlo por más o menos segundos, así al iniciar, si el contador de segundos llega a 0, iniciará el sistema operativo marcado por defecto si no se elegio ninguno antes.

Ahora viene la parte verdaderamente importante del archivo grub.cfg, en esta parte indicaremos las lineas que aparecerán en el menú, para ello modicamos la siguiente parte:

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	set quiet=1
	insmod ext2
	set root=(hd0,6)
	search --no-floppy --fs-uuid --set 05b1f341-7eba-4ed5-a7c6-49b75116db74
	linux	/boot/vmlinuz-2.6.31-14-generic root=UUID=05b1f341-7eba-4ed5-a7c6-49b75116db74 ro  splash  quiet splash
	initrd	/boot/initrd.img-2.6.31-14-generic
}

menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	insmod ext2
	set root=(hd0,6)
	search --no-floppy --fs-uuid --set 05b1f341-7eba-4ed5-a7c6-49b75116db74
	linux	/boot/vmlinuz-2.6.31-14-generic root=UUID=05b1f341-7eba-4ed5-a7c6-49b75116db74 ro single  splash
	initrd	/boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###

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

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
	insmod ntfs
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 01ca4da7b5e45e00
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###

La cual modificaremos dejándola así:

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu 9.10" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	set quiet=1
	insmod ext2
	set root=(hd0,6)
	search --no-floppy --fs-uuid --set 05b1f341-7eba-4ed5-a7c6-49b75116db74
	linux	/boot/vmlinuz-2.6.31-14-generic root=UUID=05b1f341-7eba-4ed5-a7c6-49b75116db74 ro  splash  quiet splash
	initrd	/boot/initrd.img-2.6.31-14-generic
}

#menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
#        recordfail=1
#        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
#	insmod ext2
#	set root=(hd0,6)
#	search --no-floppy --fs-uuid --set 05b1f341-7eba-4ed5-a7c6-49b75116db74
#	linux	/boot/vmlinuz-2.6.31-14-generic root=UUID=05b1f341-7eba-4ed5-a7c6-49b75116db74 ro single  splash
#	initrd	/boot/initrd.img-2.6.31-14-generic
#}
### END /etc/grub.d/10_linux ###

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

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 Ultimate" {
	insmod ntfs
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 01ca4da7b5e45e00
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###

Como se ve hemos modificado los títulos de las entradas principales: menuentry “Ubuntu, Linux 2.6.31-14-generic” y “menuentry “Windows 7 (loader) (on /dev/sda1)” por Ubuntu 9.10 y Windows 7 Ultimate (dependiendo de nuestra versión de W7).

El resto de las entradas, notablemente identificadas por que empiezan por menuentry y acaban en el próximo }, las hemos rellenado con # haciendo que las lineas estén comentadas, es decir, cuando el gestor de arranque Grub2 lea el archivo de configuración grub.cfg, saltará todas las lineas que comiencen por #, no mostrándolas en el menú. Así, solo mostrará las entradas de Ubuntu 9.10 y Windows 7 Ultimate, para entrar en el sistema operativo que elijamos.

Si hay alguna duda en la modificación del archivo grub.cfg, no duden en dejar un comentario para solucionarlo.

About these ads

28 pensamientos en “Grub2. Modificar y eliminar lineas del gestor de arranque

  1. DISCULPA TENGO UNA CONSULTA TENGO ISTALADO EL W8 Y UBUNTU 13 EL CUAL TENGO EL ARRANCADOR DE WINDOWS 8 PERO CUANDO INGRESO A UBUNTU ME SALE DENUEVO EL ARRANCADOR GNU GRUB 2.0 DIME COMO PUEDO DESINSALAR EL GRUB?

  2. Perdona amiguete, ya se que este pos tiene mas de un año pero necesito preguntar porque no encuentro solución en otro sitio. Verás tengo dos discos, en el primero tengo Win7 y Ubuntu 11.10 con mbr (hd0), y en el segundo Mac Osx Lion y Maleta para datos con gpt (hd1), si cambio en la bios para que arranque con hd1, me sale el chamaleon y me reconoce Win7, Mac y Maleta y me arrancan los tres pero no me sale linux. Si en la bios pongo que arranque con hd0, me sale el grub y me reconoce los tres sistemas pero sólo me arrancan Win7 y Linux pero Mac no me arranca y me pone:
    error no such device 35acb5719f9a9490
    error no such partition
    error xnu kernel loaded
    He probado todo esto y nada, o sea que Mac Osx Lion aunque no es para este tipo de arquitectura, se que funciona booteando con el disco hd1 y además lo he actualizado y todo y sé que funciona. Yo querìa arrancar con hd0 porque me gusta mas el grub2, pero no hay forma, me podrías ayudar, gracias y un saludo.

  3. hola por favor decidme que es el BusyBox ubuntu 1.17.10 ya que al arrancar ubuntu me sale esto luego tecleo exit y me arranca si no no arranca

    tengo instalado ubuntu 11.04
    windows 7
    debian
    mac osx leopard 10.5.8
    todos arrancan exepto el mac y el ubuntu me da este problema gracias por su ayuda

  4. hola ,tengo un problema al iniciar mi compu,yo le intale windows 7 inicialmente,y luego parti el disco duro en 2 para poner ubuntu 10.10 en la segunda parte;y bueno ocupe el ubuntu un par de veces el mismo dia y cuando lo apago,y lo prendo de nuevo (por una intalacion que me lo pidio)no me aparece la parte en la que me da la opcion de escoger windows 7 o ubuntu,sino que me sale “minimal bash-like line editings suported.for the firts woer,TAB list possible command completions.anywhere else TAB list possible device or file completions”…porfa respondan que es lo que puedo hacer,o aclarenme que fue lo que me paso. gracias

    • Cuando te de ese error, si te sale un interprete de comandos asi: grub>
      Introduce lo siguiente: find /boot/grub/grub.conf (al ejecutar este comando te dira donde se encuentra alojando el archivo de configuración de grub2, en forma de hdx,y)
      Ahora introduce: root (hdx,y) (segun el disco y particion que te mostrase con el anterior comando)
      Ahora introduce: setup hdx (segun el disco duro donde esta la particion de Linux)

      Ahora reinicia y haber si te soluciona el problema.

      Un saludo.

  5. E. PEREJON:
    He caido en este blog,despues de haber recorrido una serie de foros blogs,etc etc etc,espero pueda ayudarme, tengo instalado en mi maquina 2 discos duros, en el C hay dos particiones c donde esta xp y d donde estan los datos de 40 gb c/u, en el otro tambien estan las particiones h vacia e i vacia de 20 gb c/u y 40 gb para ubuntu,sucede que al encender me sale el siguiente mskverifiying DMI pool data, error :no such device :a2270fec-2e96-47f8-a6ea-1fad823447af
    grub rescue ,tengo que reiniciar para que me de la opcion de escoger el stma operativo cada vez que la enciendo , despues de esto, todo funciona bien , pero no es normal el que reinicie forzadamente cada vez que enciendo mi maquina , si fuera tan amable en dirigirme en los pasos a seguir ,sea por medio del blog o por mi correo , le estaria muy agradecido, soy novel de los novatos en linux. gracias

    • Hola, aunque es un caso extraño espero poder ayudarte, ese error creo que te da porque intenta arrancar desde el CD-ROM o incluso desde una disquetera. Te sugiero que al iniciar tu equipo, entres en la BIOS y deshabilites el arranque desde estos dos dispositivos, poniendo como primera opción que arranque desde el disco duro donde esta Ubuntu. Creo que eso podría solucionarlo.

      Un saludo.

  6. Excelente Post ¡¡. Estoy probando Ubuntu 10.10 netbook y me tiene muy satisfecho después de una semana de instalado. Pero aún tengo otras dos particiones con XP y W7. Siendo novel en Linux agradezco su valioso aporte y a todos ustedes sus comentarios. Gracias.

  7. perdon por la pregunta, y si elimino todas esas entradas del grub2 ,en el archivo grub.cfg y guardo los cambios,no funcionaria?

  8. Me parece un error hacer esto. Y no entiendo para qué. No deberías modificar los permisos de los archivos de configuración. Es mi opinión.

    chmod 777 /boot/grub/grub.cfg

    Es más facil -y además sólo en una línea.

    gksudo gedit /boot/grub/grub.cfg

    Es mi opinión, que cada uno haga lo que quiera con su sistema

    • Si que es un error cambiar los permisos de los archivos de configuración, pero se supone que es el sistema operativo personal de cada uno. Si lo que quieren es volver a poner el archivo como estaba que vuelvan a darle permisos de solo lectura.

      chmod 444 /boot/grub/grub.cfg

      Solo lo explique así para que el tutorial fuese lo más simple posible.

  9. Disculpa en la 1era parte de modificar el set defalut=”4″ y cambiarlo por uno yo en vez de 4 tengo un 0 no se si sea porque tengo instalado Vista, luego instale ubunto 9.4 (pero no lo pude eliminar entonces se muestra pero no sirve) y luego ubuntu 9.10

    • En el “set default” tan solo debes indicar la linea que quieres que te salga seleccionada por defecto. Si al encender tu equipo y arranca el grub con 2 lineas, por ejemplo, Windows XP y Ubuntu, en “set default” podemos indicar: 0 que es Windows XP o 1 que es Ubuntu.
      Cuando modifiques al iniciar Grub2, si acaba la cuenta atrás para elejir el S.O. que arrancar, que arranque el indicado en “set default”.

      Un saludo.

  10. bueno mi problema como sigue.. tenia instalado el xp y el ubuntu 9.10 todo iba bien, por razones de fuerza debi formatear el xp al intalar todo pues resulta q ya no podia entrar a ubuntu,ingresaba directo al xp, pero con el cd de instlacion de ubuntu en modo de prueba pues ingreso normal y ahi sta todo lo que instale, quisiera saber si hay alguna solucion para eso, busque y aun no encuentro solucion… te dejo algun dato de como tengo el disco oks:
    tengo un solo disco duro, sta particionado de la siguiente forma C:XP D:archivos personales E: musica-video y luego tenia la particion para el ubuntu y otra para el swap.. si hay alguna solucion ….
    ojo hice lo q le mencionaste a Francisco lineas arriba eso de ejecutar el update-grub2 pero sigue igual… graciassssssssss

    • El problema que tienes es que el MBR (Master Boot Record) de Windows a sustituido al Grub de Ubuntu, y claro, al ser el gestor de arranque de Windows no detecta sistemas operativos linux, por eso no detecta Ubuntu aunque este ahí.
      La solución es recuperar el grub y volver a sustituir al MBR de Windows.
      Usaremos el LiveCD de Ubuntu, aunque puede ser cualquier otra distribución que use GRUB como gestor de arranque.

      1. Iniciamos el ordenador y arrancamos desde el CD
      2. Arrancamos Ubuntu (o la distribución escogida) en modo LiveCD
      3. Abrimos el terminal.

      Ejecutamos los siguientes comandos:
      $ sudo grub –> ejecutamos el intérprete de comandos del GRUB
      > root (hdX,Y) –> indicamos dónde está ubicada la partición de Ubuntu
      > setup (hdX) –> instalamos el GRUB en ese disco
      > quit –> salimos del intérprete de comandos del GRUB

  11. hola, nadamas una pregunta como hacerle para que cuando se actualize o regenere el grub no vuelva a crear las entradas que hemos borrado

    gracias

    • Pues es el único problema que tiene modificar el archivo de grub.cfg, ya que si actualizas grub2 o actualizas el kernel, volverá a mostrarte todas las entradas de los Sistemas Operativos, no hay manera de evitar eso.

      Un saludo.

    • Para que no te aparezcan de nuevo las entradas de kernels antiguos cuando actualizas Grub2, desinstalalos mediante apt-get:
      sudo apt-get purge linux-image-2.6.31-14-generic
      y asi con todos los demas kernels que quieras eliminar. Te recomiendo dejar siempre los dos ultimos (por lo que pueda pasar) ;)

      • Así es, es recomendable ir eliminando kernels antiguos de nuestra distribución. Aún asi, no soluciona el problema del que hablabamos, pués seguira saliendo las lineas de los kernels que dejemos sin desinstalar, (importante lo de dejar los dos últimos instalados) así como las lineas del test de memoria y las de modo a fallos, además de las lineas de los S.O. Windows. Siempre habrá que editar grub.cfg para que nos muestre las dos únicas lineas de los S.O Windows y Linux.

        Un saludo Crowler.

  12. Ademas de modificar las lineas, como haces para agregar que arranque otro sistema operativo que no esta listado en el grub, concretamente tengo dos discos, en uno Ubuntu mas XP, en el otro W7, me genera dos esntradas windows, una XP y otra W7 pero a la hora de arrancar las dos arrancan en e la misma partición XP, como se puede editar el Grub y modificar para que queden los tres sistemas operables,
    Si me podeis ayudar os lo agradezco.

    • Si en Ubuntu mediante el terminal ejecutas: update-grub2, se volverá a regenerar el archivo grub.cfg buscando y listando todos los sistemas operativos de tu equipo, prueba de esta forma si reconoce tanto XP como 7.
      Si no, lo mejor es comprobar en que partición se encuentra instalado cada sistema operativo y modificarlo a mano en el archivo de configuración de Grub2. Es decir, si cuando seleccionas W7 y WXP arrancan ambos XP, en el archivo.cgf, deberás indicar en que partición esta instado el sistema en la linea: set root=(hdX,Y), siendo X el numero de disco duro, (0,1,2…) y Y el numero de partición (0,1,2…). Y no deberia dar ningún problema.

      Un saludo.

  13. A mi personalmente em gustaba más el grub de Jaunty. Era más fácil de modificar las líneas y cuando quería meter otro S.O u otro Kernel, no tenía mas que ir la grub de la otra particion y copiarlo en el menu.lst.Además no se si este grub2 podrás direccionar arranques de S.O de macOsX… ¿sabes algo al respecto?.
    Yo sigo con jaunty pues el kernel 2.6.31-15 me esta dando problemas con el hardware

    • Es cierto que grub era mucho más fácil de modificar que grub2, de eso no hay duda, además si actualizas grub2 a una nueva versión, vuelve a dejarte las lineas como estaban de inicio, por lo que hay que modificar el grub.cfg de nuevo.
      El principal problema de grub era que no soporta el nuevo sistema de archivos EXT4 que ahora utilizan las nuevas distribuciones, tenias que montar /boot en EXT3 y el resto en EXT4 si querias que grub encontrara la partición.
      Respecto a MacOS X, no lo he probado si funciona con grub2, pero si grub no daba problemas no debe darlo con grub2.
      Si te da problemas el hardware de Jaunty, te recomiendo cambiarte a 9.10 Karmic Koala, me detecto todos los controladores sin problemas, la verdad que estoy muy contento con esta distribución de Ubuntu.

      Un saludo.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s