Gráficos Intercambiables en Linux

Como Automatizar la Gestión de Gráficos Híbridos en Linux

Es posible que recuerdes que hace unos días publiqué una entrada sobre como manejar gráficos intercambiables en Linux. En ella, hablé de la herramienta ‘vga_switcheroo’, integrada por defecto en el kernel, y que mediante simples comandos te permite, tanto conmutar de GPU, como apagar la gráfica que no se encuentre dando señal por pantalla.

La única desventaja del método expuesto, es que se debe realizar manualmente cada vez que queremos cambiar de gráfica, pues el sistema se inicia siempre con los parámetros establecidos por defecto.

Dicho esto, en este articulo quiero hablar de un script que permite automatizar el proceso, de modo que puedas iniciar el sistema con los parámetros que desees.

Script para Automatizar el Manejo de Gráficos Intercambiables en Linux

El script en cuestión lo encontré en Ubuntu community help, y según cuentan en la web, permite realizar el conmuto de gráficos deseado y apagar la GPU desconectada, en el mismo arranque del sistema y de manera automática. El script en cuestión es el que se muestra a continuación.

#
# Standard initramfs preamble
#
prereqs()
{
:
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

# source for log_*_msg() functions, see LP: #272301
. /scripts/functions

#
# Helper functions
#
message()
{
        if [ -x /bin/plymouth ] && plymouth --ping; then
                plymouth message --text="$@"
        elif [ -p /dev/.initramfs/usplash_outfifo ] && [ -x /sbin/usplash_write ]; then
                usplash_write "TEXT-URGENT $@"
        else
                echo "$@" >&2
        fi
        return 0
}

run_switcheroo()
{
        local hybridopts
        hybridopts="$1"

        if [ -z "$hybridopts" ]; then
                return 1
        fi

        local IFS=" ,"
        for x in $hybridopts; do
                message "Switching hybrid graphics to $x"
                echo $x > /sys/kernel/debug/vgaswitcheroo/switch
        done
        return 0
}

#
# Begin real processing
#

# Do we have any kernel boot arguments?
for opt in $(cat /proc/cmdline); do
        case $opt in
        hybridopts=*)
                run_switcheroo "${opt#hybridopts=}"
                ;;
        esac
done

exit 0

Tal como se indica en el artículo original de Ubuntu community help, para poder iniciar el script en el arranque del sistema, debes copiar el contenido en tu editor de texto favorito, y nombrar el archivo como ‘hybrid_boot_options. En mi caso, lo he copiado en el editor gedit, y lo he guardado en la carpeta Escritorio.

Posteriormente, es necesario mover el archivo en el directorio ‘/etc/initramfs-tools/scripts/local-top/’. Por ello, necesitarás permisos de superusuario, por lo que el proceso debe realizarse mediante la terminal.

En el link que sigue, tienes información sobre como manejar archivos y carpetas desde la terminal de Linux. En este caso concreto, el primer paso es loguearte como usuario administrador o root.

$ sudo su

A continuación, hay que mover el archivo ‘hybrid_boot_options’ al directorio mencionado anteriormente. Para ello utilizaremos el siguiente comando.

# mv Escritorio/hybrid_boot_options /etc/initramfs-tools/script/local-top

Por defecto, el archivo solo posee permisos de lectura y escritura. Para nuestro propósito, el script se debe poder ejecutar en el arranque del sistema, por lo que hace falta dar permisos de ejecución al archivo.

# chmod +x /etc/initramfs-tools/scripts/local-top/hybrid_boot_options

A continuación, es necesario usar el siguiente comando para crear archivos initramfs.

# update-initramfs -c -k all

Finalmente, lo único que falta es añadir una linea de código en el archivo de configuración del cargador de arranque GRUB. Para ello, debes abrir el archivo ‘/etc/default/grub’ con el siguiente comando:

# gedit /etc/default/grub

Una vez hecho esto, falta añadir la linea de código mostrada a continuación. En este caso utilizaremos la opción de habilitar las dos tarjetas gráficas, conmutar a la GPU integrada, y apagar la GPU discreta.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modeset=1 hybridopts=ON,IGD,OFF"

El último paso es aplicar los cambios en el GRUB para que tengan efecto en el siguiente inicio del sistema. Para ello, puedes hacerlo mediante:

# update-grub

Con esto, lo único que falta es reiniciar el equipo y verificar los cambios.

Comprobar los cambios

Una vez hayas reiniciado el equipo, para comprobar la GPU que se encuentra encendida, puedes utilizar el siguiente comando:

$ sudo lshw -c video

Hay que tener en cuenta que puede que no funcione en todos los casos. En mi caso no me ha dado resultado, ya que la configuración de inicio de los gráficos seguía siendo la que viene predeterminada, por lo que he tenido que apagar la GPU manualmente. Igualmente, es posible que en tu caso funcione, por lo que tampoco pierdes nada en probarlo.

Si lo has probado y deseas compartir el resultando, no dudes en comentar debajo. Por otra parte, si conoces otros mecanismos para manejar gráficos intercambiables en Linux, también será de gran ayuda contar con tu opinión.

Anuncios

Publicado por

Oriol

Soy un chico de Barcelona. Estoy aquí para compartir mis Hobbies e intentar aportar mi granito de arena a todos aquellos usuarios interesados en el mundo de la informática, internet y las tecnologías de la información en general.

3 comentarios sobre “Como Automatizar la Gestión de Gráficos Híbridos en Linux”

    1. Hola! Vale gracias por comentarlo.
      Por lo que leo de la linea, se debe referir al archivo /proc/cmdline. A mi tampoco me funcionó, pero creo que no me indico la causa del error, simplemente vi que no hacía efecto.
      Mañana miraré a ver que tal funciona en Ubuntu 13.04 (la otra vez lo probé con la 12.04). Ya te comentaré que tal. Con la 13.04 también tengo pensado ver si me funciona el método que me comentaste hace unos días con los drivers AMD.
      Gracias de nuevo.
      Gracias de nuevo.

      Me gusta

    2. Hola,
      hoy he probado de realizar el proceso otra vez, y no me sale ningún mensaje, pero el script tampoco funciona, ya que los gráficos siguen en su configuración por defecto.
      De todos modos, antes que nada, puedes probar de teclear el comando ls -l /proc. Con esto podrás mirar si identificas el archivo ‘cmdline’, para comprobar si existe o no.

      Hay una cosa que me olvide de comentar en el post, y es que para habilitar el switch en los gráficos, es posible que necesites dotar al archivo ‘/sys/kernel/debug/vgaswitcheroo/switch’ de permisos de ejecución. Puedes hacerlo con los comandos:

      # chown -R nombredeusuario:nombredeusuario /sys/kernel/debug
      # chown nombredeusuario:nombredeusuario /sys/kernel/debug/vgaswitcheroo/switch

      Esto es para el mecanismo vgaswitcheroo, que solo funciona si no hay controladores privativos instalados en tu sistema. Espero que te sirva, si no coméntame que tal.

      Me gusta

Responder

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