Come risolvere l’uso eccessivo della CPU e la conseguente scarica della batteria su Ubuntu 12.10 (e derivate)

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 funzionino in modo corretto.

 

 

 

Potrebbero interessarti anche:
17 Comments

    Mirella

    Ciao Rino… mi si erono proprio illuminati gli occhi a leggere il tuo articolo…purtroppo però anche facendo in questo modo il mio PC, un HP Pavilion con scheda grafica ibrida Intel/AMD Radeon HD 7670M resta sempre un mezzo trattorino…devo usare jupiter per tenerlo buono selezionando il risparmio energetico…

      Rino Russo

      Ciao Mirella, la cosa mi pare strana e vorrei chiederti alcune cose. Hai disinstallato i driver proprietari e riavviato il pc prima di fare questa modifica? Dopo aver disinstallato i driver proprietari, hai verificato che i driver open source siano in uso?

    Mirella

    Ciao Rino… onestamente è la prima volta che installo Ubuntu, quindi l’unica cosa che ti posso dire è che ho cercato di seguire alla lettera le tue istruzioni…

    dal comando lspci -k | grep -A3 VGA
    ottengo:

    00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
    Subsystem: Hewlett-Packard Company Device 1840
    Kernel driver in use: i915
    Kernel modules: i915

    01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Thames XT/GL [Radeon HD 7600M Series]
    Subsystem: Hewlett-Packard Company Device 1840
    Kernel driver in use: radeon
    Kernel modules: radeon

    In questo momento ho reinstallato Ubuntu 12.10… riusciresti a guidarmi?

    grazie mille
    Mirella

      Rino Russo

      Ciao Mirella, credo di poterti guidare nella configurazione. Data la reinstallazione di Ubuntu 12.10, presumo che la ventola e la cpu siano a palla quasi immediatamente dopo aver acceso il pc. Prima cosa da fare è verificare quali driver sta usando il sistema al momento, potresti vederlo dal software center oppure tenta la disinstallazione diretta degli eventuali driver proprietari presenti.

      Parti da questo comando da terminale per eliminare i driver proprietari:

      sudo sh /usr/share/ati/fglrx-uninstall.sh

      sudo apt-get remove –purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx

      Eseguiti questi comandi riavvia il pc e prosegui…

        Mirella

        Ciao Rino… non sono nemmeno riuscita a partire, se provo a lanciare uqel comando mi da:

        sh: 0: Can’t open /usr/share/ati/fglrx-uninstall.sh

          Rino Russo

          Benissimo, vuol dire che i driver proprietari non sono installati.

            Mirella

            quindi vado avanti?

            Rino Russo

            si

    Mirella

    OK, esito secondo comando:

    lrx-dev* xorg-driver-fglrx
    [sudo] password for fabrizio:
    Lettura elenco dei pacchetti… Fatto
    Generazione albero delle dipendenze
    Lettura informazioni sullo stato… Fatto
    Nota, viene selezionato “xorg-driver-fglrx” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-kernel-source” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-amdcccle-updates” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “xorg-driver-fglrx-dev” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-driver-dev” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “xfree86-driver-fglrx” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-updates” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “glx-alternative-fglrx” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-control-qt2” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-updates-dev” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-dev” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-glx” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-modaliases” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “xfree86-driver-fglrx-dev” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-amdcccle” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-driver” per l’espressione regolare “fglrx_*”
    Nota, viene selezionato “fglrx-control” per l’espressione regolare “fglrx_*”
    Il pacchetto “fglrx-glx” non è installato e quindi non è stato rimosso
    Il pacchetto “fglrx-kernel-source” non è installato e quindi non è stato rimosso
    Il pacchetto “fglrx-modaliases” non è installato e quindi non è stato rimosso
    Il pacchetto “xfree86-driver-fglrx” non è installato e quindi non è stato rimosso
    Il pacchetto “xorg-driver-fglrx” non è installato e quindi non è stato rimosso
    Il pacchetto “fglrx-control-qt2” non è installato e quindi non è stato rimosso
    Il pacchetto “xfree86-driver-fglrx-dev” non è installato e quindi non è stato rimosso
    Il pacchetto “xorg-driver-fglrx-dev” non è installato e quindi non è stato rimosso
    Nota, viene selezionato “fglrx-amdcccle-updates” per l’espressione regolare “fglrx-amdcccle*”
    Nota, viene selezionato “fglrx-amdcccle” per l’espressione regolare “fglrx-amdcccle*”
    Nota, viene selezionato “xorg-driver-fglrx-dev” per l’espressione regolare “fglrx-dev*”
    Nota, viene selezionato “fglrx-dev” per l’espressione regolare “fglrx-dev*”
    Nota, viene selezionato “xfree86-driver-fglrx-dev” per l’espressione regolare “fglrx-dev*”
    Il pacchetto “xfree86-driver-fglrx-dev” non è installato e quindi non è stato rimosso
    Il pacchetto “xorg-driver-fglrx-dev” non è installato e quindi non è stato rimosso
    Il pacchetto “xorg-driver-fglrx” non è installato e quindi non è stato rimosso
    E: Impossibile trovare il pacchetto –purge

      Rino Russo

      Bene, prosegui con la creazione del file che permette l’attivazione della modalità ibrida.
      Prosegui col comando da terminale:
      sudo gedit /etc/initramfs-tools/scripts/local-top/hybrid_boot_options

      Rino Russo

      Ciao Mirella, come va?

    Mirella

    Ciao RIno,

    Mirella

    ti ho scritto una mail… perchè qui a volte non riesco a scrivere

    Giorgio A

    Ciao Rino, su quale notebook hai testato questa procedura? è valida anche per ubuntu 13.04?

      Rino Russo

      Ciao, la procedura l’ho provata su Acer Aspire e Samsung serie 5 su un Linux MInt 14 KDE. Poi sono passato a Kubuntu 13.04 ed ho utilizzato i driver proprietari forniti da Kubuntu ed installati dal repository ufficiale. Il tutto perfettamente funzionante senza bisogno di usare questa configurazione.

        Giorgio A

        lo chiedo perché avendo un Samsung serie 3 (con le stesse schede video tue) con ubuntu+gnome 3 ho avuto delle difficoltà utilizzando la procedura di default indicata sul sito AMD, quali driver proprietari hai installato tu su kubuntu del repository? I fglrx o gli fglrx-updates? ciao e grazie.

          Rino Russo

          Ciao Giorgio, ho avuto modo di verificare che a parità di schede video e pc al variare dell’ambiente desktop i driver fglrx funzionavano o meno. Ad esempio se usavo cinnamon non funzionava se invece usavo kde andavano. Quando ho deciso di usare KDE in modo definito è successo che andava solo fglrx-updates e fino ad ora sto usando quelli in modo sereno pur essendo passato a raring 13.04.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*
*

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.