Monthly Archives: October 2006

Linuxday 2k+6

Che dire di questo Linuxday appena passato? E’ andato molto bene…

Avevamo molte più macchine rispetto all’anno precedente, grazie al supporto dell’ITIS A. Volta e di KeStudio (Negozio di informatica di Melegnano) oltre a quello del comune e dell’Informagiovani.

La voglia di fare bene non è mancata, soprattutto da parte di Matteo e Samuele, che sono stati determinanti per la buona riuscita di tutta la giornata. Vorrei in particolare ringraziare loro, per la pazienza e l’impegno, ma anche tutti gli altri membri del LOLUG.

Io putroppo ho partecipato meno perchè sono stato “distratto” da un esame (Crittografia) fissato il giorno prima (27/10) e, del quale, il prof si è dimenticato (infatti l’ho fatto oggi).

Stiamo a vedere se il processo “total world domination” è iniziato :-D :-P

RTFM tee-shirts

Oggi sono arrivate le tanto aspettate e bellissime magliette. Le ho ordinate in collaborazione con Matteo (ne abbiamo presa una a testa, e lui si è preso anche questa che è spettacolare ma off-limits per le mie finanze).

Questa è la maglietta indossata da Roy in “The IT Crowd”, una sit-com inglese sul mondo dell’IT. Dalla homepage potete scaricare le 6 puntate in inglese, ma solo se provenite dal regno unito (o da un proxy inglese ;-) ).

Update 17/10/2006@21:35 Ecco uno spezzone della sit-com:

Compilazione e installazione del modulo rtl8180-sa2400-dev (FC5)

E’ una settimana buona che tento di compilare questi driver su Fedora Core 5 per usare la scheda Netgear MA521 (con ndiswrapper non funziona bene).

I problemi (ora risolti :-) ) sono molteplici e sono dovuti al fatto che i driver non sono aggiornati (neanche quelli sul cvs) rispetto alla versione del kernel.

Andando sul sito ufficiale, scaricando i driver rtl8180-sa2400 (sia la versione stabile (fino al kernel 2.6.12) che quella “-dev” dal cvs) e compilandoli, succede una cosa molto strana: il make cancella tutti i sorgenti.

bash-3.1$ make
make -C /lib/modules/2.6.17-1.2187_FC5/build
SUBDIRS=/usr/local/src/rtl8180-sa2400-dev
MODVERDIR=/usr/local/src/rtl8180-sa2400-dev modules
make[1]: Entering directory `/usr/src/kernels/2.6.17-1.2187_FC5-i686′
rm: cannot remove `/usr/local/src/rtl8180-sa2400-dev/CVS’: Is a
directory
make[1]: *** [crmodverdir] Error 1
make[1]: Leaving directory `/usr/src/kernels/2.6.17-1.2187_FC5-i686′
make: *** [2.6] Error 2

Infatti, la directory non contiene più file (questo problema si riscontra anche per i driver scaricati dal sito della realtek):

bash-3.1$ ls
CVS
bash-3.1$

Ho lanciato make con l’opzione -n che mi visualizza i comandi che vengono invocati senza eseguirli:

bash-3.1$ make -n
make -C /lib/modules/2.6.17-1.2187_FC5/build
SUBDIRS=/usr/local/src/rtl8180-sa2400-dev
MODVERDIR=/usr/local/src/rtl8180-sa2400-dev modules
make[1]: Entering directory `/usr/src/kernels/2.6.17-1.2187_FC5-i686′
mkdir -p /usr/local/src/rtl8180-sa2400-dev
rm -f /usr/local/src/rtl8180-sa2400-dev/*

test -e /usr/src/kernels/2.6.17-1.2187_FC5-i686/Module.symvers || ( \
echo; \
echo ” WARNING: Symbol version
dump /usr/src/kernels/2.6.17-1.2187_FC5-i686/Module.symvers”; \
echo ” is missing; modules will have no dependencies and
modversions.”; \
echo )

Le righe in grassetto sono le righe incriminate (in particolare la seconda), il make crede che la directory corrente sia anche la directory temporanea, quindi prima la crea e poi la svuota (probabilmente nel caso ne esista già una e non riesca a crearla [ma questo non dovrebbe farlo la direttiva clean?])

Per risolvere il problema bisogna aprire il Makefile e modificare:

$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) MODVERDIR=$(PWD) modules

in

$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules

oppure

$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) MODVERDIR=$(PWD)/qualchecosa modules

l’importante è che MODVERDIR non sia uguale alla directory in cui abbiamo i sorgenti, altrimenti verrà cancellata.

Ora abbiamo risolto il problema dei sorgenti cancellati; lanciando la compilazione si ottiene un altro errore:


bash-3.1$ make
make -C /lib/modules/2.6.17-1.2187_FC5/build
SUBDIRS=/usr/local/src/rtl8180-sa2400-dev
MODVERDIR=/usr/local/src/rtl8180-sa2400-dev/tmp modules
make[1]: Entering directory `/usr/src/kernels/2.6.17-1.2187_FC5-i686′
CC [M] /usr/local/src/rtl8180-sa2400-dev/r8180_core.o
/usr/local/src/rtl8180-sa2400-dev/r8180_core.c:137: error: expected ‘)’
before string constant
/usr/local/src/rtl8180-sa2400-dev/r8180_core.c:140: error: expected ‘)’
before string constant
/usr/local/src/rtl8180-sa2400-dev/r8180_core.c:143: error: expected ‘)’
before string constant
/usr/local/src/rtl8180-sa2400-dev/r8180_core.c:146: error: expected ‘)’
before string constant
make[2]: *** [/usr/local/src/rtl8180-sa2400-dev/r8180_core.o] Error 1
make[1]: *** [_module_/usr/local/src/rtl8180-sa2400-dev] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.17-1.2187_FC5-i686′
make: *** [2.6] Error 2
bash-3.1$

Dopo giorni a pensarci ed a scrivere all’autore (che non ha risposto) ho scoperto che nel kernel 2.6.17 è stata rimossa la macro MODULES_PARM() ed è stata sostituita da modules_param(). Putroppo non ho trovato documentazione in merito quindi ho agito un po’ di istinto.

Aprire il file r8180_core.c e andare nella sezione simile a questa (intorno alla riga 130/150):


static char* ifname = “wlan%d”;
static int hwseqnum = 0;
static int hwwep = 0;
static int channels = 0x3fff;MODULE_LICENSE(“GPL”);

MODULE_DEVICE_TABLE(pci, rtl8180_pci_id_tbl);
MODULE_AUTHOR(“Andrea Merello <andreamrl@tiscali.it>”);
MODULE_DESCRIPTION(“Linux driver for Realtek RTL8180 / RTL8185 WiFi cards”);
MODULE_PARM_DESC(devname,” Net interface name, wlan%d=default”);MODULE_PARM(hwseqnum,”i”);
MODULE_PARM_DESC(hwseqnum,” Try to use hardware 802.11 header sequence numbers. Zero=default”);


MODULE_PARM(hwwep,”i”);
MODULE_PARM_DESC(hwwep,” Try to use hardware WEP support. Still broken and not available on all cards”);


MODULE_PARM(channels,”i”);
MODULE_PARM_DESC(channels,” Channel bitmask for specific locales. NYI”);


MODULE_PARM(hwwep,”i”);
MODULE_PARM_DESC(hwwep,” Try to use hardware WEP support. Still broken and not available on all cards”);


MODULE_PARM(channels,”i”);
MODULE_PARM_DESC(channels,” Channel bitmask for specific locales. NYI”);

E’ sufficiente sostituire alla macro MODULE_PARM(arg1, arg2), la macro module_param(arg1, tipo_di_dato_arg1, 0): il primo parametro rimane lo stesso, il secondo è il tipo di dato della variabile inserita come primo parametro (int per gli interi e charp per i puntatori char ad esempio) e il terzo è 0 (NOTA: Non sono sicuro al 100% che sia corretto).
Ora dovremmo ottenere (commentando le righe da sostituire):


//MODULE_PARM(hwwep,”i”);
module_param(hwwep,charp,0);
MODULE_PARM_DESC(hwwep,” Try to use hardware WEP support. Still broken and not available on all cards”);


//MODULE_PARM(channels,”i”);
module_param(channels,int,0);
MODULE_PARM_DESC(channels,” Channel bitmask for specific locales. NYI”);


//MODULE_PARM(hwwep,”i”);
module_param(hwwep,int,0);
MODULE_PARM_DESC(hwwep,” Try to use hardware WEP support. Still broken and not available on all cards”);


//MODULE_PARM(channels,”i”);
module_param(channels,int,0);
MODULE_PARM_DESC(channels,” Channel bitmask for specific locales. NYI”);

Una volta salvato il file e lanciata la compilazione con make, tutto dovrebbe funzionare.

cambio nick

Sono anni che, in rete, uso pj come nick, e sono anni che ne cerco un’altro che abbia più di due caratteri e possa essere utilizzato quando è necessaria una quantità minima di caratteri (solitamente gli username delle email).

Il nick pj è nato anni fa da un libro di Tom Clancy “Reazione immediata” (forse, non ricordo) dal quale avevano anche tratto un film con Harrison Ford che parlava di CIA, Politici americani, trafficanti colombiani, ecc. pj era un elicotterista, il cui nome completo era Pauls John.

Mi piacerebbe cambiare da pj a whitenoise. whitenoise significa rumore bianco. Il rumore bianco è un segnale con caratteristiche particolari (molto astratte) in cui ogni istante è indipendente dai precedenti. Avevo già sentito parlare di rumore bianco, ma mi ha affascinato particolarmente quando l’ho studiato per l’esame di IMAD LS quando si parlava di fattorizzazione spettrale.

Ovviamente sono un po’ indeciso, però whitenoise può essere abbreviato comodamente a wn quando è necessario. Mi spiace abbandonare il vecchio e caro nick, però è arrivato il momento di cambiare (lacrimuccia).

D’ora in poi sarò whitenoise.