Battery Powered Linux Mini-HOWTO

Hanno Mueller, hanno@lava.de http://www.lava.de/~hanno/

Dec 21, 1997


Questo documento spiega come ridurre il consumo di energia di un sistema Linux modificando alcuni parametri della sua configurazione, il che sarà utile a chiunque usi Linux su un computer portatile. Ci sono anche alcune informazioni generiche sulla manutenzione delle batterie del vostro portatile. Se state usando Linux su un computer da tavolo, probabilmente non avete nessun bisogno di leggere questo HOWTO.

1. Introduzione

``Per bambini di 6 anni o più. Batterie incluse.''

1.1 Prima che lo chiediate

Questo documento non descrive l'installazione di Linux sui laptop, ma solo come ottimizzare per un laptop un sistema Linux già ivi installato. Per informazioni sull'installazione di Linux leggete l'Installation-HOWTO o il manuale del vostro distributore di Linux.

Questo documento non descrive nemmeno l'uso di un gruppo di continuità né del demone powerd , sebbene un UPS non sia altro che una grossa batteria. Tale argomento è trattato nell'UPS-HOWTO .

1.2 Di cosa parla questo documento

Sempre più persone ormai possiedono computer portatili e, di conseguenza, sempre più persone installano Linux su tali computer.

L'installazione e l'uso di Linux su di un laptop non è di solito un problema, perciò potete benissimo provare. Diversamente da altri sistemi operativi, Linux gira bene anche su hardware molto vecchio, permettendovi di dare nuova vita ad un anziano portatile semplicemente installandovi Linux.

Se vi serve aiuto con l'installazione di Linux su un computer portatile, o se avete domande sull'hardware dei portatili in genere, potete consultare l'ottima Linux Laptop webpage su http://www.cs.utexas.edu/users/kharker/linux-laptop/ dove troverete molte informazioni utili e un aiuto dettagliato. La Linux Laptop Page descrive la configurazione dell'hardware per specifici modelli di portatili e di chipset.

Questo HOWTO comunque si concentrerà sul problema comune di tutti i portatili: Il Consumo di Energia.

Non ho ancora trovato una distribuzione di Linux che comprenda una configurazione ottimizzata per i portatili. Così, visto che non ho trovato questo tipo di informazioni da nessun'altra parte, ho iniziato a raccogliere qualche semplice ed efficace trucco che potrà aiutarvi a risparmiare le batterie e quindi ad allungare l'autonomia del vostro sistema mentre è lontano da una presa di corrente.

(Nota. Ho ricevuto la lamentela di un lettore, il quale diceva che questi trucchi non erano molto utili con il suo portatile. Ma allora funzionano o no? Sì, ma non aspettatevi miracoli. Io sono stato in grado di portare l'autonomia del mio portatile da 90 a più di 120 minuti.)

1.3 Indicazioni utili

Se siete esperti di portatili potete probabilmente saltare la sezione Informazioni generiche. Se siete esperti di Linux, potrete trovare ciò che vi interessa davvero nella sezione Variazione di alcuni parametri generali del sistema. Se siete un distributore di Linux, leggete Messaggio ai curatori di distribuzioni Linux.

1.4 Suggerimenti

Qualsiasi suggerimento è bene accetto. Mandate per favore i vostri commenti a hanno@lava.de. I miei trucchi hanno funzionato sul vostro sistema? Avete nuovi consigli? Ci sono link obsoleti in questo testo?

Mi dispiace, ma non sarò capace di rispondere a domande su specifici modelli di portatili. Non pretendo di essere un mago dei laptop, semplicemente ne ho uno e voglio condividere con voi le informazioni che ho raccolto. Prima di contattarmi visitate la Linux Laptop webpage, probabilmente qualcun altro ha già scritto una pagina dedicata al vostro modello, oppure interrogate il supporto tecnico del produttore del portatile. Oppure chiedete a qualcuno nel newsgroup comp.sys.laptops .

1.5 Disclaimer

Tutti i metodi descritti qui sono stati testati da me ed hanno funzionato bene sul mio portatile, salvo avviso contrario. Comunque io non posso garantire che nessuno di essi bloccherà o danneggerà il vostro sistema. La vita è pericolosa, quindi fate copie di backup dei vostri file importanti prima di intervenire sulla configurazione di Linux. Se qualcosa va storto, io non mi assumo nessuna responsabilità per la vostra eventuale perdita di dati. In altre parole: non fatemi causa. Grazie.

1.6 Copyright

Questo documento sarà distribuito con l'avvertenza standard di copyright degli HOWTO, reperibile nella cartella HOWTO su http://sunsite.unc.edu/mdw/linux.html.

2. Informazioni generiche

Questa sezione descrive alcuni dettagli tecnici sulle batterie dei portatili e alcuni generici consigli per il risparmio energetico. Tali informazioni non sono specifiche per Linux, e se siete pratici di computer portatili probabilmente le conoscete già.

2.1 Siate gentili con le vostre batterie

(Pregasi notare i ringraziamenti per questa sezione.)

Attualmente ci sono tre tipi di batterie normalmente usate per i computer portatili:

Anche se la forma delle batterie è la stessa, non è possibile sostituire semplicemente il vecchio tipo di batterie con le nuove: il processo di carica è diverso per ogni tipo di batteria.

Certi costruttori integrano il circuito di ricarica nell'alimentatore esterno del portatile, rendendo possibile il passaggio ad un nuovo tipo di batterie semplicemente cambiando l'alimentatore. Se l'alimentatore del vostro portatile usa un connettore proprietario con molte linee di alimentazione, probabilmente è il vostro caso.

Altri costruttori invece mettono l'unità di ricarica all'interno dello chassis, dove non è possibile sostituirlo in modo semplice con una unità più avanzata. Se il cavo del vostro alimentatore ha solo due linee per connettersi al computer (come il mio), l'unità di ricarica è probabilmente all'interno del portatile.

In caso di dubbio, chiedete al produttore se il vostro modello può montare una batteria di tipo più moderno.

Una batteria che non viene usata per molto tempo si scaricherà lentamente. E anche se le usate ogni riguardo, la vostra batteria dovrà essere sostituita dopo 500 - 1000 ricariche. Tuttavia non è consigliabile tenere acceso un portatile senza batteria collegato all'alimentazione di rete, perché la batteria - anche se vecchia o scarica - serve sempre come condensatore a elevata capacità, che protegge la macchina da sovratensioni o impulsi spuri provenienti dalla rete elettrica.

Dal momento che i costruttori cambiano la forma delle loro batterie ogni pochi mesi, potreste avere problemi per trovare una nuova batteria per il vostro laptop da qui a pochi anni. Comperate una batteria di riserva ora, prima che sparisca dagli scaffali dei negozi.

2.2 Risparmio energetico - Le cose ovvie

Ci sono alcune ovvie misure da prendere per ridurre il consumo energetico del vostro computer. Beh, forse non sono tanto ovvie, visto che non molte persone le adottano...

Bene, avete afferrato il concetto. Molte di queste restrizioni probabilmente vi porteranno a pensarci due volte prima di mettersi a lavorare sul serio con il vostro sistema Linux. (Il modo migliore di risparmiare energia durante l'uso a batterie è... di non fare assolutamente nulla. Questo allunga l'autonomia del mio portatile quasi del 100%).

Ora passiamo a qualche altra e più utile misura che risparmi energia senza disturbare il nostro lavoro.

3. L'Advanced Power Management

Tutti i computer portatili, ma anche molti desktop sono equipaggiati per l'APM, la circuiteria per ``advanced power management'' (``gestione avanzata della potenza''). Questo capitolo illustra come attivare il supporto APM nel vostro kernel di Linux. Chi già conosce bene Linux potrebbe trovarlo piuttosto noioso, quindi può saltare direttamente al prossimo.

3.1 Cosa può fare APM per voi

Non lo descriverò qui in dettaglio, per maggiori informazioni potete consultare la Linux APM drivers page su http://www.cs.utexas.edu/users/kharker/linux-laptop/apm.html. Tutto ciò che vi serve sapere è che con l'aiuto di APM la CPU può segnalare al BIOS i periodi di inattività, permettendogli di fare un po' di economia - p. es. riducendo il clock della CPU, spegnendo l'hard disk, la retroilluminazione dello schermo ecc,

L'APM è anche responsabile del modo ``system suspend'' (o ``sleep'') e del modo ``suspend to disk'' (o ``hibernation''). Un'altra buona caratteristica - ma non molto importante - è che con l'aiuto di APM, shutdown -h non fermerà semplicemente il sistema, ma lo spegnerà anche.

(A proposito, la maggior parte dei sistemi Linux mettono un comando shutdown -r nel loro /etc/inittab e lo eseguono come risposta ad un control-alt-delete. Io preferisco uno shutdown -h, in modo che alla pressione dei tre famosi tasti il mio portatile semplicemente si spegne).

Non tutti i costruttori implementano correttamente le funzioni APM nel BIOS, perciò alcuni portatili hanno dei problemi con i driver APM di Linux (se la vostra macchina ha dei problemi con l'APM, probabilmente si bloccherà durante il boot di Linux o al ritorno dallo stato di sospensione). Se non sapete qual'è il vostro caso, consultate la Linux laptop page per il vostro particolare modello.

3.2 Come abilitare il supporto APM in Linux

È facile, basta ricompilare il kernel di Linux. Consultate il Kernel-HOWTO se non sapete come fare.

Quando lo script di configurazione raggiunge la sezione ``character devices'', il valore di default per il pieno supporto dei BIOS APM nei kernel versione 2.0.30 o superiore è:

Advanced Power Management BIOS support: Yes
Ignore USER SUSPEND: No
Enable PM at boot time: Yes
Make CPU Idle calls when idle: Yes
Enable console blanking using APM: Yes
Power off on shutdown: Yes

Leggete bene i testi di aiuto forniti dallo script di configurazione: spiegano dettagliatamente il significato di ciascuna opzione, quindi non starò a ripeterli qui.

Se il BIOS del vostro sistema non supporta l'APM standard, alcune di quelle opzioni potrebbero bloccare il vostro sistema. Controllate tutte le capacità PM con il nuovo kernel per accertarvi che tutto funzioni come dovrebbe.

(Una nota sullo spegnimento della console: David Bateman mi dice che non dovrebbe essere abilitata perché può dare problemi con l'attuale versione di Xfree, la 3.2: ``I sintomi sono lo schermo spento all'avvio di X, che si accende non appena viene premuto un tasto. È un problema piccolo ma seccante. La prossima versione di Xfree avrà un ottimo supporto DPMS per molti dei chipset usati nei laptop, e dovrebbe includere il codice per lo spegnimento dell'LCD. Consultate la pagina di manuale di xset in XFree 3.2A'. David fa anche notare che la vita della retroilluminazione del vostro schermo è data dal numero di volte che questo viene spento e riacceso: ``Perciò è necessario un compromesso tra la vita delle batterie e quella del retroilluminatore.'')

(Aggiornamento: Con XFree 3.3, il mio laptop ha ancora questo problema. Mi è stato detto che sarà sistemato in una delle prossime versioni del kernel.)

3.3 Il supporto APM e i driver PCMCIA

Dopo aver ricompilato il kernel, non dimenticate di ricompilare anche i driver PCMCIA per Linux.

I driver PCMCIA precompilati forniti con la maggior parte delle distribuzioni Linux hanno il supporto per l'APM disabilitato, e il BIOS non può dire alla vostra scheda di spegnersi.

Dovreste inoltre ricompilare i driver ogni volta che passate ad una nuova versione del kernel e il vostro vecchio kernel aveva abilitata l'informazione sulle versioni dei moduli (questa opzione si trova nella sezione ``loadable module support'' della configurazione del kernel).

Per istruzioni dettagliate su come compilare i driver, leggete il PCMCIA-HOWTO o la Linux PCMCIA drivers homepage su http://hyper.stanford.edu/HyperNews/get/PCMCIA/home.html.

3.4 Il pacchetto apmd

Ora che avete installato il supporto APM, dovete procurarvi il pacchetto apmd dalla Linux APM drivers page. Non che sia assolutamente necessario, ma è una collezione di vari programmini molto utili. Il demone apmd controlla il comportamento della vostra batteria e vi avvertirà se siete a corto di energia. Il comando apm vi permetterà di fermare il vostro sistema con un comando da shell, e xapm vi mostrerà lo stato di carica della batteria.

(A proposito, se avete problemi con le schede PCMCIA dopo il ritorno dallo stato di sospensione, potete provare un altro pacchetto apmd su http://www.cut.de/bkr/linux/apmd/apmd.html. Questo scarica dalla memoria i moduli driver PCMCIA prima di andare in suspend e li ricarica quando il sistema riprende l'attività.)

Grant Taylor ha giocherellato un po' con il pacchetto apmd e ha scoperto diverse cosette utili.

Ha scoperto per esempio che l'hard disk del suo laptop dimentica il periodo di standby hdparm -S al ritorno da un suspend: ``Ho modificato apmd perché reimposti il valore ad ogni ritorno. Questo può essere una particolarità del mio sistema; ma è una cosa importante da fare...''

(Nota: Sul mio laptop è il BIOS che si preoccupa di stabilire il periodo di standby dell'hard disk e di reimpostare il suo valore al ritorno, perciò non ho potuto stabilire se questo piccolo problema sia generale o meno. Se anche a voi succede una cosa del genere, speditemi una email.)

Grant ha anche trovato un buon trucco per spegnere lo schermo con XFree86 e l'aiuto del pacchetto apmd: lo troverete là.

3.5 E se il mio portatile non supporta APM?

Se il BIOS del vostro computer non supporta APM (ma anche i più vecchi dovrebbero avere almeno dei timeout per lo spegnimento dell'hard disk e dello schermo), potete usare hdparm -S per definire il periodo massimo di inattività dell'hard disk. Questo sarà già molto, perchè l'hard disk consuma molta energia. Il vostro sistema dovrebbe avere installato hdparm, perciò leggetevi la pagina di manuale di hdparm per conoscere la sintassi dei comandi.

4. Variazione di alcuni parametri generali del sistema

Dopo aver installato e configurato Linux sul mio portatile, ho visto che accedeva all'hard disk ogni pochi secondi, anche se non c'erano utenti connessi al sistema, e l'hard disk non poteva mai entrare in standby. La diminuzione dell'attività sull'hard disk può aumentare molto la durata delle batterie, perciò ho messo insieme i seguenti argomenti.

Li ho testati tutti sotto RedHat 4.1, ma la collocazione di alcuni file di configurazione può essere diversa nella vostra distribuzione. (Se è così, fatemelo sapere.)

4.1 I demoni crond e atrun

Controllate se il vostro file /etc/crontab per caso lancia un processo ogni minuto. Spesso ci troverete atrun.

Con il comando at, potete impartire comandi da eseguire ad un certo istante nel futuro. Alcuni sistemi Linux usano un demone atd dedicato perchè se ne occupi, altri (p. es. RedHat) fanno eseguire atrun dal demone crond ogni minuto.

Sulla maggior parte dei sistemi questo non è veramente necessario perché è raro che i comandi at debbano essere eseguiti esattamente al momento stabilito. Così se trovate una riga come questa nel vostro /etc/crontab:

# Run any at jobs every minute
* * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun

potete tranquillamente sostituirla con:

# Run any at jobs every hour
00 * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun

Per maggiori dettagli leggete man 5 crontab. Alcune persone possono anche lavorare bene senza il demone crond, perciò se sapete cosa state facendo potreste anche decidere di disabilitarlo del tutto.

4.2 Il demone update / bdflush

In ogni momento Linux ha molti buffer di file aperti, così il sistema deve assicurarsi che i cambiamenti ai file vengano salvati sull'hard disk il più presto possibile. Altrimenti, quei dati potrebbero andare persi in caso di crash del sistema.

Di questo si occupa il demone update / bdflush. (Questi due nomi si riferiscono allo stesso programma, perciò potete usarli entrambi per lanciare il demone). Per default questo demone chiamerà flush ogni 5 secondi e sync ogni 30.

Con il mio hard disk Fujitsu questo causa un accesso ininterrotto. (Sembra che questo hard disk scriva su disco la sua cache RAM interna anche quando questa non è stata modificata. Ma questo dipende dal firmware del vostro hard disk: altri mi hanno detto che il loro hard disk va in standby anche senza le modifiche che seguono.)

Dal momento che Linux non va quasi mai in crash, ho aumentato entrambi gli intervalli di tempo a 3600 secondi (un'ora). Questo ha risolto tutto e ha fermato i continui accessi al disco. (Ma se il mio sistema andasse in crash ora ci sarebbero molti più file rovinati, naturalmente.)

Per la RedHat 4.1: In /etc/inittab, modificate la chiamata per l'aggiornamento in questo modo:

ud::once:/sbin/update -s 3600 -f 3600

Per la Suse 4.4.1: update è chiamato in /sbin/init.d/boot.

Per la Slackware: update è chiamato in /etc/rc.d/rc.S.

Leggete la pagina di manuale di update per ulteriori dettagli.

4.3 Il demone syslogd

Il demone syslogd si occupa dei vari log file del sistema Linux, situati nella directory /var/log. Per default syslogd scriverà sui file di log ogni volta che riceve un messaggio di sistema.

È possibile evitare questo facendo precedere, nel file /etc/syslog.conf, il nome del file di log da un trattino. Ecco un esempio dal syslog.conf del mio sistema:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none                  -/var/log/messages

Ancora una volta questo significa che in caso di crash del sistema, il messaggio che spiegava l'errore incontrato non verrà salvato su disco.

4.4 Il comando init

Durante la partenza del sistema i processi e i demoni iniziali verranno lanciati usando il comando init. Questo comando (sì, anche questo) chiama sync prima di creare ciascun processo.

Per evitare ciò bisogna rimuovere la chiamata a sync() nel codice sorgente e ricompilare il comando.

Per evitare problemi con buffer di file persi, dovreste aggiungere una chiamata a sync nello script /etc/rc.d/init.d/halt del vostro sistema, proprio prima che lo script esegua l'umount dei file system.

4.5 La partizione di swap

La partizione di swap di Linux è usata come memoria virtuale per aumentare lo spazio fisico di memoria: questa può essere un'altra ragione per accedere al disco. Se il vostro laptop ha già molta RAM o se le applicazioni che usate sono molto semplici (come vi), potrebbe essere una buona idea disabilitarla.

Questo naturalmente dipende da cosa avete in mente di fare. Con 4 o 8 Mb non è possibile fare a meno della partizione di swap, con 8 o 16 Mb potete usare senza problemi i programmi che girano in modo testo, e se usate poco il multitasking potete tranquillamente disabilitare lo spazio di swap. L'ambiente X-Windows richiede molta RAM e non dovreste usarlo senza la partizione di swap, a meno che non abbiate installati molto più di 16 Mb di RAM fisica.

(Nota: il mio portatile con 16 Mb e senza partizione di swap riesce a far girare una sessione emacs, quattro shell bash e contemporaneamente compilare un kernel senza esaurire la memoria. Per me è sufficiente.)

Se avete già installato una partizione di swap, potete disabilitarla facendo precedere al comando swapon nel file /etc/rc.d/rc.sysinit il carattere '#'. Se volete potete anche fare in modo che il sistema vi chieda durante la partenza se volete usare la partizione di swap. Per farlo, mettete le seguenti righe nel file /etc/rc.d/rc.sysinit (per la RedHat 4.1) o /sbin/init.d/boot (per la Suse 4.4.1):

echo "Devo usare la partizione di swap?"
echo "  0: No."
echo "  1: Sì."
/bin/echo "Scelta: \c"
read SWAPCHOICE

case "$SWAPCHOICE" in
    0)
        # Do nothing.
        echo "(Partizioni di swap disabilitate)"
        ;;
    *)
        # Start up swapping.
        echo "Attivazione delle partizioni di swap"
        swapon -a
esac

Così potete usare la partizione di swap quando siete collegati ad una presa di corrente, e disabilitarla se state usando le batterie.

4.6 Il demone webserver apache httpd

Sto usando il mio portatile per sviluppare e testare degli script cgi per siti web, perciò ci sto facendo girare un webserver locale. La configurazione standard è un po' troppo pesante, se tutto l'uso che ne fate è testare uno script o una pagina web ogni tanto.

Nel file httpd.conf, cambiate i valori di MinSpareServers e StartServers a 1. Questo sarà sufficiente per un piccolo sito locale di prova.

Se volete disabilitare il logging del webserver, dovrete ricompilare il demone httpd. Leggete la documentazione relativa per i dettagli.

Grant Taylor ha ricompilato il logging di apache e ha scoperto che questo ``non diminuiva affatto gli accessi al disco. Così ho usato un'altra soluzione, secondo me migliore: ho configurato apache in modo tale da farlo girare da inetd anziché da solo''. Leggete man inetd per ulteriori dettagli.

4.7 Il pacchetto XFree86

La configurazione di XFree86 per i portatili è una storia a sé. E ancora una volta devo raccomandarvi la Linux Laptop page, dove troverete molti consigli e aiuti.

L'oscuramento dello schermo di X rende solo nero lo schermo, ma non lo spegne. Come già detto nella nota sullo spegnimento della console, potete usare l'opzione DPMS di xset per questo. Comunque, questa caratteristica dipende dal bios e dal chip grafico del vostro portatile.

Grant Taylor usa questo setup per mettere a nanna il suo portatile con l'aiuto di apmd e lo screensaver:

# Run xscreensaver with APM program
xscreensaver -timeout 5 \
             -xrm xscreensaver.programs:apm_standby \ 
             -xrm xscreensaver.colorPrograms:apm_standby &

Nota: ``apm_standby è uno script suid in perl che permette solo a certe persone di dare il comando apm -S.''

4.8 L'editor emacs

Ok, emacs non è un editor, ma un modo di vivere. Ecco un consiglio da Florent Chabaud: ``Se usate emacs, forse avrete notato che l'editor esegue alcuni salvataggi automatici. Questo naturalmente è utile e non dovrebbe essere disabilitato, ma i parametri di default possono essere ottimizzati per l'uso su di un portatile.

Ho messo nel file /usr/share/emacs/site-lisp/site-start.el le due righe che seguono:

(setq auto-save-interval 2500)
(setq auto-save-timeout nil)

Queste disabilitano il salvataggio automatico a tempo, e dicono a emacs di salvare automaticamente ogni 2500 azioni sulla tastiera. Naturalmente se state scrivendo un testo questo valore dovrebbe essere ridotto, ma per un programmatore è sufficiente. Siccome viene contato ogni tasto premuto (compresi i tasti cursore e i tasti funzione), il limite di 2500 azioni viene raggiunto molto rapidamente.

4.9 Come trovare altre ottimizzazioni

Se il vostro sistema Linux accede ancora troppo spesso all'hard disk potete scoprire cosa sta succedendo con il comando ps ax. Questo vi mostrerà tutti i processi attivi e il loro nome completo: a volte riporta anche le opzioni con cui sono stati lanciati.

Ora leggete la pagina man di ciascun processo per scoprire cosa fa e come cambiare il suo comportamento: con questo metodo troverete quasi certamente il processo responsabile. Potrebbe tornarvi utile anche il comando strace.

Per favore, se trovate qualcosa di nuovo, mandatemi una email.

5. Appendice

5.1 Messaggio ai curatori di distribuzioni Linux

Se per caso curate una distribuzione di Linux, grazie per aver letto tutto questo. I portatili stanno divenendo sempre più popolari, ma la maggior parte delle distribuzioni Linux non sono ancora ben preparate per l'uso su tali macchine: vi prego di adattare questo documento alla vostra distribuzione.

Vi prego di farmi sapere se avete ottimizzato la vostra distribuzione per computer portatili e quali funzioni e pacchetto avete aggiunto a questo scopo: le future versioni di questo HOWTO comprenderanno una sezione in cui potrete reclamizzare le caratteristiche portatili della vostra distribuzione.

5.2 Ringraziamenti

5.3 Su questo documento

Questo testo nomina le batterie 53 volte.

La corrente versione di questo e di molti altri HOWTO, la maggior parte molto più utili di questo, può essere reperita nel sito principale di documentazione per Linux http://sunsite.unc.edu/mdw/linux.html o in uno dei suoi molti mirror.

La maggior parte di questo testo è stato scritto durante i miei viaggi fra Amburgo e Hannover sulle ferrovie tedesche. (le nuove carrozze ice-2 hanno prese di corrente per i portatili... evviva!).

E ora ripetete il mantra con me: ``...on the road again...''

Traduzione a cura di: Massimo Soricetti <maxsoricetti@geocities.com>.