Hogyan lehet megmenteni egy nem indító GRUB 2-t Linuxon

grub parancshéj

egyszer régen volt legacy GRUB, a Grand Unified Linux Bootloader verzió 0.97. A Legacy GRUBNAK sok erénye volt, de megöregedett, fejlesztői pedig több funkcionalitásra vágytak, így a GRUB 2 is bekerült a világba.

GRUB 2 egy jelentős átírása több jelentős különbségek. Ez csizma cserélhető adathordozó, lehet beállítani egy lehetőséget, hogy adja meg a rendszer BIOS. Bonyolultabb a Konfigurálás mindenféle szkripttel, hogy átgázoljon, és ahelyett, hogy egy szép, meglehetősen egyszerű /boot/grub/menu.lst fájl lenne, minden konfigurációval egy helyen, az alapértelmezett /boot/grub/grub.cfg. Amit nem szerkesztesz közvetlenül, Ó, nem, mert ez nem pusztán az emberek megérintése, hanem csak más szkriptek. Mi, alacsonyan élő emberek szerkeszthetjük a /etc/default/grub – t, amely elsősorban a GRUB menü megjelenését szabályozza. A szkripteket a /etc/grub.d/alatt is szerkeszthetjük. Ezek azok a szkriptek, amelyek indítják az operációs rendszereket, vezérlik a külső alkalmazásokat, mint például a memtest és os_prober, és theming./boot/grub/grub.cfg/etc/default/grub és /etc/grub.d/* a update-grub parancs futtatásakor minden alkalommal futtatnia kell a változtatásokat.

a jó hír az, hogy aupdate-grub szkript megbízható a kernelek, a rendszerindító fájlok megtalálásához, valamint az összes operációs rendszer hozzáadásához a GRUB rendszerindító menüjéhez, így nem kell manuálisan elvégeznie.

meg fogjuk tanulni, hogyan lehet két gyakoribb hibát kijavítani. A rendszer indításakor a grub> prompt, azaz a teljes GRUB 2 parancshéj áll meg. Ez azt jelenti, hogy a GRUB 2 normálisan indult és betöltötte anormal.mod modult (és más modulokat, amelyek a), de nem találta meg agrub.cfg fájlt. Ha grub rescue> ez azt jelenti, hogy nem talált normal.mod, így valószínűleg nem találta meg a rendszerindító fájlokat.

hogyan történik ez? Lehet, hogy a kernel megváltoztatta a meghajtó hozzárendelését, vagy áthelyezte a merevlemezeket, megváltoztatott néhány partíciót, vagy új operációs rendszert telepített, és áthelyezte a dolgokat. Ezekben a forgatókönyvekben a rendszerindító fájlok még mindig ott vannak, de GRUB nem találja őket. Így megkeresheti a rendszerindító fájlokat a GRUB prompt, állítsa be a helyüket, majd indítsa el a rendszert, majd javítsa ki a GRUB konfigurációt.

GRUB 2 parancshéj

a GRUB 2 parancshéj ugyanolyan erős, mint a legacy GRUB héja. A rendszerindító képek, kernelek és root fájlrendszerek felfedezéséhez használhatja. Valójában teljes hozzáférést biztosít a helyi gépen lévő összes fájlrendszerhez, függetlenül az engedélyektől vagy más védelmektől. Amit egyesek biztonsági lyuknak tekinthetnek, de tudod, hogy a régi Unix diktum: aki fizikai hozzáféréssel rendelkezik a géphez, az birtokolja.

ha agrub> prompt, van egy csomó funkció hasonló bármely parancs shell, mint a történelem és a tab-befejezése. A grub rescue> mód korlátozottabb, előzmények nélkül, tabulátor nélkül.

Ha egy működő rendszeren gyakorol, nyomja meg a C gombot, amikor megjelenik a GRUB rendszerindító menüje a GRUB parancshéj megnyitásához. Leállíthatja a bootup visszaszámlálást a nyilakkal felfelé vagy lefelé görgetve a menübejegyzéseket. Biztonságos kísérletezni a GRUB parancssorban, mert semmi, amit csinálsz, állandó. Ha már a grub> vagy grub rescue>prompt, akkor készen áll a rock.

a következő néhány parancs mind agrub>, mind agrub rescue>parancsokkal működik. Az első futtatandó parancs meghívja a személyhívót a hosszú parancs kimenetek lapozásához:

grub> set pager=1

az egyenlő jel mindkét oldalán nem lehet szóköz. Most tegyünk egy kis felfedezést. Írja be a ls az összes olyan partíció felsorolásához, amelyet GRUB lát:

grub> ls(hd0) (hd0,msdos2) (hd0,msdos1)

mi ez a msdos stuff? Ez azt jelenti, hogy ez a rendszer a régi stílusú MS-DOS partíciós táblával rendelkezik, nem pedig a fényes új, globálisan egyedi azonosítók partíciós táblával (GPT). (Lásd az új GUID partíciós tábla használatát Linuxban (Viszlát ősi MBR). Ha fut GPT azt fogja mondani, (hd0,gpt1). Most snoop. Használja a ls parancsot, hogy megnézze, milyen fájlok vannak a rendszeren:

grub> ls (hd0,1)/lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old

Hurrah, megtaláltuk a gyökér fájlrendszert. Kihagyhatja amsdos ésgpt címkéket. Ha elhagyja a perjelet, kinyomtatja a partícióra vonatkozó információkat. A rendszer bármely fájlját elolvashatja a cat paranccsal:

grub> cat (hd0,1)/etc/issueUbuntu 14.04 LTS n l

Reading /etc/issue hasznos lehet egy multi-boot rendszer azonosítására a különböző Linuxok.

booting From grub>

így állíthatjuk be a rendszerindító fájlokat és indíthatjuk a rendszert a grub> prompt. A ls parancs futtatásából tudjuk, hogy a (hd0,1) – on van egy Linux root fájlrendszer, és addig kereshet, amíg nem ellenőrzi, hogy a /boot/grub hol van. Ezután futtassa ezeket a parancsokat a saját root partíció, kernel, initrd kép:

grub> set root=(hd0,1)grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub> initrd /boot/initrd.img-3.13.0-29-genericgrub> boot

az első sor beállítja a partíciót, amelyen a root fájlrendszer van. A második sor megadja a grubnak a használni kívánt kernel helyét. Indítsa el a /boot/vmli gépelést, majd a tab-completion használatával töltse ki a többit. Típus root=/dev/sdX a gyökér fájlrendszer helyének beállításához. Igen, ez feleslegesnek tűnik, de ha ezt kihagyja, akkor kernel pánik lesz. Honnan tudja a megfelelő partíciót? hd0, 1 = / dev / sda1. hd1, 1 = / dev / sdb1. hd3, 2 = / dev / sdd2. Azt hiszem, extrapolálhatja a többit.

a harmadik sor a initrd fájlt állítja be, amelynek ugyanolyan verziószámnak kell lennie, mint a kernelnek.

a negyedik sor elindítja a rendszert.

egyes Linux rendszereken az aktuális rendszermagok és initrd-k a gyökérrendszer felső szintjére vannak csoportosítva:

$ ls -l /vmlinuz -> boot/vmlinuz-3.13.0-29-genericinitrd.img -> boot/initrd.img-3.13.0-29-generic

így lehet grub> mint ez:

grub> set root=(hd0,1)grub> linux /vmlinuz root=/dev/sda1grub> initrd /initrd.imggrub> boot

Rendszerindítás A grub-mentő>

Ha a GRUB rescue shell parancsok vagy más, be kell töltened a normal.mod vagylinux.mod modulok:

grub rescue> set prefix=(hd0,1)/boot/grubgrub rescue> set root=(hd0,1)grub rescue> insmod normalgrub rescue> normalgrub rescue> insmod linuxgrub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub rescue> initrd /boot/initrd.img-3.13.0-29-genericgrub rescue> boot

Lap-befejezése kell a munka megkezdése után terhelés mindkét modul.

állandó javítások elvégzése

amikor sikeresen elindította a rendszert, futtassa ezeket a parancsokat a GRUB végleges javításához:

# update-grubGenerating grub configuration file ...Found background: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound background image: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound linux image: /boot/vmlinuz-3.13.0-29-genericFound initrd image: /boot/initrd.img-3.13.0-29-genericFound linux image: /boot/vmlinuz-3.13.0-27-genericFound initrd image: /boot/initrd.img-3.13.0-27-genericFound linux image: /boot/vmlinuz-3.13.0-24-genericFound initrd image: /boot/initrd.img-3.13.0-24-genericFound memtest86+ image: /boot/memtest86+.elfFound memtest86+ image: /boot/memtest86+.bindone# grub-install /dev/sdaInstalling for i386-pc platform.Installation finished. No error reported.

grub-install ne feledje, hogy a merevlemez indító szektorába telepíti, nem pedig partícióra, ezért ne használjon olyan partíciószámot, mint a /dev/sda1.

de még mindig nem működik

Ha a rendszer annyira elrontotta, hogy ezek egyike sem működik, próbálja ki a Super GRUB2 live rescue lemezt. A hivatalos GNU GRUB kézikönyv 2.00 is hasznos lehet.

Related Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük