Old:ACPI e DSDT: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
(ampliato intro e aggiunto informazioni) |
|||
Riga 1: | Riga 1: | ||
== | ==Introduzione== | ||
===ACPI (Advanced Configuration and Power Interface)=== | |||
Il problema del supporto delle ACPI in linux risiede nella parziale compatibilit� della tabella DSDT inclusa nel kernel. La DSTD ('''Differentiated System Description Table''') � una tabella che contiene e fornisce un blocco di informazioni sul sistema a basso livello (batteria, luminosit� LCD, pulsanti Fn, �). Purtroppo, molti fornitori di hardware non sono capaci di fornire le tabelle completamente funzionali secondo gli standart ACPI. | |||
== | ==Aggiornamento del BIOS== | ||
Per cominciare � indispensabile aggiornare il BIOS con l�ultima versione disponibile, sperando che la nuova versione contenga una tabella DSDT compatible con il kernel di linux. | |||
==Installazione nel kernel del supporto ACPI== | |||
Per prima cosa � necessario compilare il kernel con il supporto ACPI. Le sezioni del kernel necessarie per la compilazione sono le seguenti: | |||
<pre>ACPI (Advanced Configuration and Power Interface) Support ---> | |||
ACPI Support ---> | |||
<*> AC Adapter | |||
<*> Battery | |||
<*> Button | |||
<*> Processor</pre> | |||
==Strumenti per lavorare con le DSDT== | |||
Per potere leggere e compilare una DSDT � necessario scaricare il compilatore ASL della Intel da: | |||
<pre>http://developer.intel.com/technology/iapc/acpi/downloads.htm</pre> | |||
A dipendenza del metodo di integrazione delle nuove tabelle DSDT � possibile scegliere di inserirle: | |||
<pre>DSDT da compilare staticamente con il kernel da: | |||
<pre> | ftp://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/release/ | ||
DSDT da inserire nell�initrd: | |||
http://gaugusch.at/kernel.shtml</pre> | |||
===Installare il compilatore ASL=== | |||
Per installare il compilatore ASL eseguire i seguenti passi: | |||
<pre>$: tar -zxvf acpica-unix-20050624.tar.gz | |||
$: cd acpica-unix-20050624/compiler | |||
$: make</pre> | |||
<pre> | ===Ottenere una DSDT=== | ||
� possibile modificare la DSDT attualmente installata e correggere gli errori e i problemi rilevati, estraendola da: | |||
<pre>$: cat /proc/acpi/dsdt > dsdt.dat</pre> | |||
Ci� creer� un file '''dsdt.dat''' che conterr� la DSDT compilata. Ora � necessario decompilarla con il compilatore ASL appena installato: | |||
<pre>$: iasl -d dsdt.dat</pre> | |||
<pre> | Verr� generato un file denominato '''dsdt.dsl''', che conterr� la DSDT. Questo file pu� essere tranquillamente editato con un editor di testi e modificato a seconda delle esigenze e dei problemi riscontrati. Una volta corretti gli errori ricompilare il file '''dsdt.dsl'''. | ||
<pre>$: iasl -tc dsdt.dsl</pre> | |||
Verranno generati due file dalla compilazione: | |||
*:dsdt.hex | |||
*:DSDT.aml | |||
{{ Warningbox | � possibile scaricare una custom DSDT gi� pronta e corretta da internet per molti portatili in commercio: http://acpi.sourceforge.net/dsdt/tables }} | |||
==Aggiornare il Kernel== | |||
Ci sono due modi per incorporare la nuova DSDT nel kernel. � possibile implementare i file '''dsdt.hex''' e '''DSDT.aml''' generati in modo statico o tramite initrd. | |||
*:Il primo modo � includere la DSDT staticamente nel kernel. Questo comporter� una ricompilazione del kernel al termine della procedura. Se usate questo metodo avete bisogno del file '''dsdt.hex'''. | |||
*:Il secondo modo � di passare la DSDT al kernel durante il caricamento nella fase di boot tramite initrd. Se usate questo metodo avete bisogno del file '''DSDT.aml'''. | |||
Il metodo initrd � probabilmente preferibile, particolarmente se dovete fare diversi cambiamenti alla vostra DSDT, perch� non richiede la ricompilazione del Kernel per ogni nuova DSDT generata. | |||
=== | ===Installazione Metodo statico=== | ||
� necessario installare una patch al kernel per far si che legga la nuova DSDT senza problemi. Una volta eseguita questa operazione copiate la nuova DSDT (.hex file) nella directory dei sorgenti del kernel. | |||
Scaricare la patch a questo indirizzo: | |||
<pre>ftp://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/release</pre> | |||
<pre> | Patchate il kernel, spostandovi nella directory dove sono presenti i sorgenti: | ||
<pre>$: cd /usr/src/linux-2.6.8 | |||
$: patch -p1 < /percorso_dove_avete_salvato_la_patch</pre> | |||
Se non appaiono errori, significa che il kernel � stato patchato correttamente. | |||
<pre> | Copiare il file dsdt.hex rinominandolo in dsdt_table.h nella directory dei sorgenti del kernel: | ||
<pre>$: cp dsdt.hex /usr/src/linux-2.8.6/include/acpi/dsdt_table.h</pre> | |||
Infine ricompilare il kernel. Se non ci sono errori al prossimo avvio del PC il supporto ACPI � caricato correttamente senza alcun problema. | |||
Questo | ===Installazione Metodo initrd=== | ||
Questo metodo permette di modificare la DSDT senza dover ricompilare il kernel. Questo metodo risulta efficace nel caso dovessimo modificare diverse volte la DSDT. | |||
Scaricare la patch a questo indirizzo: | |||
<pre>/ | <pre>http://gaugusch.at/kernel.shtml</pre> | ||
Patchate il kernel, spostandovi nella directory dove sono presenti i sorgenti: | |||
<pre>$: cd /usr/src/linux-2.6.8 | |||
<pre>$: / | $: patch -p1 < / percorso_dove_avete_salvato_la_patch</pre> | ||
� necessario assicurarsi che i seguenti moduli (ramdisk and initrd ) siano compilati staticamente nel kernel: | |||
<pre>Device Drivers ---> | |||
<pre> | Block Devices ---> | ||
<*> RAM disk support | |||
[*] Initial RAM disk (initrd) support</pre> | |||
Inoltre � necessario controllare che l�opzione '''Read DSDT from initrd''' � selezionata nel menu delle opzioni ACPI: | |||
<pre> | <pre>Power management options (ACPI, APM) ---> | ||
ACPI (Advanced Configuration and Power Interface) Support ---> | |||
[*] Read DSDT from initrd</pre> | |||
Se queste opzioni non sono abilitate, abilitarle e ricompilare il kernel. Se sono gi� abilitate non � necessario ricompilare il kernel. Ora il kernel � pronto ad accettare la DSDT con initrd. � necessario preparare initrd: | |||
<pre> | <pre>$: echo "INITRDDSDT123DSDT123" >> /boot/initrd-kernel-2.8.6.img | ||
$: cat DSDT.aml >> /boot/initrd-kernel-2.6.8.img</pre> | |||
Riavviare e controllare se il supporto ACPI funziona. Ricordarsi di aggiornare i bootloader! | |||
== | ==Siti ufficiali dei progetti== | ||
http://acpi.sourceforge.net | |||
http://www.acpi.info/ | |||
: | |||
Autore: [[Utente:Net deity|Net deity]] | Autore: [[Utente:Net deity|Net deity]] |