Utente:Clamiax
Da Wiki di NetBSD Italia.
< Utente:ClamiaxIl blog di Clamiax
Guardare i commit e' istruttivoProprio cosi'. Sono stato illuminato grazie a due banali commit effettuati su NetBSD Changes. In genere utilizzo i commit piu' importanti per allestire delle notizie tecniche sul wiki (vedi in basso). In effetti, anche solo questo e' sufficiente per incrementare lievemente le mie competenze relative ai sorgenti del sistema, a come vengono gestiti e quali file toccare in alcune occasioni; di certo non tutte visto che i campi applicativi e le possibili modifiche sono pressoche' infinite. Tuttavia, piu' passa il tempo e piu' ci si fa' un'idea piu' o meno chiara della situazione all'interno di src. Tra l'altro, quando ci sono piu' commit relativi alla stessa modifica, ci si rende chiaramente conto di cosa bisogna toccare quando si mettono le mani a quella categoria di sorgenti ed eventualmente come funziona quel supporto specifico. Mi piace definire questo sistema come kernel watching learning (KWL). Oggi ad esempio, motivo che mi ha spinto a bloggare, ho appreso due concetti banali se vogliamo, ma comunque indispensabili in alcuni casi. Innanzi tutto appare chiaro che se bisogna caricare un supporto dalla radice del kernel (la cosiddetta root) basta includere una chiamata a config_rootfound() direttamente in src/sys/kern/init_main.c, possibilmente all'interno di un #ifdef NOMESUPPORTO, come nel seguente codice (rimosso nel commit #1.396), facendo in modo che il kernel carichi tale supporto integrato come se fosse uno pseudo-device (non disattivabile dal file di configurazione del kernel in fase di compilazione): #if NGPIOSIM > 0 config_rootfound("gpiosim", NULL); #endif Inoltre, sembra conseguenziale il fatto che ogni chiamata a config_rootfound() puo' essere rimpiazzata da uno pseudo-device, allegerendo cosi' la radice del kernel; probabilmente e' per questo che dopo il commit #1.396, non c'e' piu' alcuna chiamata a tale funzione in init_main.c. Un altro dato meno importante ma altrettanto utile e' relativo al commit #1.317) che mostra chiaramente come aggiungere un nuovo supporto PCI al kernel: # Marvell Serial-ATA Host Controller attach mvsata at pci with mvsata_pci file dev/pci/mvsata_pci.c mvsata_pci Naturalmente il file mvsata_pci.c dev'essere presente altrimenti non solo non avrebbe senso il commit ma ci sarebbe anche un errore in fase di compilazione a causa del file mancante. Qualora si decidesse di includere un nuovo supporto ata(4), bastera' includere il file sorgente con un nome rilevante nella directory dev/ata/ ed aggiungere (almeno) le direttive attach e file all'interno del file dev/ata/files.ata. La logica vale per qualsiasi altro tipo di supporto. Grandioso! Chi avrebbe mai pensato che un kernel, per quanto complesso, avesse delle caratteristiche cosi' semplici? Ovviamente questo non basta ad essere kernel hackers ma avere una buona infarinatura, una visione generale, puo' semplificare la vita nella risoluzione dei problemi e magari, un giorno, nella scrittura del nostro primo supporto per il kernel. Happy commit! :-) Notizie tecnicheCommit relativi
|
Eccoci qua, ancora una volta. Va' benissimo anche senza audio e/o senza ACPI. Tutto sommato potro' benissimo fare a meno del supporto ACPI in favore di qualche Ogg Vorbis di BSDTalk di tanto in tanto. Ma questo maledettissimo rumore proprio non lo sopporto piu'! Mi privo letteralmente di stentare un briciolo di uptime(1) e di stare volentieri al PC per questo insopportabile e continuo, monotono, martellante ronzio della ventola che gira a velocita' folla per raffreddare i core della CPU che si aggirano entrambi intorno ai 60 gradi. Mi costringe a passare ore su un laptop con GNU/Linux! SNAFU. Tutto questo perche', per qualche bizzarro motivo, il supporto per l'Intel Enanched Speedstep Technology, che e' regolarmente supportato dalla mia CPU, non e' gestito da NetBSD. Non che il sistema non implementi tale tecnologia; semplicemente la mia versione non e' supportata (?). Stento a credere a quello che io stesso sto' dicendo... Giusto perche' nessuno e' stato ancora in grado di aiutarmi mi sono sentito in dovere, dopo qualche consiglio del buon vecchio amico leot, di rompere un po' i cosiddetti coglioni in giro per la comunita'. Il risultato dopo estenuanti videopoker ore di ricerche e discussioni su #NetBSD@Freenode e' stato questo post su netbsd-users. Che la comunita' me la mandi buona!
|
E' evidente che qualcuno nel BSD-paradise ce l'ha con me. Avevo risolto tutto, era tutto funzionante, l'orgasmo geek stava finalmente invadendo per l'ennesima volta il mio ego e il mio hardware. Era troppo bello per essere vero. Infatti, di punto in bianco, il signor azalia(4) ha pensato bene di venire a guastare la festa attaccando brighe col supporto acpi(4). L'effetto principale e' che l'audio semplicemente non funziona. O meglio, funziona la riproduzione di un qualsiasi file con un qualsiasi riproduttore si blocca in un ciclo infinito subito dopo l'avvio, ripetendo ininterrottamente il primo secondo del file. A questo punto, dopo il doveroso tentativo di avviare il sistema passando al comando boot del bootloader l'opzione -2 (disabilitando il supporto ACPI), mi ritrovo con l'audio che funziona e l'ACPI disabilitato. Inoltre, per una serie di bizzarri motivi, non posso disabilitare l'ACPI direttamente dal file di configurazione del kernel essendo costretto a impostare in /boot.cfg la flag -2 di default. Al di la' del fatto che non posso spegnere la macchina in maniera normale (cioe' come si farebbe con qualsiasi altro sistema operativo) c'e' l'anomalia del kernel, che piu' che un'anomalia sembrerebbe una collezione di sviste:
Insomma, una serie di considerazioni tecniche e in qualche modo etiche che per me sono inaccettabili. Per questo motivo, aihme', vi scrivo da un sistema FreeBSD (non pensavate davvero che avrei rimesso GNU/Linux!?) col quale non ho avuto assolutamente alcun problema eccetto per l'estrema scomodita' (pratica e mentale) causata dalla (il)logicita' del sistema. Una delle cose divertenti e' che ho dovuto caricare il modulo snd_hda per poter utilizzare l'audio ed e' stato necessario resettare lo stato del kernel relativo a kern.securelevel, il quale se impostato a 2 non consente la configurazione di X11 a causa dell'impossibilita' di caricare i moduli dei driver video. Apparte questo, non c'e' stato verso di disabilitare il cosiddetto boot selector (quello che su NetBSD compare qualora ci fosse il file /boot.cfg per intenderci) lasciando il normale prompt del loader. In compenso ho trovato un ottima infrastruttura per la gestione della tastiera in console; e' veramente potente questa impostazione. Qualsiasi spiegazione sarebbe inutile di fronte alla disarmante autoesplicazione del file per la keymap: # alt # scan cntrl alt alt cntrl lock # code base shift cntrl shift alt shift cntrl shift state # ------------------------------------------------------------------ 000 nop nop nop nop nop nop nop nop O 001 esc esc esc esc esc esc debug esc O 002 '1' '!' nop nop '1' '!' nop nop O [ ... ] Per invertire caps lock e backspace non ho dovuto fare altro che invertire i numeri (scan code) delle relative righe (ovvero 014 e 058) e utilizzare questo nuovo layout come predefinito. Non e' stato possibile utilizzare il layout dvorak normale e poi apportare solo questa modifica come si fa su NetBSD ad esempio, tramite la direttiva mapfile di wscons.conf(4). Tuttavia e' stato piuttosto comodo creare il layout dvoraky (la variante dvorakx gia' c'e') e utilizzarlo semplicemente come layout predefinito. Potrebbe essere istruttivo dare un'occhiata alla keymap del layout dvorak classico per farsi un'idea piu' ampia. Per concludere sottolineo solamente che mi piacerebbe capire perche' il backspace su ELinks non funziona. I misteri della fede... Ad ogni modo, complessivamente non mi lamento. Aspettero' anzioso che azalia e ACPI facciano pace per tornare nuovamente e definitivamente a NetBSD, stavolta sul PC primario.
|
Diversi mesi fa' si e' parlato su #NetBSD-it@Freenode di utilizzare questo wiki come punto di ritrovo per la comunita' offrendo anche la possibilita' di parlare, in modo personale, degli ultimi cambiamenti, delle caretteristiche del sistema, etc., condividendo considerazioni e punti di vista con il resto della comunita'. La discussione, allora, rimase solo argomento di conversazione senza trovare nessuna applicazione pratica. Questo finche' Leonardo Taccari non rispolverasse l'idea ponendosi in prima persona come potenziale blogger. Bene, questo e' il primo post di quel supporto che avrebbe consentito tutto questo: MyBlog. L'estensione MyBlog non e' ancora stabile ma e' l'unico codice utilizzabile e disponibile al momento. Per qualsiasi informazione o per eventuali problemi non esitate a contattarmi. Enjoy NetBSD, happy blogging! ;-)
|