Old:ACPI e DSDT: differenze tra le versioni

m
(→‎Un esempio: la mia DSDT: aggiornamento e note)
Riga 41: Riga 41:
</pre>
</pre>


per il resto ho lasciato tutte le altre voci su NO.
per il resto ho lasciato tutte le altre nuove voci su NO (la maggior parte di esse serve, infatti, per attivare vari strumenti di debug).


Non ci resta che compilare il kernel:
Non ci resta che compilare il kernel:
Riga 47: Riga 47:
   $ fakeroot make-kpkg --append-to-version -realtime --revision 0.1 kernel_image
   $ fakeroot make-kpkg --append-to-version -realtime --revision 0.1 kernel_image


ed installare il pacchetto.
ed installare il pacchetto, per ulteriori informazioni su questo passaggio: [[Debian Kernel Howto]].


== Il modulo realtime-lsm ==
 
Per usare il server audio jack in realtime da utente normale � inoltre necessario compilare il modulo realtime-lsm. Su debian � semplicissimo, basta installare il pacchetto realtime-lsm-source e usare <tt>[[Pagina di manuale di module-assistant|module-assistant]]</tt> per compilare e pacchettizzare il modulo. Dopo aver fatto un boot del nuovo kernel basta il seguente comando:
== Modalit� realtime e realtime scheduling ==
 
La modalit� realtime � un particolare privileggio di esecuzione che un'applicazione pu� avere . Questa modalit� permette ad una applicazione di avere accesso alla CPU con la massima priorita (rispetto ad ogni altra applicazione in attesa) ogni volta che venga richiesto, impedendo inoltre che un'altra applicazione possa a sua volta interrompere l'esecuzione (a meno che non sia anch'essa realtime).
 
Questo permette di tenere in esecuzione applicazioni a bassa latenza, senza il rischio che altre applicazioni non-realtime possano disturbarle. Si capisce come questa modalit� sia importantisissima nelle applicazioni audio professionali (ad esempio una sessione di registrazione non verr� mai interrotta anche se molte applicazioni non realtime saturano la CPU!).
 
D'altro canto, questa modalit�, pone dei seri problemi di sicurezza dato che un'applicazione potrebbe (a causa di un errore o di un comportamento malevolo) occupare la CPU per un tempo indefinito, senza poter essere interrrotta, impedendo dunque la normale applicazione degli altri programmi.
 
Normalemente, quindi, solo root ha i privileggi per lanciare applicazioni in modalit� realtime. Questo � un problema, dato che (ad esempio) Jack e tutte le applicazioni che vi si connettono dovrebbero essere lanciate da root per poter funzionare in modalit� realtime, e questo costituirebbe un ancor pi� grosso problema di sicurezza.
 
Per risolvere il problema bisogna consentire l'uso della modalit� realtime anche a normali utenti ma in maniera "controllata".
 
Attualmente esistono due approcci per raggiungere lo scopo:
 
# Usare il modulo <code>realtime-lsm</code>
# Usare gli '''rlimits'''
 
Entrambi gli approcci possono essere usati sia con kernel vanilla che con kernel realtime-preemption.
 
 
=== Il modulo <tt>realtime-lsm</tt> ===
Il modulo <code>realtime-lsm</code> permette ad un normale utente inserito nel gruppo <code>audio</code> di eseguire applicazioni in modalit� realtime. Questo � il vecchio approccio, che verr� man mano sostituito nelle varie distro dall'uso degli rlimits (vedi oltre).
 
Su debian l'installazione del modulo molto semplice: basta installare il pacchetto <code>realtime-lsm-source</code> ed usare <tt>[[Pagina di manuale di module-assistant|module-assistant]]</tt> per compilare e pacchettizzare il modulo.  
 
In pratica, dopo aver fatto il boot del kernel per il quale si vuole installare il modulo, (e aver installato <code>realtime-lsm-source</code>) basta il seguente comando:


   $ m-a build realtime-lsm
   $ m-a build realtime-lsm


per copilare e creare un pacchetto per il modulo. A questo punto non ci resta che installare il pacchetto realtime-lsm creato.
per compilare e creare un pacchetto per il modulo. A questo punto non ci resta che installare il pacchetto <code>realtime-lsm</code> creato.
 
Questo modulo non � stato accettato (ne lo sar� mai) nel tree ufficiale del kernel per i potenziali problemi di sicurezza legati al suo utilizzo. In particolare per il suo corretto funzionamento devono essere attivate le seguenti voci di configurazione del kernel:
 
<pre>
Security options --->
[*] Enable different security model
<M>  Default Linux Capabilities
</pre>
 
''(l'ultima voce deve necessariamente essere un modulo!)''
 
Nei recenti kernel binari di Etch le precendenti condizioni non sono soddisfatte, percui il modulo '''realtime-lsm''' non funzioner� con tali kernel. Inoltre il modulo realtime-lsm � ormai ufficialmente deprecato in debian Etch.
 
In questi casi bisogner� ricompilare il kernel oppure usare l'approccio tramite rlimits.
 
=== Usare gli rlimits ===
 
E' gi� presente nel kernel un nuovo meccanismo pi� sicuro per concedere i privileggi di realtime chiamato rlimits che sostituisce completamente il modulo realtime-lsm.  


L'uso di questo modulo non richiede alcuna patch al kernel ed � usabilissimo anche con un normale kernel vanilla.  
Tuttavia, l'uso degli rlimits richiede una versione recente di PAM, la 0.80. Attualmente in Debian Sid ed Etch presente la 0.79 ma si pu� installare il pacchetto patchato o compilarlo seguendo le seguenti istruzioni:


Questo modulo non � mai stato accettato nel tree ufficilae del kernel per i potenziali problemi di sicurezza legati al fatto di dare i privileggi realtime ai processi dei singoli utenti. E' gi� presente nel kernel un nuovo meccanismo pi� sicuro per concedere i privileggi di realtime chiamato rlimits che sostituir� il modulo realtime-lsm. Tuttavia si dovr� aspettare che gli rlimits vengano inclusi nelle distribuzioni dato che � richiesto l'impiego di libc che li supporti. Attualmente, un metodo per usare gli rlimits senza cambiare libc, � quello di patchare PAM. Personalmente non ho ancora provato questa alternativa.
* [http://www.ubuntustudio.com/wiki/index.php/Breezy:Rlimits-Aware_PAM Rlimits-Aware_PAM]


== Conlusioni ==
== Conclusioni ==
Con un kernel cos� ottimizzato si raggiungono prestazioni realtime davvero spinte. Io ad esempio, con una modestissima SB Audigy 1 posso fare partire jack a 32 frame x 2 periodi @ 48000Hz (latenza 1.3 ms!) in modalit� solo playback. Qualche xrun avviene ancora a latenze cos� basse se si eseguono altre operazioni sulla macchina. Per avere la massima affidabilit� in full-duplex utilizzo usualmente jack a 128x2 @ 48000Hz.
Con un kernel cos� ottimizzato si raggiungono prestazioni realtime davvero spinte. Io ad esempio, con una modestissima SB Audigy 1 posso fare partire jack a 32 frame x 2 periodi @ 48000Hz (latenza 1.3 ms!) in modalit� solo playback. Qualche xrun avviene ancora a latenze cos� basse se si eseguono altre operazioni sulla macchina. Per avere la massima affidabilit� in full-duplex utilizzo usualmente jack a 128x2 @ 48000Hz.


223

contributi