Vivere da sysadmin fra GNU/Linux e Windows

Una piattaforma è come un abito, ti ci devi sentire comodo dentro. Se diventa il tuo vestito preferito, io ti aiuto a cucirtelo addosso. Se poi lo vuoi bianco o nero, a me poco importa, le forbici e il filo sono sempre gli stessi.

Abbiamo saltato il fosso

Ok, abbiamo iniziato la migrazione dei siti, proprio partendo dal mio. Siamo sotto il nuovo server e gestiti da ISPConfig. Quest’ultimo ha fatto qualche bizza, ma alla fine si è rassegnato a lavorare senza recalcitrare. Devo dire che il gestore di spam di posta lavora decisamente meglio che nel mio vecchio server e forse passare a Postfix da Qmail un paio di cosette le ha sistemate a questo riguardo.
La linea sembra finalmente più veloce.

Magari in settimana faccio una recensione di ISPConfig.

I driver Linux Realtek RTL8111(B)/RTL8168(B) e i programmatori dislessici

Se qualcuno avesse in mente di compilare i driver linux-r1000(103).zip per il kernel 2.6.x Linux, abbia la bontà d’animo di sopportare la caritatevole indulgenza di Realtek, che ha deciso di dare pane e lavoro a programmatori dislessici.

Se provate a compilare i sorgenti come modulo, infatti, vi troverete con una bella caterva di errori:


root@moveaway:/usr/src/r1000# make clean modules
make -C src/ clean
make[1]: Entering directory `/usr/src/r1000/src'
rm -f *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags
make[1]: Leaving directory `/usr/src/r1000/src'
make -C src/ modules
make[1]: Entering directory `/usr/src/r1000/src'
make -C /lib/modules/2.6.16.18/build SUBDIRS=/usr/src/r1000/src modules
make[2]: Entering directory `/usr/src/linux-2.6.16.18'
CC [M] /usr/src/r1000/src/r1000_n.o
/usr/src/r1000/src/r1000_n.c: In function ‘r1000_close’:
/usr/src/r1000/src/r1000_n.c:1450: error: ‘entdev’ undeclared (first use in this function)
/usr/src/r1000/src/r1000_n.c:1450: error: (Each undeclared identifier is reported only once
/usr/src/r1000/src/r1000_n.c:1450: error: for each function it appears in.)
make[3]: *** [/usr/src/r1000/src/r1000_n.o] Error 1
make[2]: *** [_module_/usr/src/r1000/src] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.16.18'
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/r1000/src'
make: *** [modules] Error 2
root@moveaway:/usr/src/r1000#

Ahi, ahi. Che è successo? Osservate la riga evidenziata in grassetto:

/usr/src/r1000/src/r1000_n.c:1450: error: ‘entdev’ undeclared (first use in this function)

Mmmmmmmm…..ma cosa è questa entdev?

All’interno della directory in cui è sono stati decompressi i sorgenti del driver si trova una directory

src

nella quale è presente il file

r1000_n.c

Apriamolo e posizioniamoci alla riga 1450:


#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) synchronize_irq (); #else synchronize_irq(entdev->irq);
#endif
free_irq (netdev->irq, netdev);

Notato qualcosa? Semplicemente netdev (NETwork DEVice) è magicamente diventato entdev, il tutto per 1 sola volta. Il che porta a una inconsistenza dei sorgenti. Come riparare il tutto? Semplicemente correggendo entdev in netdev:


#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) synchronize_irq (); #else synchronize_irq(netdev->irq);
#endif
free_irq (netdev->irq, netdev);

Ora non resta che lanciare una nuova compilazione:


root@moveaway:/usr/src/r1000# make clean modules
make -C src/ clean
make[1]: Entering directory `/usr/src/r1000/src'
rm -f *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags
make[1]: Leaving directory `/usr/src/r1000/src'
make -C src/ modules
make[1]: Entering directory `/usr/src/r1000/src'
make -C /lib/modules/2.6.16.18/build SUBDIRS=/usr/src/r1000/src modules
make[2]: Entering directory `/usr/src/linux-2.6.16.18'
CC [M] /usr/src/r1000/src/r1000_n.o
CC [M] /usr/src/r1000/src/r1000_ioctl.o
LD [M] /usr/src/r1000/src/r1000.o
Building modules, stage 2.
MODPOST
CC /usr/src/r1000/src/r1000.mod.o
LD [M] /usr/src/r1000/src/r1000.ko
make[2]: Leaving directory `/usr/src/linux-2.6.16.18'
make[1]: Leaving directory `/usr/src/r1000/src'

Il modulo è pronto:

root@moveaway:/usr/src/r1000# ls -lah src/r1000.ko
-rw-r--r-- 1 root root 23K 2006-07-06 10:31 src/r1000.ko
root@moveaway:/usr/src/r1000#

Non rimane che lanciare gli ultimi due comandi necessari per l’installazione del nuovo modulo e il suo caricamento automatico all’avvio:


make install
depmod -a

Con buona pace dei programmatori dislessici di Realtek…