HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Kernel-fordítás - tipikus hibák

2008.09.29. 13:13 bagoj ur

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.)

2 komment

Címkék: linux hogyan kernel konfigurálás

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr88687156

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nagyzo 2009.08.07. 12:32:53

A kernel fordítás még messze áll tőlem, bár lehet, hogy nem is annyira bonyolult.

Hihetetlen ez a világ (linux világa), fantaszikus. És lehet, hogy még csak az elefánt orra hegyét látom :)

Nagyzo 2009.08.07. 12:34:47

Az intrid kikapcsolása, az jó lenne, bár abszolút elégedett vagyok Jaunty-val, jelentősen gyorsabb a bootolása, mint két elődjének volt (ennek alapból).

Most inkább csak a mini linux distrik foglalkoztatnak.