moduli esterni e initrd
Sono ormai 4 giorni che sto' tentando di ricompilare il kernel sul mio
sistema per poter completare l'installazione di una woody, il mio
hardware e' piuttosto insolito per la distro in question a quanto sembra:
mobo ASUS A7N8X (chipset Nvidia nforce)
ATA raid 0 su pci ITE chipset IT8212F
Per quanto riguarda la scheda raid sul sito del produttore sono
disponibili i sorgenti del modulo che ho provveduto a compilarmi su un
altra linuxbox debian, ho poi provveduto a mettere il modulo in
questione (iteraid.o) su di un floppy msdos sotto la dir /boot e
all'atto dell'installazione di debian (bf2.4) ne ho effettuato il
caricamento: tutto bene i dischi vengono visti come unica unita' sda
con le varie partizioni.
Il problema mi si e' posto dopo aver completato l'installazione minima
perche' il kernel 2.4.18 nativamente,del mio sistema, non supporta l'AGP
gart, la scheda video, l'audio (integrato su nforce), e quel che e'
peggio entrambe le schede di rete di cui e' dotata la mobo (una nativa
nforce e l'altra 3com 3C920B-EMB).
Dopo aver letto un po' di documentazione mi fornisco del necessario per
aggiungere moduli e patch necessarie al kernel:
kernel patch per modulo 3com 3c59x
modulo nvnet
modulo nvaudio
modulo iteraid ( che gia' avevo)
Dopo non poche peripezie riesco grazie all'aiuto di un mio amico che
conosce piuttosto bene linux a debianizzare il modulo per il raid
(altrimenti non mi sarebbe stato possibile ricompilare il kernel alla
"debian way" ) e vi assicuro che e' stato davvero molto scoraggiante
questa esperienza: la documentazione sui file control e rules di debian
non e' poi cosi' approfondita, per fortuna ci siamo appoggiati a dei
moduli di nvidia gia' "debianizzati" per capire come funzionavano
altrimenti....
Insomma alla fine mi ritrovo con due pacchetti debian: il "nuovo" kernel
patchato 2.4.18 ed il modulo raid...
ora perche il tutto funzioni e' necessario utilizzare un ramdisk
affinche' il kernel possa caricarsi il modulo raid per poi montare la
root vera che si trova su di una partizione del raid.
Qui' mi sono nuovamente bloccato!!! Ho creato il kernel passando a
make-kpkg l'opzione "--initrd" dopo aver opportunamente configurato i
file sotto /etc/mkinitrd/ (aggiungendo iteraid a "modules" ed uno script
che mi sono fatto per copiarmi il modulo iteraid nel ramdisk a partire
da "/lib/modules/miokernel/iteraid/" e che ho messo sotto
/etc/mkinitrd/scripts ).
Ora quello che ottengo installando il kernel e' un ramdisk che contiene
un file loadmodules in cui compaiono due comandi:
modprobe -k iteraid (questo e' giusto secondo le mie direttive)
modprobe -k IT8212 (?? questo viene aggiunto dallo script mkinitrd
perche' immagino avendo l'opzione ROOT=probe capisce che ha bisogno del
modulo per il raid....)
nella sottodirectory lib/modules/2.4.18-20020224/ del ramdisk ho anche
(grazie al mio script) la dir iteraid che contiene iteraid.o.
Bene!! mi dico: finalmente ci sono riuscito!! Pazienza per l'altra voce
che tenta di caricare il modulo IT8212....ci pensero' dopo...
Controllo il lilo.conf, l'opzione initrd c'e'....vmlinuz punta al giusto
kernel....riavvio.....KERNEL PANIC!!!!!
Il ramdisk non riesce a trovare il modulo iteraid ne' l'altro IT8212!!!
eppure sul suo modules.dep iteraid e' elencato con la giusta path assoluta!!
Non so' piu' dove sbattere la testa....se lancio un lsmod dalla
instalazzione base che attualmente e' l'unica funzionante fra i moduli
caricati in memoria vedo anche iteraid quindi mi chiedo dove mkinitrd
veda quel IT8212 e sopratutto mi chiedo perche' non riesce a vedere il
modulo che mi sono compilato io che e' "iteraid" :-(
Scusate per la lunghezza ma volevo essere il piu' chiaro possibile
nell'illustrare il problema...
Andrea
Reply to: