[Megoldva]GRUB read error

Fórumok

É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ások

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

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

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