1 508
contributi
S3v (discussione | contributi) mNessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 3: | Riga 3: | ||
ACPI ('''Advanced Configuration and Power Interface''') è uno standard industriale aperto che definisce l'interfaccia tra S.O. e BIOS per l'amministrazione e la configurazione delle risorse di un PC. ACPI prevede che le informazioni a basso livello sul sistema (batteria, luminosità LCD, pulsanti Fn, ecc.) siano contenute nella DSDT ('''Differentiated System Description Table'''). | ACPI ('''Advanced Configuration and Power Interface''') è uno standard industriale aperto che definisce l'interfaccia tra S.O. e BIOS per l'amministrazione e la configurazione delle risorse di un PC. ACPI prevede che le informazioni a basso livello sul sistema (batteria, luminosità LCD, pulsanti Fn, ecc.) siano contenute nella DSDT ('''Differentiated System Description Table'''). | ||
Il problema principale del supporto ad ACPI in | Il problema principale del supporto ad ACPI in Linux risiede nella presenza di errori (ma anche di controlli espliciti su alcune caratteristiche peculiari del S.O. soprastante) nella tabella DSDT: purtroppo, molti fornitori di hardware non sono in grado, o non vogliono fornire tabelle DSDT completamente funzionali secondo gli standard ACPI. | ||
Per questo motivo, per utilizzare appieno le possibilità offerte da alcuni PC, soprattutto laptop, è necessario correggere la DSDT e istruire il kernel affinché nel processo di boot carichi la tabella fornita da noi invece di quella fornita dal BIOS. | Per questo motivo, per utilizzare appieno le possibilità offerte da alcuni PC, soprattutto laptop, è necessario correggere la DSDT e istruire il kernel affinché nel processo di boot carichi la tabella fornita da noi invece di quella fornita dal BIOS. | ||
==Aggiornamento del BIOS== | ==Aggiornamento del BIOS== | ||
Per cominciare è indispensabile aggiornare il BIOS con l’ultima versione disponibile, sperando che la nuova versione contenga una tabella DSDT con meno errori della precedente :P. | Per cominciare è indispensabile aggiornare il BIOS con l’ultima versione disponibile, sperando che la nuova versione contenga una tabella DSDT con meno errori della precedente :P. | ||
==Installazione nel kernel del supporto ACPI== | ==Installazione nel kernel del supporto ACPI== | ||
Per poter utilizzare ACPI è necessario disporre di un kernel in cui sia stato abilitato il supporto ACPI. Praticamente tutte le distribuzioni forniscono kernel precompilati con il supporto ACPI attivato. Nel caso, però, vi trovaste a dover (o voler) compilare autonomamente un kernel con il supporto ACPI, le voci necessarie sono le seguenti: | Per poter utilizzare ACPI è necessario disporre di un kernel in cui sia stato abilitato il supporto ACPI. Praticamente tutte le distribuzioni forniscono kernel precompilati con il supporto ACPI attivato. Nel caso, però, vi trovaste a dover (o voler) compilare autonomamente un kernel con il supporto ACPI, le voci necessarie sono le seguenti: | ||
Riga 21: | Riga 23: | ||
==Strumenti per lavorare con le DSDT== | ==Strumenti per lavorare con le DSDT== | ||
Per | Per poter leggere e compilare una DSDT è necessario il compilatore ASL di Intel, che in Debian esiste già precompilato a partire da Etch (attuale testing), altrimenti è liberamente disponibile per il download a [http://developer.intel.com/technology/iapc/acpi/downloads.htm questo] indirizzo. | ||
Per utilizzare la DSDT corretta sono disponibili due metodi: | |||
* il primo prevede l'applicazione di una [ftp://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/release/ patch per il kernel] e l'inserimento della nuova DSDT direttamente nel kernel, che quindi sarà da ricompilare ogni volta che si fanno cambiamenti alla DSDT; | |||
* il secondo inserisce la nuova DSDT all'interno dell'initrd, e quindi non necessita la ricompilazione del kernel, a patto che nel vostro kernel sia stata inclusa una [http://gaugusch.at/kernel.shtml patch apposita]. Al momento la patch menzionata è inclusa nei kernel delle maggiori distribuzioni (sicuramente in Debian, Ubuntu, Suse, e Mandriva). | |||
===Installare il compilatore ASL=== | ===Installare il compilatore ASL=== | ||
Uno dei motivi per cui le DSDT sono spesso difettose è che vengono compilate con il compilatore fornito da Microsoft, invece che con quello fornito da Intel. Curiosamente i sistemi Microsoft riescono ad evitare gli errori commessi dal compilatore della stessa società, mentre, come si può immaginare, la stessa cosa non succede per Linux. | Uno dei motivi per cui le DSDT sono spesso difettose è che vengono compilate con il compilatore fornito da Microsoft, invece che con quello fornito da Intel. Curiosamente i sistemi Microsoft riescono ad evitare gli errori commessi dal compilatore della stessa società, mentre, come si può immaginare, la stessa cosa non succede per Linux. | ||
Per installare il compilatore Intel è sufficiente avere nel <tt>sources.list</tt> un repository per | Per installare il compilatore Intel è sufficiente avere nel <tt>sources.list</tt> un repository per Etch, ed impartire, da root, il comando | ||
<pre> | <pre> | ||
# aptitude install iasl | # aptitude install iasl | ||
Riga 42: | Riga 45: | ||
===Ottenere una DSDT=== | ===Ottenere una DSDT=== | ||
È possibile ottenere la DSDT attualmente installata per poi correggere gli eventuali errori e problemi, copiandola da un file reso appositamente disponibile dal filesystem virtuale /proc: | |||
È possibile ottenere la DSDT attualmente installata per poi correggere gli eventuali errori e problemi, copiandola da un file reso appositamente disponibile dal filesystem virtuale <code>/proc</code>: | |||
<pre># cat /proc/acpi/dsdt > dsdt.dat</pre> | <pre># cat /proc/acpi/dsdt > dsdt.dat</pre> | ||
Riga 49: | Riga 53: | ||
<pre>$ iasl -d dsdt.dat</pre> | <pre>$ iasl -d dsdt.dat</pre> | ||
Verrà generato un file di testo denominato '''dsdt.dsl''', che contiene la DSDT. Questo file può essere | Verrà generato un file di testo denominato '''dsdt.dsl''', che contiene la DSDT. Questo file può essere aperto con un normale editor di testi e modificato a seconda delle esigenze e dei problemi riscontrati. | ||
Per vedere quali sono i problemi spesso è sufficiente ricompilare il file ottenuto: il compilatore ASL fornirà una serie di warning sulle ottimizzazioni che è possibile fare (e le farà automaticamente) ed, eventualmente, segnalerà degli errori, la cui soluzione può essere, ad esempio, ricercata su | Per vedere quali sono i problemi spesso è sufficiente ricompilare il file ottenuto: il compilatore ASL fornirà una serie di warning sulle ottimizzazioni che è possibile fare (e le farà automaticamente) ed, eventualmente, segnalerà degli errori, la cui soluzione può essere, ad esempio, ricercata su Internet. | ||
Ad ogni modo una lettura del codice della DSDT può essere istruttiva. Il linguaggio è abbastanza simile al C e con qualche minima conoscenza è possibile comprendere i principali costrutti logici. | Ad ogni modo una lettura del codice della DSDT può essere istruttiva. Il linguaggio è abbastanza simile al C e con qualche minima conoscenza è possibile comprendere i principali costrutti logici. | ||
Riga 66: | Riga 70: | ||
*: DSDT.aml | *: DSDT.aml | ||
{{ Warningbox | È possibile scaricare una custom DSDT già pronta e corretta da | {{ Warningbox | È possibile scaricare una custom DSDT già pronta e corretta da Internet per molti portatili in commercio: http://acpi.sourceforge.net/dsdt/tables }} | ||
===Un esempio: la mia DSDT=== | ===Un esempio: la mia DSDT=== | ||
Riga 233: | Riga 237: | ||
==Aggiornare il Kernel== | ==Aggiornare il Kernel== | ||
Come abbiamo già detto, è possibile inserire la tabella DSDT generata in modo statico nel kernel, oppure renderla disponibili tramite initrd. | Come abbiamo già detto, è possibile inserire la tabella DSDT generata in modo statico nel kernel, oppure renderla disponibili tramite initrd. | ||
Riga 240: | Riga 245: | ||
Il metodo initrd è probabilmente preferibile, | Il metodo initrd è probabilmente preferibile, soprattutto se dovete fare diversi cambiamenti alla vostra DSDT, perché non richiede la ricompilazione del kernel per ogni nuova DSDT generata. | ||
===Installazione Metodo statico=== | ===Installazione Metodo statico=== | ||
È necessario applicare una patch al kernel per far sì che sia in grado di leggere la nuova DSDT. | È necessario applicare una patch al kernel per far sì che sia in grado di leggere la nuova DSDT. | ||
Per fare questo ci spostiamo nella directory dove sono presenti i sorgenti: | Per fare questo ci spostiamo nella directory dove sono presenti i sorgenti: | ||
Riga 260: | Riga 266: | ||
===Installazione Metodo initrd=== | ===Installazione Metodo initrd=== | ||
Se usate un kernel standard Debian non è necessario ricompilare il kernel: è sufficiente posizionare la tabella DSDT nel posto giusto e ricreare l'initrd o l'initramfs. | Se usate un kernel standard Debian non è necessario ricompilare il kernel: è sufficiente posizionare la tabella DSDT nel posto giusto e ricreare l'initrd o l'initramfs. | ||
Per fare questo dovete prima verificare se il vostro kernel usa l'initrd o l'initramfs. | Per fare questo dovete prima verificare se il vostro kernel usa l'initrd o l'initramfs. | ||
Riga 333: | Riga 340: | ||
==Siti ufficiali dei progetti== | ==Siti ufficiali dei progetti== | ||
* http://acpi.sourceforge.net | * http://acpi.sourceforge.net | ||
* http://www.acpi.info/ | * http://www.acpi.info/ | ||
Riga 340: | Riga 348: | ||
Rivisto e corretto: [[Utente:Tindal|Tindal]] 17:37, Gen 27, 2006 (EST) | Rivisto e corretto: [[Utente:Tindal|Tindal]] 17:37, Gen 27, 2006 (EST) | ||
MZ | |||
[[Categoria:Laptop]] | [[Categoria:Laptop]] |
contributi