Utente:Clamiax

Da Wiki di NetBSD Italia.

< Utente:Clamiax

Il blog di Clamiax

2009 July 28 11:01:13 CEST
Postato da: Clamiax
Il blog di Clamiax
Discussione

Guardare i commit e' istruttivo

Proprio 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 tecniche

Commit relativi

Voce: Utente:Clamiax/BlogEntry: 2009 July 28 11:01:13 CEST

2009 June 28 20:07:15 CEST
Postato da: Clamiax
Il blog di Clamiax
Discussione

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!

Voce: Utente:Clamiax/BlogEntry: 2009 June 28 20:07:15 CEST

2009 June 11 10:02:23 CEST
Postato da: Clamiax
Il blog di Clamiax
Discussione

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:

  • per compilare e' necessario l'intero albero dei sorgenti (inclusi quelli delle architetture diverse da quella del sistema host)
  • non e' possibile disabilitare il supporto ACPI a causa di errori di compilazione
  • non e' possibile, forse a causa del punto precedente, disabilitare solamente il supporto noapic (che per quello che ho capito e' il vero artefice della lite fra i due supporti) lasciando l'ACPI attivo.

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.

Voce: Utente:Clamiax/BlogEntry: 2009 June 11 10:02:23 CEST

2008 September 15 10:20:31 CEST
Postato da: Clamiax
Il blog di Clamiax
Discussione

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! ;-)

Voce: Utente:Clamiax/BlogEntry: 2008 September 15 10:20:31 CEST

Strumenti personali
Strumenti