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.