Come fare dunque a caricare i moduli del file system e del controller del disco prima di poter accedere al disco stesso? Per risolvere il problema abbiamo due possibilità: compilare i moduli in questione in modo statico (il boot-loader avrà dunque da subito accesso ai moduli senza doverli caricare) o creare un' initrd. Il metodo consigliato è sicuramente il primo, quello che invece utilizzate attualmente (se avete installato un kernel binario dai repository [default]) è il secondo. initrd sta per init ram disk. Si tratta di un piccolo file system il quale contiene i moduli relativi al boot (tra cui, proprio quello del file system e del controller del disco). Il boot-loader (ad es. GRUB) lo carica nella RAM e da qui è possibile caricare i moduli come se fossero in un disco. Con i moduli caricati potremo poi accedere al disco con il sistema. Tralasciando dunque questo metodo, come facciamo a carpire i moduli del file system e del controller del disco (per poterli compilare in modo statico)? Vediamo subito.
Moduli del file system
Le partizioni che ci interessano sono quella di root ("/") e quella di boot ("/boot") se non abbiamo un'unica partizione. Per vedere che file system è attualmente utilizzato su queste partizioni, digiteremo il comando:
$ mount | egrep "/ |/boot"
(notare lo spazio dopo il primo slash ["/ "]) che nel mio caso restituisce l'output:
/dev/sda2 on / type ext3 (rw,errors=remount-ro)
/dev/sda1 on /boot type ext2 (rw)
Per un avvio del sistema senza initrd dovrò dunque compilare come statici i moduli ext2 e ext3. Per fare ciò basterà andare in menu makeconfig e sotto la voce "File systems" selezionare questi moduli in modo statico:
File systems ---> <*> Second extended fs support [*] Ext2 extended attributes [*] Ext2 POSIX Access Control Lists [*] Ext2 Security Labels [*] Ext2 execute in place support <*> Ext3 journalling file system support [*] Ext3 extended attributes [*] Ext3 POSIX Access Control Lists [*] Ext3 Security Labels
onde evitare problemi, possiamo tranquillamente compilare tutte le voci relative al file system richiesto.
Moduli del controller del disco
Dopo questa prima parte dell'articolo abbiamo la possibilità di utilizzare gli strumenti a disposizione per cercare con uno script il controller del disco e i moduli che dovremo compilare nel kernel come statici. In ogni caso è dovere controllare la configurazione partendo da alcune configurazioni di "default". Incominciamo a rilevare il nostro disco:
$ lspci | egrep "IDE|SATA"