Kicsit folytatnám a kernel-fordítás thread-et. Kaptam ugyanis egy levelet, amelyben egy kedves ismeretlen segítséget kért. Sajnos nem tudtam annyit segíteni, mint amennyit szerettem volna, ugyanis nekem nincs nvidia kártyám, ezért nem tudom hogy a lefordított kernelhez hogyan kell hozzá fordítani az nvidia driverét, de előkerült sokak régi ismerőse, a boot elején kiírt alábbi kernel üzenet:
kernel panic - not syncing VFS: unable to mount root fs on unknown-block (0,0)
Tegyük fel tehát, hogy a gépünkre szabott kernelt készítünk, initrd-t pedig nem akarunk használni. Az initrd pl. akkor kell, ha annyira általános célú a kernel, hogy nem tudjuk, mit tegyünk modulba ezért mindent abba teszünk. Viszont ha minden modulban van akkor értelemszerűen azokat fel kell tudni olvasni a merevlemezről és betölteni a memóriába. Ha viszont a merevlemezt kezelő kód is modulban van, akkor értelemszerűen nem tudjuk betölteni, mert nem tudjuk hogyan olvassuk a lemezt mert ahhoz az kéne hogy előbb
olvassuk a lemezt.
Az unknown-block jelentése: vagy nem tudja, hogyan kell kezelni a lemezt, vagy nem tudja értelmezni a rajta lévő fájlrendszert.
Következik egy kis történelem. A kernelben jelenleg (2.6.26.5-ös verzió) kétféle lemezkezelő modul van: Az ATA/ATAPI driver, ami még a 2.4-es szériában került be és lassan kikopik a kernelből, ugyanis anno amikor tervezték, még nem voltak SATA merevlemezek sem, illetve ez a memóriakártya-dömping sem. Az akkori kódot egy jó darabig foltozgatták aztán belekezdtek a vadonatúj LIBATA driverbe. Mindkettő elérhető jelenleg a kernelben, de ezek a kódok ütik egymást. Még ha sima IDE vinchestered is van, azt is sdX-nek látja az új LIBATA driver, és ez így is van jól (amúgy ezt a UUID-s hülyeséget is arra találta ki a Debian közösség, mert nem tudják hogy ki melyik drivert használja, és a normál IDE vinyók az ATA driverrel hda, hdb, ... -nek látszanak, a LIBATA-val meg sda, sdb, ... -nek. Tehát hogy a problémát megkerüljék, kitalálták hogy volume id-t használnak, ami meg más szempontból nem jó). A lényeg: használd a LIBATA drivert, mert az a jövő.
Leírom, hogy kb. én mit tartok beállításra érdemesnek. Ennek lényege, hogy a merevlemez hardverét és a fájlrendszer driverét mindenképp bele kell fordítani a kernelbe, hiszen nincs initrd, ami behúzza nekünk (ha meg van initrd, akkor annak a támogatását kell belefordítani). A kérdezőnek intel-es merevlemez vezérlője van (hogy kinek mi van, az ugye lekérdezhető az lspci paranccsal) - nyilván az alábbi beállításnál VIA chipset esetén a VIA-s drivert kell majd kiválasztani. Mindenki szabja a saját igényeire!
Device Drivers / ATA/ATAPI/MFM/RLL support ---> alatt:
y Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
y Include IDE/ATA-2 DISK support
y Include IDE/ATAPI CDROM support
n Include IDE/ATAPI TAPE support
n Include IDE/ATAPI FLOPPY support
m SCSI emulation support
y Intel PIIXn chipsets support (ez támogatja az ICH-s chipseteket,
gyorsabb lesz a vinyó mint a general támogatással)
Device Drivers / SCSI device support ---> alatt:
y SCSI device support
y legacy /proc/scsi/ support
y SCSI disk support
y SCSI CDROM support (ez nem biztos hogy kell de nem fáj ha van)
y SCSI generic support
n SCSI low-level drivers --->
Device Drivers / Serial ATA (prod) and Parallel ATA (experimental) drivers --->
y AHCI SATA support
y Intel PATA MPIIX support
y Intel PATA old PIIX support
Device Drivers / Multiple devices driver support (RAID and LVM) --->
Ha a telepítéskor LVM partícionálást választottál, akkor itt a "Device
Mapper support" alatt minden kell, különben nem fog megszólalni. (ezt
egyszerű megnézni, mert egy fdisk -l /dev/sda is "LVM" partíciókról
beszél, míg ha ilyen nincs, akkor a szokásos 0x83 Linux partíciót
írja).
File Systems alatt:
y Ext3 journalling file system support
y Ext3 extended attributes
(persze ha nem ext3-ad van, akkor a megfelelő fájlrendszer a kiválasztandó.)
File Systems CD-ROM/DVD Filesystems ---> alatt:
y ISO 9660 CDROM file system support
y Microsoft Joliet CDROM extensions
File Systems CD-ROM/DVD Filesystems ---> / Partition types alatt:
y PC BIOS (MSDOS partition tables) support
y Windows Logical Disk Manager (Dynamic Disk) support
Remélem, érthető. Tehát ahhoz, hogy bármi elindulhasson, már a kernelben kell lennie mindannak, ami a diszk eléréséhez kell: a merevlemez drivere, a partíció ismerete és végül a fájlrendszer ismerete. Ha ezek közül valamelyik is modulban van, értelemszerűen nem
tudja megszerezni ezért lepánikol.
Ha újabb kerneled van, elképzelhetőek változások. (Ez egy külön vitatéma lehetne, hogy milyen "jó" hogy a kernel bizonyos részeit fél évente újraírják, ezért a hozzájuk kötődő programok fejlesztőit az őrüeltbe kergetik.)