Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 25 del 26/06/2011 16.18.02

Nascondi questo messaggio


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Alcuni portatili sono dotati di due schede grafiche: una per l'uso in applicazioni che richiedono molta potenza di calcolo, come i giochi, chiamata GPU dedicata, e una meno potente, a basso consumo energetico, chiamata GPU integrata. La GPU integrata è spesso situata nella CPU. Questo concetto si chiama Grafica Ibrida.

Come cambiare GPU

Il kernel fornito in Ubuntu 10.10 supporta la grafica ibrida per mezzo del flag vga_switcheroo.

È inoltre possibile compilare un modulo del kernel che consente di effettuare chiamate direttamente ACPI.

Abilitazione di vga_switcheroo

vga_switcheroo è il meccanismo del kernel che consente di cambiare tra le GPU. Per verificare se il kernel è compilato con l'opzione corretta si può esaminare il file config-2.6.nn-mm-generic nella directory /boot:

grep -i switcheroo /boot/config-2.6.* 

Il meccanismo vga_switcheroo sarà attivo solo quando il kernel verrà avviato con l'opzione "modeset = 1", e/o con l'opzione "nomodeset" assente. Per verificare se vga_switcheroo è abilitato, cercare il file switch:

ls -l /sys/kernel/debug/vgaswitcheroo/switch 

Uso di vga_switcheroo

Una volta che ci si è accertati che vga_switcheroo è disponibile, è possibile utilizzare queste opzioni per cambiare GPU.

echo ON > /sys/kernel/debug/vgaswitcheroo/switch 

Attiva la GPU che è scollegata (attualmente non guida uscite), ma non uscite di commutazione

echo IGD > /sys/kernel/debug/vgaswitcheroo/switch 

Connette la scheda grafica integrata con le uscite.

echo DIS > /sys/kernel/debug/vgaswitcheroo/switch 

Connette la scheda grafica dedicata con le uscite.

echo OFF > /sys/kernel/debug/vgaswitcheroo/switch 

Consente di disattivare la scheda grafica che è attualmente scollegata.

Ci sono anche un paio di opzioni che sono utili all'interno di una sessione X-Windows.

echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch 

Code di un interruttore per la grafica integrata che si verificano quando il server X è vicino riavvio.

echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch 

Code di un interruttore per grafica dedicata che si verificano quando il server X è prossimo riavvio.

Script per l'utilizzo all'interno di una sessione di X

Roberto Martinez ha creato uno script che crea una interfaccia grafica per scegliere tra le schede grafiche. L'ha rilasciato qui. Ma bisogna sostituire tutti i comandi:

killall-u "$ USER" "

del suo script con:

gnome-session-save - logout 

Per utilizzare questo script, gli utenti non root hanno bisogno delle autorizzazioni di scrittura sul file /sys/kernel/debug/vgaswitcheroo/switch. Se si esegue lo script con sudo, il computer si bloccherà, dato che lo script non può poi terminare la sessione corrente gnome in modo corretto.

Per avere permessi di scrittura permanenti al file switch, aggiungere la seguente riga a /etc/init.d/rc.local:

chown root:plugdev /sys/kernel/debug/vgaswitcheroo/switch 

giusto prima della riga "exit 0". Questo dà il permesso di passare le GPU a qualunque utente si trovi gruppo plugdev, che di solito è di tutti gli utenti regolari.

È inoltre possibile assegnare a questo script un hotkey globale andando su Sistema → Preferenze → Scorciatoie da tastiera. Si avrà bisogno di rinominare lo script di Roberto Martinez in qualcosa senza estensione .sh, di posizionarlo in /usr/bin con i permessi amministrativi e di assicurarsi che sia eseguibile. Testarlo eseguendo in un terminale:

switch_between_cards

E' possibile assegnare qualsiasi combinazione di tasti a piecere se non già definita. Le combinazioni Super G + o Ctrl + Alt + G funzionano bene.

Script per l'utilizzo durante l'avvio di sistema

Si consiglia di passaggio ad un adattatore grafico dato durante l'avvio, ad esempio per abilitare l'uscita per la GPU che Linux utilizza per interrogare le password per decifrare il volume di root (ed altri messaggi di avvio).

Oppure si consiglia di disabilitare una delle schede durante l'avvio per risparmiare la batteria.

Attualmente non ci sono opzioni del kernel per controllare il meccanismo vga_switcheroo, ma qui c'è uno script initramfs che compie lo stesso. Inserirlo in un file chiamato /etc/ initramfs-tools /scripts/local-top/hybrid_boot_options:

#
# 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 

Impostarlo come eseguibile e creare nuovi file initramfs con initramfs-tools:

chmod +x /etc/initramfs-tools/scripts/local-top/hybrid_boot_options
initramfs-tools -c -k all 

o, se il comando initramfs-tools non funziona:

update-initramfs -c -k all 

Ora, è possibile aggiungere una riga di comando per le opzioni di avvio del kernel in /etc/default/grub:

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

Risoluzione problemi

Ulteriori risorse