[Megoldva]GRUB read error

 ( moe | 2011. november 22., kedd - 8:29 )

Építgettem magamnak otthonra egy gépet, ami hangtalanul teszi a dolgát. Egy CF kártyáról bootol a drága, amivel eddig semmi gond nem is volt.
Azonban a meglévő CF - IDE átalakítóm sajnos "portba dugós" fajta, és így nem fér be a házba. Sebaj - gondoltam - kicserélem kábelre illeszthetőre.
Na, itt kezdődtek a problémák. Miután kicseréltem az adapter egy egyszerű
"GRUB loadingread error" -al meghal a boot legelején.
Kicsit túrtam a netet, általános megoldás a problémára a live CD-ről boot, majd partíciók felmountolása, és GRUB reinstall. Sima ügy - gondoltam, és itt tévedtem másodszor - megoldom. Bebootol, felmountol, reinstall, reboot, "GRUB loadingread error".
Na, és itt akadtam el. Az adaptert visszacserélve a régire persze gond nélkül indul.
Jól sejtem, hogy valahol egy megváltozott UUID okozza a problémát? És a GRUB reinstall miért nem oldja meg?

Szerk.: Valamint, ha már itt vagyunk: Miért van az, hogy minden reboot után megváltozik a diskek sorrendje? 3 db disk van a gépben, ebből az egyik a CF kártya. A CF kártya hol az sda, hol az sdc. Alapvetően nem okoz galibát, csak a hddtemp daemon-nál nem egyszerű a dolog. Vagy a hddtemp is rávehető uuid használatára valahogy?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Jól sejtem, hogy valahol egy megváltozott UUID okozza a problémát? És a GRUB reinstall miért nem oldja meg?

Nem jól gondolod. A GRUB nem olvas uuid-kat, nem is tudna velük mit kezdeni, mert a GRUB BIOS hívásokkal tölti be magát és a bootoláshoz szükséges fájlokat.
BIOS hívásokkal csak a BIOS által látni engedett diszkeket lehet elérni, azoknak is csak a BIOS által támogatott mérethatárig tartó részét. Bootolni általában csak a BIOS által első helyre rakott diszken levő GRUB-ból tudsz, ha a BIOS látja és támogatja is az adott eszközt (sokáig pl. hiába volt USB a gépeken, de az arra dugott cuccokról nem lehetett bootolni, de régi gépek CD-ről sem tudtak bootolni, hiába volt CD a gépben). Sok modern BIOS-ban meg lehet mondani, hogy milyen legyen a diszkek BIOS sorrendje, ha nem, akkor szopás van.
A GRUB egyik hatalmas problémája, hogy linux alól kéne kitalálnia, hogy mi lesz majd BIOS alatt a diszk sorszáma. Ez kb. lehetetlen korrektül és pontosan. A GRUB azt feltételezi, hogy amilyen sorrendben a linux látja a diszkeket (sda, sdb, stb.), olyan sorrendben láthatóak a diszkek BIOS-ból is.
A helyes technológia: megoldod, hogy a kívánt GRUB-ot tartalmazó diszk legyen a BIOS-ban az első, ha van más diszk, amin van GRUB által kezelendő partíció, akkor ezen diszkek BIOS sorrendje ismert legyen. Ezután linux alatt a grub könyvtárában van egy device.map fájl, abban valami sorrend; ezt átírod úgy, hogy a hd0 az első BIOS diszk legyen, a hd1 a második, stb.

Ha BIOS-ból nem fix a diszkjeid sorrendje, esetleg időnként egyik-másik nem látszik bootolásnál, és emiatt a sorrend ugrál, akkor szopás van...

Asszem annyira fiatal vagy, hogy a DOS kimaradt az életedből, ezért a BIOS diszkkezelését sem érted.

Miért van az, hogy minden reboot után megváltozik a diskek sorrendje? 3 db disk van a gépben, ebből az egyik a CF kártya.

Mert random sorrendben látja meg a diszkjeidet. Nyilván amikor sdc lesz belőle, akkor még nem látja, amikor elindul az inicializálás.
Erre találták a bylabel meg a byuuid technológiát.

Az általad leírtakkal tisztában vagyok, és a DOS sem ismeretlen számomra. Annyira azért nem vagyok fiatal. :)

A baj az, hogy teszteltem úgy is, hogy minden más disket lehúztam, csak a CF kártya maradt fent. Így ő volt az első és egyetlen disk.

A device.map tartalma egyébként:
root@wb:/boot/grub# cat device.map
(hd0) /dev/disk/by-id/ata-CF_CARD_4GB_5B0A1C290

BIOSban természetesen be van állítva, hogy az első boot device a hard disk legyen, a hard disk sorrendnél pedig a CF kártya van első helyen.

Tehát van egy szem diszk BIOS-ból nézve, ami a device.map szerint hd0, a mellette levő device megnyitható, erre nyomsz egy grub-install-t, és ezután bootoláskor a GRUB nem tudja olvasni ezt a diszket?
A GRUB fájljait tartalmazó fájlrendszer hol kezdődik a diszken, és mekkora?
BIOS-ból nézve milyen diszk geometriát látsz?

Így van. Egy szem disk, GRUB reinstall, és simán kiröhög. Ez az, amit nem teljesen értek.

root@wb:~# fdisk -l /dev/sdc

Disk /dev/sdc: 3997 MB, 3997163520 bytes
255 heads, 63 sectors/track, 485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c564e

Device Boot Start End Blocks Id System
/dev/sdc1 * 1 13 96256 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdc2 13 486 3805184 83 Linux
Partition 2 does not end on cylinder boundary.

Itt a működő CF adapterrel van bebootolva a gép, az összes diskkel, ezért látszik sdc-nek. Az első partíció a /boot, ez 90M, ebből 70M szabad. A második partíció a maradékból a /.

BIOS-t most nem tudok nézni, fizikailag máshol vagyok. Délután tudom majd testközelből abuzálni.

Ennek így mennie kéne.

Esetleg valami DOS-like oprendszert bootolni, és valami DOS-os programból végigolvasni blokkonként az első partíciónak megfelelő területet...

Öööö... esetleg dd-vel végignyalni linux alól a partíciót, hogy olvasható-e?
Mert a Read Error jelentheti azt, hogy a diszkblokk nem olvasható...

Az a furcsa, hogy az egyik adapterrel bootol, a másikkal nem. Viszont mindkettővel olvasható, ha már van bebootolt OS.
Mivel ez kábelre köthető, ezért megpróbálok még kábelt cserélni, hátha...

Az is lehet probléma, hogy az egyik adapter nem eléggé BIOS-kompatibilis (nem szimulálja elég jól az IDE diszket, a linuxos drivernek elég jó, de a BIOS-ban levő IDE drivernek nem).

Még egy kábelcserét megpróbálok, és széttúrom a BIOSt.

IDE gender changer mennyire működhet? Elvileg semmi extra, nem? Mert arra gondoltam, hogy végső esetben egy gender changerrel kábelre köthetővé teszem a mostani fix, működő adaptert.

Azt kipróbálnám én is. De szerintem ilyet nem árulnak direktben. Ellenben a kábel végére egy kétoldalas 2x20-as tüskesor, elektronikai boltból beszerelve, az talán menne.

Vagy egy ilyen 90 fokos fordítóval az alaplapba közvetlenül?
http://www.soselectronic.hu/?str=371&artnum=8196
http://www.hestore.hu/prod_10024134.html

Ilyesmi lesz, de egyelőre még nem szeretném temetni a dolgot. Még reménykedem. :) Majd megírom mi lett.
A lényeg, hogy elvileg semmit nem rontottam el, nem rajtam múlt a dolog.

Sikerült megoldani. IDE kábel csere után tökéletesen működik, mindenféle csiri-biri nélkül. Természetesen ez a kábel ugyanebben a lapban más eszközökkel tökéletesen működik... :)

Köszönöm az ötletelést! :)

Udev szinten biztosan rendezhető a diszkek sorrendje néhány szabállyal.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Hátha hasznos lesz valakinek: a probléma nálam ugye csak a hddtemp-nél jelentkezett. Így oldottam meg:
/etc/default/hddtemp fileban a DISKS="" sorba kell beírni a monitorozandó diskek elérési útját, amit a /dev/disk/by-id/ alapján adtam meg.