Un Mac Address casuale? Grazie Asus!

Oggi mi sono imbattuto in una cosa assai curiosa: una scheda di rete che ad ogni riavvio cambia mac address! Sarebbe una cosa bellissima se fosse una scheda wifi e “dovessi” attaccarmi a scrocco a qualche rete wireless lasciando tracce confuse (esiste gi un programma che fa ci: macchanger), ma si tratta di un assemblato che dovr fare da piccolo file server usando Debian Etch (cos’altro senn?) e questo comportamento non mi piace per niente.
Questo quello che si legge a boot su una Debian Etch fresca di installazione (ed adeguatamente aggiornata):

Linux version 2.6.18-5-686 (Debian 2.6.18.dfsg.1-13etch5) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sat Dec 1 22:58:58 UTC 2007
.
.
.
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.56.
ACPI: PCI Interrupt Link [LMAC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:07.0[A] -> Link [LMAC] -> GSI 11 (level, low) -> IRQ 11
PCI: Setting latency timer of device 0000:00:07.0 to 64
forcedeth: using HIGHDMA
0000:00:07.0: Invalid Mac address detected: e9:27:1e:60:1d:00
Please complain to your hardware vendor. Switching to a random MAC.

Scavando e ravanando in Internet scopro che alcuni produttori di schede madre (Asus prima fra tutte) per risparmiare qualche soldo non impostano il MAC Adddress della scheda di rete in maniera permanente nella EEPROM (dove dovrebbe giustamente stare) ma lasciano che sia il BIOS a settarlo, durante il POST della macchina, nel MAC Register.
Fortunatamente gli sviluppatori del Kernel se ne sono accorti e hanno rilasciato una patch, inclusa dal febbraio 2007 nel Kernel.

La Soluzione? Scaricare, compilare un kernel ? 2.6.21 e installarlo sulla macchina. Per comodit mia e vostra di seguito un breve vademecum sulla compilazione del kernel su debian ;)


apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.12.tar.bz2
tar jxvf linux-2.6.23.12.tar.bz2
ln -s linux-2.6.23.12 linux
cd /usr/src/linux
make clean && make mrproper
cp /boot/config-`uname -r` ./.config // qui per comodit mi copio la configurazione del kernel 2.6.18 debian
make menuconfig // caricare il file .config con Load an Alternate Configuration File
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-endelwar kernel_image kernel_headers
cd ..
dpkg -i linux-*-2.6.23.12-endelwar_2.6.23.12-endelwar-10.00.Custom_i386.deb

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *