web analytics

La CPU è sempre al massimo da quando usi Ubuntu 12.10 e derivate? Proviamo a risolvere…

Da
quando usi Ubuntu 12.10 quantal o sue derivate, hai notato che la
batteria del tuo pc si scarica subito? 
Hai notato che la CPU è sempre al
massimo? Hai notato che la ventola di raffreddamento è sempre al
massimo?
Non aver paura molto probabile che il problema sia
dovuto alla scheda grafica del tuo portatile come è altrettanto
probabile che sia una NVIDIA o una ATI/AMD Radeon e che i driver che
stai usando non sono quelli proprietari ma quelli open source della
stessa distribuzione.

E’ noto che questo tipo di schede video
proprietarie funzionino in modo regolare solo con i propri driver
proprietari senza i quali consumano in modo notevole la carica della
batteria in pochissimo tempo.
Purtroppo fino a Ubuntu 12.04 e
derivate, il problema veniva risolto installando i driver proprietari,
ma da qualche mese e specialmente chi possiede una scheda grafica AMD
Radeon anche installando i driver proprietari molte volte non risolve un
bel niente.
Allora cosa fare? Far finta che la batteria non si
scarica subito? Far finta che non si sente il rumore insistente della
ventola di raffreddamento al massimo?
Certo che no… in qualche caso possiamo risolvere questo problema pur mantenendo i driver open source. Vediamo come.
Molti
portatili con schede grafiche dedicate come NVIDIA o ATI/AMD sono
muniti di una seconda scheda grafica INTEL incorporata che in questi
casi è la nostra salvezza in attesa dell’uscita dei driver proprietari.
Premetto che la soluzione che propongo, e che io stesso ho adottato con successo, è una tra quelle indicate sul sito ufficiale di Ubuntu ma che ritengo la migliore.
Procediamo.
Prima di tutto dobbiamo verificare la presenza delle due schede grafiche digitando dal terminale questo comando:

lspci -k | grep -A3 VGA

dovremmo avere un risultato del genere

00:02.0
VGA compatible controller: Intel Corporation 2nd Generation Core
Processor Family Integrated Graphics Controller (rev 09)
Subsystem: Samsung Electronics Co Ltd Device c0c7
Kernel driver in use: i915
Kernel modules: i915

01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Thames [Radeon 7500M/7600M Series]
Subsystem: Samsung Electronics Co Ltd Device c0c7
Kernel modules: radeon
02:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)

dal quale si evidenzia la presenza delle due schede grafiche.

Ciò
che adesso dobbiamo fare è rendere predefinita la scheda INTEL al posto
della AMD Radeon per normalizzare il funzionamento del nostro pc e per
fare ciò useremo l’opzione di sistema vga_switcheroo durante la fase di
boot.

Creiamo il file /etc/initramfs-tools/scripts/local-top/hybrid_boot_options con questo comando da terminale:

sudo gedit /etc/initramfs-tools/scripts/local-top/hybrid_boot_options

copiamo dentro il file il seguente contenuto

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

########################################

A questo punto rendiamo il file eseguibile con questo comando:

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

Creiamo la nuova immagine di avvio con:

update-initramfs -c -k all

Apriamo il file /etc/default/grub con

sudo gedit /etc/default/grub

modifichiamo adesso la proprietà GRUB_CMDLINE_LINUX_DEFAULT in questo modo

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

ed aggiorniamo GRUB in questo modo

update-grub

Riavviare
il pc ed il gioco è fatto poichè abbiamo semplicemente fatto partire il
kernel attivando la scheda grafica integrata come primaria e
disattivando la secondaria come la nvidia o la amd.
Nel momento in
cui vogliamo riattivare la scheda grafica proprietaria, ad esempio
perchè sono usciti i driver proprietari compatibili, modifichiamo la
proprietà GRUB_CMDLINE_LINUX_DEFAULT nel file /etc/default/grub in questo modo.

Apriamo il file /etc/default/grub con

sudo gedit /etc/default/grub

modifichiamo adesso la proprietà GRUB_CMDLINE_LINUX_DEFAULT in questo modo

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

e
avremo la disattivazione della scheda grafica integrata e l’attivazione
di quella proprietaria nella speranza che i driver proprietari, che andremo ad installare,
funzionino in modo corretto.