martes, 8 de noviembre de 2011

Fedora 16 y Grub2

Hoy se liberó Fedora 16 (Verne), el que incorpora Grub2 por defecto. Esta nueva versión cambia la forma en que se configura, ya que la configuración queda dividida en varios archivos:
  • /etc/default/grub: contiene parámetros generales
  • /etc/grub.d/*: contiene script para elementos específicos
La modificación de cualquiera de éstos deberá ser acompañada por la ejecución del siguiente comando para que sus efectos sean visibles:
grub2-mkconfig -o /boot/grub2/grub.cfg


/etc/default/grub
Este archivo define las siguientes opciones:
  • GRUB_CMDLINE_LINUX
    Contiene los parámetros adicionales que se agregarán a la línea del kernel, como por ejemplo GRUB_CMDLINE_LINUX="quiet rhgb".
  • GRUB_DISABLE_RECOVERY
    Define si se debe crear una entrada "Recovery" para cada kernel encontrado. GRUB_DISABLE_RECOVERY="true" eliminará la creación de entradas "Recovery".
  • GRUB_DISTRIBUTOR
    Define el nombre de la distribución a mostrar en las entradas. Por ejemplo GRUB_DISTRIBUTOR="Fedora"
  • GRUB_TIMEOUT
    Define el tiempo, en segundos, de espera antes de iniciar la entrada por defecto. Para 5 segundos será GRUB_TIMEOUT=5.
  • GRUB_GFXMODE
    Define la resolución de Grub2 en modo gráfico. Por ejemplo GRUB_GFXMODE="1280x800" define resolución 1280x800 y GRUB_GFXMODE="1280x800x32" define resolución 1280x800 con 32 bits de profundidad de color.
  • GRUB_TERMINAL
    Define el modo del Grub. Los valores son console y gfxterm (modo gráfico).
  • GRUB_DEFAULT
    Indica que entrada será la por defecto. GRUB_DEFAULT=0 indica que será la primera entrada encontrada.
Activar el modo gráfico
Para activar el modo gráfico (gfxterm) se deben realizar los siguientes pasos:
  1. Crear una fuente:
    grub2-mkfont -o /boot/grub2/unifont.pf2 path_a_fuente.ttf
    Si deseamos cambiar el tamaño, por ejemplo 18:
    grub2-mkfont -o /boot/grub2/unifont.pf2 path_a_fuente.ttf -s 18
  2. Modificar /etc/default/grub y dejar las variables así:
    GRUB_GFXMODE="resolucion preferida"
    GRUB_TERMINAL="gfxterm"
  3. Ejecutar grub2-mkconfig -o /boot/grub2/grub.cfg
Agregar imagen de fondo
Grub2 acepta agregar una imagen de fondo en formato jpg, png y tga. Para agregar una imagen de fondo debemos:
  1. Activar el modo gráfico
  2. Seleccionar una imagen en resolución adecuada y copiarla a /boot/grub2/
  3. Editar el archivo /etc/grub.d/41_custom, en este caso se usa insmod jpeg pero puede ser insmod png o insmod tga según el formato de la imagen. El archivo debería queda así:
    #!/bin/sh
    cat <<EOF
    if [ -f  \$prefix/custom.cfg ]; then
      source \$prefix/custom.cfg;
    fi
    insmod jpeg
    background_image /grub2/fondo.jpg
    EOF
    
  4. Ejecutar grub2-mkconfig -o /boot/grub2/grub.cfg
Cambiar color de letras
Una vez que hemos logrado cargar el fondo, deberemos ajustar el color de las letras para que se vean bien. Para ello debemos conocer los colores posibles:
  • white
  • blue
  • magenta
  • cyan
  • light-gray
  • yellow
  • red
  • light-magenta
  • dark-gray
  • green
  • light-blue
  • light-red
  • black
  • light-cyan
  • light-green
  • brown
Para configurar el color debemos:
  1. modificar el archivo /etc/grub.d/41_custom y agregar la línea set color_normal=letra/fondo antes de la última línea (EOF). Si se deja el color de fondo en black, será interpretado como transparente y es el adecuado para cuando se tiene imagen de fondo.
  2. Ejecutar grub2-mkconfig -o /boot/grub2/grub.cfg

16 comentarios:

joaluc dijo...

Hola, tengo un problema que busco solucionar (me estoy frustrando :/ ).

Cuando activo el modo gráfico de grub, despues de configurar la fuente, el color, tamaño, background guardar todo con el comando "grub2-mkconfig..." y reiniciar mi monitor me avisa con un mensaje diciendo "Modo no soportado - use 1600x900 60Mhz" y obvio se ve todo desfasado.

Lo que no entiendo es que la máxima resolucion permitida por mi monitor es 1600x900x24. Me he fijado si el background tenia otra resolución pero es la misma. Creo que todo debería estar en orden, antes con el grub anterior ya venia con modo gráfico y para ver el plymouth tenia que poner vga=xxx

Tengo Fedora 16. Desde ya gracias :)

Gotencool dijo...

@joaluc
Cuando te aparezca el menú de grub presiona la "c" y accederás a la consola.
Allí ejecuta vbeinfo, el que te listará los modos soportados. Elige uno de ellos y no deberías tener problemas.
Me da la impresión que no te soporta la profundidad 24. En mi caso las profundidades son 8, 16, 32.

Jasz Andre dijo...

hola, tengo una consulta, espero me puedas ayudar. gracias de antemano.

Ocurre que cada vez que enciendo el pc veo el grub descuadrado desplazado a la derecha, se ve algo tosco y parte de los nombres de los sistemas disponibles no se ven.

Para arreglarlo, creo que tengo que realizar algo similar a lo que escribiste en este post. Pero tengo una duda con el archivo /etc/default/grub, ya que al abrirlo sólo veo estas 4 líneas:

GRUB_TIMEOUT=8
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 KEYTABLE=la-latin1 LANG=en_US.UTF-8"

Para arreglar la resolucion creo que hay que modificar esta linea GRUB_GFXMODE, pero en mi archivo no está presente. ¿Debo añadirla manualmente? si fuera así, mi resolución de pantalla es 1368x768 , osea debo añadir GRUB_GFXMODE="1368x768" , ¿es correcto?

gracias por la ayuda que puedas brindarme

Gotencool dijo...

@jazz
debes agregar la línea al archivo. Sobre la resolución, prueba con vbeinfo tal como señalo en el comentario anterior al tuyo.

Jasz Andre dijo...

Hola, ya lo modifiqué y quedó así:

GRUB_TIMEOUT=8
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 KEYTABL$
GRUB_GFXMODE="1024x768"

luego actualicé el grub con:

grub2-mkconfig -o /boot/grub2/grub.cfg

reinicie para ver el efecto, pero aún asi el grub mantiene la misma forma, como si no hubiera hecho nada.

OBS: 1024x768 es una de las resoluciones soportadas segun vbeinfo.

¿hay algo más que se podría hacer? gracias otra vez por la ayuda

Ph0eniX dijo...

tienes que actualizar con el comando

grub2-mkconfig -o /boot/grub2/grub.cfg

kaleemsagard dijo...

Hola.

Te escribo para comentarte que todo funcionó de puta madre en mi Fedora 16 según tus instrucciones.

Gracias por tu post!!!

Fitap dijo...

Tengo Fedora 16 y necesitaba modificar el tiempo de espera en la pantalla inicial de booteo. Como se que esta en el grub; lei que ahora se usa el grub2 en esta distro.
Resulta que modifique el parametro timeout y lo actualize segun los comandos presentados aqui; el problema que tengo ahora es que una vez seleccionado arrancar con fedora; la pantalla se queda en el globito f y no sigue adelante.

Saben que puede estar pasando ??

Saludos.

Gotencool dijo...

@Fitap

Cuando te salga el listado de sistemas para bootear, ponte sobre Fedora y presiona la e. Con ello entrarás en modo edición.
Busca la línea linux /vmli...... y elimina la parte que dice rhgb y quiet.
Presiona F10 para iniciar.
Al eliminar rhgb se va el inicio con gráficos, mostrando las salidas del kernel. Al eliminar el quiet, hacemos que nos muestre todas las salidas.
Así podrás ver en qué se queda pegado.

javier peña dijo...

hola como esta

realice los pasos como los muestra y no me carga la imagen validando en otros post hablan del archivo /etc/default/grub y indican agregarle una linea que diga algo asi:

GRUB_BACKGROUND=/boot/grub2/tux2.jpg

donde tux2.jpg es el fondo que quiero colocarle, pero aun asi no lo toma.. anexo el archivo como lo tengo editado:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 KEYTABLE=es LANG=en_US.UTF-8"
GRUB_GFXMODE="1280x800x32"
GRUB_TERMINAL="gfxterm"
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_BACKGROUND=/boot/grub2/tux2.jpg


y el archivo /etc/grub.d/41_custom

#!/bin/sh
cat <<EOF
if [ -f \$prefix/custom.cfg ]; then
source \$prefix/custom.cfg;
fi
insmod jpeg
background_image /grub2/tux2.jpg
EOF

agradezco en lo que me puedas ayudar ya que no me toma el fondo este archivo tiene como propiedad 640 x 480 , lo otro es que cuando ejecuto el comando

grub2-mkfont -o /boot/grub2/unifont.pf2 path_a_fuente.ttf

para activar el modo grafico me genera un error

can't open file path_a_fuente.ttf, index 0: error 1: cannot open resource

Agradezco su atencio y ayuda al respecto..

Miranda dijo...
Este comentario ha sido eliminado por el autor.
Miranda dijo...

Les voy a enseñar como poner una imagen de fondo.
Antes que nada los pasos explicados por el autor de este pos, son correctos, pero mi intención es aclarar algunos puntos que los llevan a tener algunas dudas así como errores comunes...

//********************************************************//
1.-Editaremos el archivo /etc/default/grub

GRUB_GFXMODE="" dentro de las comillas pondremos la resolución que soporte nuestro grub y una manera de averiguarlo es cuando estemos en el cargador de arranque grub sobre nuestro menú fedora presionamos la tecla C y nos aparcera como terminal pero dirá grub, entonces ahi escribimos vbeinfo y nos mostrara en este caso las diferentes resoluciones...

GRUB_TERMINAL="gfxterm" este linea debe quedar así...


Nota: en caso no aparecer estas lineas en /etc/default/grub entonces las escribimos.
//******************************************************//

2.- Al igual que el autor explica para activar el modo gráfico, es necesario crear una fuente, pero e visto este error en común
"can't open file path_a_fuente.ttf, index 0: error 1: cannot open resource".

Esto se debe que cuando ejecutamos este comando
"grub2-mkfont -o /boot/grub2/unifont.pf2 path_a_fuente.ttf"
en especial esta parte
"path_a_fuente.ttf" nos esta indicando el tipo de fuente que deseamos utilizar y como no existe nos envía este error.
Para solucionarlo tomemos en cuenta que las fuentes de GNU/Linux están en la ruta "/usr/share/fonts" entonces por mencionar un ejemplo podría quedar de esta manera:
"grub2-mkfont -o /boot/grub2/unifont.pf2 /usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf"
//******************************************************

3.- Finalmente en el archivo
"/etc/grub.d/41_custom" lo editamos como marca el autor de este pos, pero mencionando que en esta parte
"background_image /grub2/fondo.jpg" no es necesario poner nuestra imagen de fondo en grub2 si no donde mas nos convenga, pero sin olvidar de poner la ruta adecuada si no, no cargara la imagen.

Por ultimo no olviden escribir este comando
"grub2-mkconfig -o /boot/grub2/grub.cfg" para que guarde los cambios nuestro archivo "/boot/grub2/grub.cfg" de ser así después de dicho proceso podemos darle un vistazo a dicho archivo para ver que efectivamente se han guardado los cambios que hemos realizado.

Nota: en caso de mandar algún error al momento de cargar el grub en cuestiones de la resolución probemos con otra resolución menor, espero haber podido resolver algunas dudas hasta pronto...

jeronimo nadie dijo...

hola como estas instale fedora 17 , y cuando inicio la pc me sale un cartel que no hay señal desde el monitor, se que es por que la resolucion del grub esta muy baja, como hago para arreglar esto, en el archivo del grub /etc/default/grub solo me sale esto:

GRUB_TIMEOUT=8
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 KEYTABL$
GRUB_GFXMODE="1024x768"

no quiero agregar imagen de fondo ni nada de eso solo quiero que la resolucion del grub sea mas alta asi puedo ver la pantalla de inicio y poder ver la lista de sistemas operativos que tengo instalados chau muchas garcias

Eduardo Villagrán Morales dijo...

@jeronimo
prueba comentando la línea GRUB_GFXMODE, regenerando el archivo con grub2-mkconfig -o /boot/grub2/grub.cfg

jeronimo nadie dijo...

Eduardo Villagrán Morales
hola, muchas gracias se soluciono el problema haciendo lo que escribiste, gracias por tomarte el tiempo y la molestia de constestarme y ayudarme con mi problema.chau suerte

jdalarco dijo...

Como Cambio la Resolución para la concha de comandos ya que las letras me salen muy pequeñas me gustaría una resolución para la consola de 800x600 como hago esto