GRUB

De doc.ubuntu-es
Saltar a: navegación, buscar

Contenido

Qué es GRUB

GRUB es un cargador de arranque, es lo primero que se carga cuando la computadora se inicia. Te permite tener diferentes sistemas operativos, y diferentes versiones de ellos, en el mismo disco duro. Por ejemplo puede tener Windows y Linux en la misma computadora, GRUB se cargara antes que cualquiera de éstos permitiéndote elegir. Puedes también crear un disquete de arranque con GRUB en caso de emergencia.


Información Básica para Novatos

Si necesitas ingresar al menu de GRUB tendrás que presionar ESC justo después de que inicie. Por omisión debes de presionar ESC muy rápido. Para incrementar este contador edita: /boot/grub/menu.lst, incrementando los segundos en la parte TIMEOUT. De manera alternativa podrías tener el menú siempre al momento de arrancar. Para hacer ésto descomenta 'hiddenmenu' insertando una # al inicio de la línea. Una vez cambiado el menu.lst debes ejecutar:

 sudo update-grub

Nótese que si el instalador Ubuntu detectó otros sistemas operativos en el disco durante la instalación, entonces el menu de GRUB será desplegado por omisión y el contador se verá incrementado, de ser así el paso de arriba no será necesario.

Modificar las opciones de inicio en en GRUB

Después de presionar 'ESC' se te presentará una lista de los kernels y sistemas operativos que puedes iniciar. Para modificar las opciones de inicio situate en el sistema operativo que quieras editar y presiona 'e'. En ese momento se te mostrarán una lineas que empeizan por 'root', 'kernel', 'initrd', 'quiet' y 'savedefault'. Para un proceso de arranque más projilo puedes eliminar la línea de 'quiet' poniéndote encima y presionando 'd' para borrar la línea. Necesitarás también ponerte sobre la línea 'kernel' y presionar 'e' para editar y eliminar la palabra 'splash' del final de la línea. Después de hacer las modificaciones necesarias puedes presionar 'b' para iniciar ese sistema operativo. Estas modificaciones no presistirán en los siguientes inicios.

Nota: si el instalador de Ubuntu detecta otros sistemas operativos en el disco durante la instalación, entonces el menú de grub los mostrará por defecto y el timeout aumentará, así que el paso anterior sería innecesario.

Lista de Kernels Automagica

Ubuntu usa una herramienta llamada update-grub para modificar el menu.lst. Ésta detecta automáticamente todos los kernels que tienes en el directorio /boot, y aplica varias configuraciones globales a cada uno. Siempre que instalas actualizaciones de kernel desde los repositorios, update-grub se ejecuta para actualizar la configuración de grub.

Las partes relevantes de menu.lst que update-grub mira son las que estan entre las líneas "### BEGIN AUTOMAGIC KERNELS LIST" y "### END DEBIAN AUTOMAGIC KERNELS LIST". Los comentarios están precedidos por al menos dos '#', por ejemplo '## esto es un comentario'. Las opciones globales están después de una única almoadilla '#', por ejemplo. '# groot=(hd0,4)'. La más común para cambiar es probablemente la opción. Cámbiala si /boot está en una partición diferente a {{{/}}}. Consulta la sección apropiada en esta página para más información sobre las diferentes particiones de /boot. Otra opción común es 'kopt=', que son las opciones de kernel aplicadas a todos los kernels en el menu.lst.

Configuración de parámetros de kernel

En `/boot/grub/menu.lst`, encontrarás una línea como esta:

 # kopt=root=/dev/sda1 ro


Aparece como comentada, pero no elimines la almoadilla '# ' al inicio. /!\ ESTO ES IMPORTANTE: grub ve esta línea como comentada u la ignora, pero se usa como un parametro de configuración de update-grub para general los contenidos del fichero que grub lee al inicio.

SI necesitas parametros de kernel adicionales (por ejemplo, si alguien te pide que testees el inicio con ciertos parametros para solucionar algún problema), añadelos ak final de la línea, por ejemplo, para añadir `noapic`:

 # kopt=root=/dev/sda1 ro noapic

Después de editar el fichero, ejecuta:

 sudo update-grub


Puedes añadir temporalmente al kernel parámetros en el inicio de menú grub, presionando 'e ' y editando la línea del kernel.


Si /boot está en otra partición

Si /boot está montado en otra partición y utilizas update-grub, entonces puedes tener problemas. Una solución es usar grub-install, que es una manera de instalar el cargador de inicio grub en un sector de inicio que no depende de ninguna distribución.

 sudo grub-install --root-directory=/boot /dev/sda

Esto es probablemente menos deseable porque update-grub es muy bueno configurando las cosas correctamente, por lo tanto debería usarse en vez de éste.

Otra solución es crear un symlink en /boot el mismo:

 cd /boot
 sudo ln -s . boot

El razonamientro detrás de esto es que cuando el grub inicia, busca en qué partición está instalado. update-grub (y grub-install) asumen que todo está en /boot. Cuando /boot está en la misma partición que /<tt> todo finciona bien ya que <tt>menu.lst estará en /boot/grub. Si /boot está en una partición separada, entonces grub ve /boot como / (de ahi el '--root-directory' de arriba). Añadiendo un symlink, cuando busque por /boot/grub, este estará ahí. Creando el symlink, has puesto un loop en el sistema de ficheros, que puede causar problemas con ciertas opciones de cp, mv, etc.

Cambiar el Disco donde está instalado Grub

Imagina el siguiente problema: Tienes dos discos duros, uno SATA (/dev/sda), el otro PATA (/dev/hda). Tu BIOS parece pensar que el disco PATA debe siempre iniciarse preferentemente antes que los discos SATA, pero tu quierse iniciar desde el disco SATA. Grub puede solucionar este problema.


Encontrar groot

Primero, fíjate qué nombre tienen los discos en Grub. Esto se lista en /boot/grub/device.map. Ahí encontrarás una tabla de nombres al estilo Grub (como (hd0)) y nombres al estilo de Linux (como /dev/hda/). Necesitas saber en qué disco y partición de inicio está /boot. Para encontrar donde está /boot, usa df:

 df /boot

Esto te dirá el nombre de la partición (al estilo Linux) donde está /boot. Entonces simplemente hazlo coincidir con el nombre al estilo Grub en device.map. Esto es lo que groot debe ser.

Ejemplo:

 $ df /boot
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda5              46M   15M   30M  33% /boot
 
 $ cat /boot/grub/device.map 
 (hd0)	/dev/hda
 (hd1)	/dev/sda

Así, groot debería ser (hd1,4) (fíjate que los números de particiones de Grub siempre son uno menos que los números de Linux). Así en /boot/grub/menu.lst,

  ## default grub root device
  ## e.g. groot=(hd0,0)
  # groot=(hd1,4)

Encontrar el root kernel

La otra pieza del puzle es decirle al kernel donde está la raiz /. Simplemente find out donde está montado /.

 df /
Esto es lo que “root” debería ser en kopt.  

Ejemplo:

 $ df /
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda3              14G  8.3G  5.0G  63% /

(Continúa)

Herramientas personales