Old:Low-latency 2.6 kernel per applicazioni audio realtime: differenze tra le versioni

m
nessun oggetto della modifica
m (categorie)
mNessun oggetto della modifica
Riga 1: Riga 1:
== Introduzione ==
__NOTOC__
Questa è una breve guida su come configurare il sistema per poter eseguire applicazioni audio realtime.
{|style="-moz-border-radius: 0.5em; width:100%; margin-top:+.7em; background-color:#F9F9FF; border: 1px solid #ccc"
|style="width:50%;color:#000"|
{| style="width:280px;border:solid 0px;background:none"
|-
| style="width:280px;text-align:center; white-space: nowrap; color:#000" |
<h1 style="font-size: 162%; border: none; margin: 0; padding:.1em; color:#000">
Indice delle Guide
</h1>
<div style="top: +0.2em; font-size: 100%">
Di seguito troverete l''''indice completo''' delle guide contenute su [[Guide@Debianizzati.Org:About|Wiki]].


Per chi non conoscesse il mondo dell'audio professionale su GNU/Linux consiglio questo magnifico sito introduttivo:
Potete anche navigare tra le guide scegliendo tra le '''[[Lista Categorie|categorie]]''' qua a destra.
</div>
|-
|}
<!-- ----------Portals Follow----------------------------- -->
|style="width:11%;font-size:95%;color:#000"|
* [[:Categoria:Apt|Apt]]
* [[:Categoria:Desktop|Desktop]]
* [[:Categoria:Hardware|Hardware]]
* [[:Categoria:Kernel|Kernel]]
|style="width:11%;font-size:95%;color:#000"|
* [[:Categoria:Laptop|Laptop]]
* [[:Categoria:Networking|Networking]]
* [[:Categoria:Shell|Shell]]
* [[:Categoria:Server|Server]]
|style="width:13%;font-size:95%;color:#000"|
* [[:Categoria:Sicurezza|Sicurezza]]
* [[:Categoria:Sistema|Sistema]]
* [[:Categoria:Tips&Tricks|Tips&Tricks]]
* '''[[Lista Categorie]]'''
|}


* [http://www.emillo.net/audio_midi emillo.net]


Ci sono '''due passi''' distinti illustrati nella guida: ''il primo'' è patchare un kernel 2.6 con la patch '''realtime-preemption''' di ''Ingo Molnar'' per ottenere un kernel con la più bassa latenza possibile; ''il secondo'' è invece permettere a normali utenti l'esecuzione di applicazioni in modalità realtime.


Il kernel 2.6 ha raggiunto ormai delle prestazioni molto buone per quanto riguarda la latenza (anni luce avanti rispetto al 2.4). Normalmente è dunque sufficiente configurare il sistema per permettere ai normali utenti di eseguire applicazioni realtime (''secondo passo'').
Questo Wiki - '''[[Guide@Debianizzati.Org:About|Guide@Debianizzati.Org]]''' - vuole essere prima di tutto un punto di raccolta ideale per le conoscenze acquisite dai singoli durante l'uso di '''Debian GNU/Linux''' in ambito casalingo e/o lavorativo, in modo che il sapere di uno diventi quello di tutti.


Se invece, si vuole non solo ridurre sotto la soglia (indicativa) dei ~ 5 ms la latenza minima ottenibile, ma soprattutto, aumentare notevolmente l'affidabilità del sistema nel rispettare le basse latenze bisogna usare la patch realtime-preemption (''primo passo''). E' questo il caso, ad esempio, se si vuole lavorare in full-duplex su diverse tracce in realtime, ''senza correre il rischio di xrun'' (ovvero interruzioni del flusso audio). Oppure se si vuole suonare un sintetizzatore software usando la minima latenza possibile.
Le guide ritenute meglio scritte e pi� approfondite, dopo un processo di controllo e revisione a cui tutti siete liberi di partecipare, vengono classificate [[:Categoria:Debianized|Debianized]] e contrassegnate dalla [[Debian Swirl]]: http://guide.debianizzati.org/images/swirl.png. Per ulteriori informazioni sul processo di revisione vedere: [[Aiuto:Contents#Evoluzione_delle_guide|Evoluzione delle guide]].


La patch realtime-preemption (per quanto perfettamente usabile) continua ad essere sviluppata incessantemente, e le release sono spesso giornaliere. Il kernel a cui si applica la patch è sempre l'ultimo kernel stabile o, spesso, l'ultimo RC. Nella guida, a puro titolo esemplificativo, mi riferirò ad un kernel e ad una versione di patch specifica, anche se queste versioni diventeranno presto obsolete.  
Potete trovare un elenco completo delle guide '''Debianized''' in [[:Categoria:Debianized|questa pagina]].
Segue la lista completa delle guide attualmente presenti:
__TOC__


{{Warningbox|Se non siete a vostro completo agio a compilare e patchare il kernel questa non è la via che fa per voi. Consiglio, in tal caso, di usare un setup per l'audio professionale pronto per l'uso, installando l'ottima [http://demudi.agnula.org/ distribuzione DeMuDi] (è una [http://wiki.debian.net/index.cgi?CustomDebian CDD]). Se volete invece informazioni dettagliate su come compilare il kernel alla ''debian-way'': [[Debian Kernel Howto]]. }}
== Mondo Debian ==
=== Introduzione a Debian ===
* [[L' Universo Debian]]
* [[La struttura della Distribuzione]]


== Dal kernel stabile all'RC ==
=== Installazione ===
Consiglio di compilare l'ultima versione stabile del kernel, configurandola e testandola fino ad ottenere una configurazione ben funzionante. Come spunto potete usare [[Esempio configurazione kernel|questa configurazione]]. Nel mio caso ho usato il kernel 2.6.13.2 e la [[Debian Kernel Howto|debian-way]] di compilare il kernel.
* http://guide.debianizzati.org/images/swirl.png [[Guida a Grub]]
* [[Jigdo | '''Jigdo''': Scaricare e Aggiornare le iso di Debian]]
* [[Note sull'installazione di Debian]]


La patch realtime-preemption più recente si applica solitamente ai kernel RC (Release Candidate). Questo perchè Ingo Molnar segue sempre il kernel più recente (quindi usa le RC come base di partenza per la sua patch). Quando viene rilasciato un nuovo kernel stabile Ingo Molnar rilascia pach per il nuovo kernel stabile, ma dopo alcune settimane passa nuovamente a seguire l'ultima RC uscita nel frattempo.
=== Gestione dei Pacchetti ===
* [[Introduzione all' Apt System]]
* [[I repository ed il loro utilizzo]]
* http://guide.debianizzati.org/images/swirl.png [[Pulire Debian]]
* [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
* [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
* [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
* [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
* [[Apt-spy: trovare i mirror pi� veloci | '''Apt-spy''': trovare i mirror pi� veloci]]
* [[APT uso avanzato: mixare releases diverse]]
* http://guide.debianizzati.org/images/swirl.png [[Impedire l' aggiornamento di un pacchetto]]
* [[Aptitude | '''Aptitude''': come amministrare i pacchetti]]


Quindi, si hanno due possibilità:
=== Creazione e modifica dei pacchetti ===
# compilare l'ultimo kernel stabile con l'ultima patch rilasciata per quel kernel
* http://guide.debianizzati.org/images/swirl.png [[Make-jpkg: Pacchettiziamo Java Sun| '''Make-jpkg''': Pacchettiziamo Java Sun]]
# compilare l'ultimo kernel rc e usare la versione corrente della pacth.
* [[Pacchetti binari e sorgenti]]
* [[Applicare una patch ad un pacchetto Debian]]
* [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
* [[Dpkg-sig: Firma dei packages .deb |  '''Dpkg-sig''': Firma dei packages .deb]]
* [[Pacchetizzare un tema per Bootsplash]]
* [[Backport da unstable in testing]]
* [[Pbuilder: compilazione in ambienti puliti]]


Attualmente l'ultimo kernel stabile, per il quale sia stata rilasciata la patch realtime preemption è il [ftp://ftp.it.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 2.6.14] (non i successivi 2.6.14.x). Per tale kernel l'ultima patch disponibile è la [http://people.redhat.com/mingo/realtime-preempt/older/patch-2.6.14-rt22 2.6.14-rt22], come si può vedere [http://people.redhat.com/mingo/realtime-preempt/older/ qui].
=== Gestione dei pacchetti Lato Server ===
* [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
* [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
* [[Creare un Repository Debian]]
* [[Gestione di un repository con debarchiver]]
* [[Usare apt-cacher per creare una cache dei pacchetti usabile in una LAN]]
* [[Dupload per l'upload dei pacchetti Debian]]


Se invece si vuole usare l'[http://people.redhat.com/mingo/realtime-preempt/ ultima patch] realtime-preemption (attualmente 2.6.15-rc5-rt2) bisogna usare anche l'[ftp://ftp.it.kernel.org/pub/linux/kernel/v2.6/testing/ ultimo kernel RC].
==Configurazione Sistema==
===Kernel===
* http://guide.debianizzati.org/images/swirl.png [[Debian Kernel Howto]]
* [[Esempio configurazione kernel]]
* [[Kernel2.6.10 - Framebuffer - Gensplash Patch]]
* [[Kernel 2.6 su Debian Woody]]
* [[Compilazione Kernel 2.6.11 con Bootsplash]]
* [[Pagina di manuale di module-assistant|Pagina di manuale di '''<tt>module-assistant</tt>''']]
* [[Low-latency 2.6 kernel per applicazioni audio realtime]]
* [[Script: Confronto Configurazioni Kernel]]


Per passare da un kernel stabile ad un RC basta fare un <tt>make oldconfig</tt> in modo da configurare solo le nuove voci. Questo metodo "a due passi" permette di separare i problemi dovuti ad un eventuale errore di configurazione del kernel stabile dai problemi potenzialmente introdotti dall'uso di un kernel RC non stabile.
===Sistema===
* [[SysV | Il sistema SysV per la gestione dei Runlevel]]
* [[Udev e Debian]]
* [[Configurare il server X in Debian GNU/Linux]]
* [[Linux Admin Quick Reference]]
* [[Debian: accelerare GTK con Cairo e Glitz]]
* [[Software Raid 1: configurazione e verifiche|'''Software Raid 1''': configurazione e verifiche]]


== La patch realtime-preemption ==
===Applicazioni Esterne===
L'archivio delle patch realtime-premption si trova a [http://people.redhat.com/mingo/realtime-preempt/ questo indirizzo]. La patch realtime-preemption usata di seguito (a puro titolo esemplificativo) è la 2.6.14-rc5-rt5, voi usate la versione più recente disponibile. La patch è un semplice file di testo. Il suo nome è del tipo <tt>patch-''<kernel version>''-''<patch version>''</tt>. Bisogna applicare la patch all'esatta versione del kernel indicata dal nome. Di seguito viene usata la [http://people.redhat.com/mingo/realtime-preempt/older/patch-2.6.14-rc5-rt5 versione rt5 applicata al kernel 2.6.14-rc5]. Tenete presente che nuove versioni della patch vengono rilasciate giornalmente.
* [[Pacchettizzare ed installare Xorg su Debian Sid]]
* [[Installazione Qemu con supporto accelerazione Kqemu]]
* [[ePSXe Emulatore Playstation]]
* [[Installare OpenOffice2 su Debian Etch]]
* [[DVD Backup: xDVDShrink per Debian]]


Per applicare la patch basta copiarla in <tt>/usr/src</tt>, entrare della dir del kernel e lanciare il comando, nel mio esempio:
===Altro===
* [[Dual Boot Debian-Altra distribuzione Linux]]
* [[Dual Boot Linux-Windows|Dual Boot Linux-Windows: usare il bootloader di windows]]
* [[Logging su MySQL]]
* [[Password sicure: la base della sicurezza informatica]]
* [[Script Bash per Avvio e Visualizzazione dati Seti@home]]


  $ cat ../patch-2.6.14-rc3-rt2 | patch -p1 -t
===Tips and Tricks===
====Bash====
* [[Bash tips]]: un elenco di trucchetti sull'uso interattivo e sullo scripting Bash
* [[Colorare bash]]
* [[Come abilitare il completamento automatico 'avanzato']]
* [[Un logout con schermo pulito]]
* [[Bash Script: Cambiare i permessi ricorsivamente]]
* [[Due simpatici login: welcome2l e linuxlogo]]


A questo punto nuovamente un <tt>make oldconfg</tt> ci permetterà di configurare le voci inserite dalla patch. Assicurarsi di scegliere '''Complete Preemption (Real-Time)''' in:
====Firefox====
* [[Firefox: Disattivare la ricerca con il tasto centrale]]
* [[Velocizzare Firefox per la banda larga]]
* [[Il vostro motore di ricerca da Firefox]]
* [[Aggiungere un motore di ricerca al quicksearch di Firefox]]


<pre>
====Altro====
Processor type and features --->
* [[Convertire immagini .nrg in immagini .iso]]
  Preemption Mode (Complete Preemption (Real-Time))
* [[Nautilus: navigare con una sola finestra]]
</pre>
* [[Associare a Thunderbird il browser preferito]]
* [[Antispam in Evolution con Bogofilter]]
* [[Impostare la lingua italiana nel sistema]]
* [[Impostare e modificare data e ora]]
* [[Impostare e modificare il layout della tastiera]]
* [[Abilitare_Xinerama | Multi monitor con Xinerama]]
* [[Abilitare ESound con ALSA in Gnome]]
* [[Cambiare il Tema dei Cursori per il Mouse]]
* [[Xfce e shutdown da utente]]
* [[Personalizzare il comportamento delle finestre con Devil's Pie]]
* [[Gimp: rendere un logo trasparente|'''Gimp''': rendere un logo trasparente]]
* [[Eseguire comandi con gli shortcuts di Gnome]]


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).
==Networking==
===Debian Server===
====Condivisione risorse====
* [[Directory shared tra macchine linux (nfs)]]
* [[Condivisione risorse con Samba]]
* [[sshfs | Montare una directory remota con sshfs]]
* [[Unison e la sincronizzazione di directory]]


Non ci resta che compilare il kernel:
====Mailing====
* [[Mail Server Sicuro con Postfix]]


  $ fakeroot make-kpkg --append-to-version -realtime --revision 0.1 kernel_image
====Http====
* [[Server Web Casalingo]]
* [[LAMP: Linux, Apache, MySQL e PHP]]
* [[XAMPP: Linux, Apache, MySQL e PHP facili]]
* [[Debian MapServer/MapScript]]


ed installare il pacchetto, per ulteriori informazioni su questo passaggio: [[Debian Kernel Howto]].
===Amministrazione===
====Gestione Remota/Locale====
* [[Wake On Lan | '''Wake On Lan''' per accendere i propri PC a distanza tramite la LAN]]
* [[Debian e il controllo di servizi e demoni]]
* [[Gestione della banda in Apache]]
* [[Ssh e autenticazione tramite chiavi]]
* [[Inetd e i servizi di rete]]


====Connettivita'====
* [[Condividere la connessione a internet]]


== Modalità realtime e realtime scheduling ==
===Sicurezza===
====Firewalling====
* [[Debian e iptables]]
* [[Firewall Builder]]
* [[Parametri a run-time per Netfilter]]


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).
====Monitoraggio & Scanning====
* [[Monitoriamo il Sistema]]
* [[Mrtg: monitoriamo la banda]]
* [[Cacti | Cacti: monitor di rete, per pi� computer]]
* [[Munin]]


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!).
====Proxy====
* [[Privoxy: navigazione sicura a prova di spam]]


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.
====Tunneling====
* [[Openvpn]]


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.
== Hardware ==
=== Fotocamere digitali e dispositivi di memorizzazione di massa removibili ===
* [[Usare Fotocamere Digitali|Usare Fotocamere Digitali (libgphoto2)]]
* [[Usare Fotocamere Digitali (usb-storage)]]
* [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
* [[Debian e iPod]]


Per risolvere il problema bisogna consentire l'uso della modalità realtime anche a normali utenti ma in maniera "controllata".
=== Modem e periferiche di rete ===


Attualmente esistono due approcci per raggiungere lo scopo:
* [[Debian e i Modem ADSL]]


# Usare il modulo <code>realtime-lsm</code>
==== Modem USB ADSL ====
# Usare gli '''rlimits'''
* [[Installare i driver conexant accessrunner]]
* [[Installare i driver eagle-adsl]]
* [[Installare i driver eci-adsl]] ''(stub)''
* [[Installare i driver unicorn (BeWAN)]] ''(stub)''
* [[Modem adsl Telindus ND220]]
* [[Modem adsl Aethra Starmodem]]
* [[Modem adsl Fastrate 100 USB]]


Entrambi gli approcci possono essere usati sia con kernel vanilla che con kernel realtime-preemption.
==== Modem Ethernet ====
* ''Inserire qui eventuali guide su modem ethernet''


==== Modem dial-up 56K ====
* ''Inserire qui eventuali guide su modem a 56K''


=== Il modulo <tt>realtime-lsm</tt> ===
==== Schede di rete Wireless ====
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). 
* [[Wireless Support | Informazioni sul supporto alle periferiche Wireless]]
* [[Script Bash abilitazione scheda wireless]]
* [[Intel PRO/Wireless 2200BG]]
* [[NdisWrapper | NdisWrapper: Usiamo i driver di Windows per il WLan con GNU/Linux]]


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.
=== Schede Video ===
* [[Installazione Driver ATI per schede ATI RADEON MOBILITY 9700 SE]]


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:
=== Stampanti ===
==== Stampanti USB ====
* ''Inserire eventuali guide su come far funzionare stampanti con porta USB''


  $ m-a build realtime-lsm
==== Stampanti con porta parallela ====
* [[Introduzione all'installazione di stampanti con porta parallela]]


per compilare e creare un pacchetto per il modulo. A questo punto non ci resta che installare il pacchetto <code>realtime-lsm</code> creato.
==== Stampanti bluetooth ====
* [[Introduzione all'installazione di stampanti bluetooth]]


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:
=== Scanner ===
* [[Epson Perfection 2480 photo - usb scanner]]
* ''Inserire qui eventuali altre guide su come far funzionare scanner con Debian''


<pre>
=== Palmari e cellulari ===
Security options --->
* [[Debian e Nokia 7210: uso di gnokii e gestione degli sms]]
[*] Enable different security model
* [[UMTS/GPRS PCMCIA card (3g)]]
<M>  Default Linux Capabilities
* [[Usare lcd4linux con un Palm]]
</pre>


''(l'ultima voce deve necessariamente essere un modulo!)''
=== Altro hardware ===
* [[I2c e lm-sensors|'''I2c e lm-sensors''': usare i sensori della scheda madre]]
* [[Gestire gli HD: stato di salute, badblocks e ripristino dati|'''Gestire gli HD:''' stato di salute, badblocks e ripristino dati]]


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.
==Portatili==
===Laptop Debianizzati===
Troverete di seguito i resoconti d'installazione di Debian su dei portatili:


In questi casi bisognerà ricompilare il kernel oppure usare l'approccio tramite rlimits.
* [[Debian on an HP nx8220 | Debian on an HP nx8220]]
* [[Debian on a presario 2141EU | Compaq Presario 2100 (2141EU)]]
* [[Debian on a compaq Presario 2154EA | Compaq Presario 2100 (2154EA)]]
* [[Debian on a Toshiba Satellite M30X-113| Toshiba M30x-113]] ''(stub)''
* [[Debian on a HP Compaq NX6110| HP Compaq NX6110]]
* [[Debian on an HP pavilion zv5422EA| HP pavilion zv5000 (zv5422EA)]]


=== Usare gli rlimits ===
===Altro===
* [[Powernowd: CpuScaling per AMD]]
* [[Cpufreqd: Cpuscaling per Intel Pentium M]]
* [[ACPI e DSDT]]
* [[Synaptics touchpad]]
* Inserire qui anche link a risorse in italiano sui portatili


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.
==Debian Live==
* [[Rimasterizzare una knoppix]]
* [[Damn Small Linux su chiavetta usb]]


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:
==Crittografia==
* [[Crittografia e Steganografia - L'Arte di nascondere le informazioni]]
* [[Chiavi simmetriche e chiavi pubbliche]]


* [http://www.ubuntustudio.com/wiki/index.php/Breezy:Rlimits-Aware_PAM Rlimits-Aware_PAM]
==Varie==
 
* [[Debian Fun]]
== 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.
 
In bocca al lupo e...
 
Happy Debian!
 
== Links ==
 
* http://www.emillo.net/home
* http://www.djcj.org/LAU/guide/index.php
* http://tapas.affenbande.org/?page_id=3
 
 
----
 
Autore: [[Utente:TheNoise|~ The Noise]]
 
[[Categoria:Kernel]]
1 760

contributi