Weboldal keresés

LFCS: A Grand Unified Bootloader (GRUB) konfigurálása és hibaelhárítása – 13. rész


Az LFCS minősítési vizsgák céljainak közelmúltbeli, 2016. február 2-ától hatályos változásai miatt a szükséges témaköröket hozzáadjuk az itt közzétett LFCS sorozathoz. A vizsgára való felkészüléshez erősen ajánljuk, hogy kövesse az LFCE sorozatot is.

Ebben a cikkben bemutatjuk a GRUB-ot, és elmagyarázzuk, miért van szükség a rendszertöltőre, és hogyan teszi sokoldalúbbá a rendszert.

A Linux rendszerindítási folyamata a számítógép bekapcsoló gombjának megnyomásától egészen addig, amíg teljesen működőképes rendszert nem kap, ezt a magas szintű sorrendet követi:

  1. 1. A POST (Bekapcsolási önteszt) néven ismert folyamat átfogó ellenőrzést végez a számítógép hardverkomponensein.
  2. 2. Amikor a POST befejeződik, a rendszer átadja a vezérlést a rendszertöltőnek, amely viszont betölti a Linux kernelt a memóriába (az initramfs mellett ) és végrehajtja azt. A Linuxban leggyakrabban használt rendszertöltő a GRand Unified Boot loader vagy röviden a GRUB.
  3. 3. A kernel ellenőrzi és hozzáfér a hardverhez, majd lefuttatja a kezdeti folyamatot (leginkább az „init” általános nevén ismert), amely viszont elindítja a rendszerindítást. szolgáltatások.

A sorozat 7. részében („SysVinit, Upstart és Systemd”) bemutattuk a modern Linux disztribúciók által használt szolgáltatáskezelő rendszereket és eszközöket. Érdemes lehet átnézni a cikket, mielőtt továbblépne.

Bemutatkozik a GRUB Boot Loader

Két fő GRUB verzió (v1, néha GRUB Legacy és v2) megtalálható a modern rendszerekben, bár a legtöbb a disztribúciók alapértelmezés szerint a v2 verziót használják legújabb verzióikban. Csak a Red Hat Enterprise Linux 6 és származékai használják ma is a v1-et.

Így ebben az útmutatóban elsősorban a v2 szolgáltatásaira összpontosítunk.

A GRUB verziótól függetlenül a rendszertöltő lehetővé teszi a felhasználó számára, hogy:

  1. 1). módosítsa a rendszer viselkedését különböző használandó kernelek megadásával,
  2. 2). válasszon az indítandó alternatív operációs rendszerek közül, és
  3. 3). konfigurációs szakaszok hozzáadása vagy szerkesztése többek között a rendszerindítási beállítások módosításához.

Ma a GRUB-ot a GNU projekt karbantartja, és jól dokumentálják a webhelyükön. Javasoljuk, hogy használja a hivatalos GNU dokumentációt az útmutató átolvasása közben.

Amikor a rendszer elindul, a következő GRUB képernyő jelenik meg a főkonzolon. Kezdetben a rendszer felkéri, hogy válasszon az alternatív kernelek közül (alapértelmezés szerint a rendszer a legújabb kernellel indul), és megadhatja a GRUB parancssort (a c billentyűvel). vagy módosítsa a rendszerindítási beállításokat (az e billentyű megnyomásával).

Az egyik ok, amiért érdemes megfontolni egy régebbi kernellel való rendszerindítást, az egy olyan hardvereszköz, amely korábban megfelelően működött, és a frissítés után elkezdett „működni” (lásd ezt a linket az AskUbuntu-ban fórumok például).

A GRUB v2 konfiguráció a rendszerindításkor a /boot/grub/grub.cfg vagy a /boot/grub2/grub.cfg címről olvasható, míg a /boot/grub/grub.conf vagy /boot/grub/menu.lst a v1 verzióban használatos. Ezeket a fájlokat NEM szabad kézzel szerkeszteni, hanem az /etc/default/grub tartalma és az /etc/grub.d fájlban található fájlok alapján módosíthatók.

A CentOS 7 rendszerben az alábbi konfigurációs fájl jön létre a rendszer első telepítésekor:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Az online dokumentáción kívül megtalálhatja a GNU GRUB kézikönyvét is, az alábbiak szerint:

info grub

Ha kifejezetten az /etc/default/grub számára elérhető lehetőségek érdeklik, akkor közvetlenül is meghívhatja a konfigurációs részt:

info -f grub -n 'Simple configuration'

A fenti parancs segítségével megtudhatja, hogy a GRUB_TIMEOUT beállítja az időt a kezdőképernyő megjelenése és a rendszer automatikus indítása között, hacsak a felhasználó meg nem szakítja. Ha a változó értéke -1, akkor a rendszer nem indul el, amíg a felhasználó nem választ.

Ha több operációs rendszer vagy kernel van telepítve ugyanarra a gépre, a GRUB_DEFAULT egy egész számot igényel, amely jelzi, hogy a GRUB kezdőképernyőjén melyik operációs rendszert vagy kernelbejegyzést kell alapértelmezés szerint kiválasztani az indításhoz. A bejegyzések listája nem csak a fent látható nyitóképernyőn tekinthető meg, hanem a következő paranccsal is:

CentOS és openSUSE rendszerben:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg

Ubuntuban:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg

Az alábbi képen látható példában, ha a 3.10.0-123.el7.x86_64 (4. bejegyzés) kernelverzióval szeretnénk indítani, akkor a GRUB_DEFAULT -ot kell beállítanunk. 3-ra (a bejegyzések belső számozása nullával kezdődik) a következőképpen:

GRUB_DEFAULT=3

Az utolsó GRUB konfigurációs változó, amely különösen érdekes, a GRUB_CMDLINE_LINUX, amely opciók átadására szolgál a kernelnek. A GRUB-on keresztül a kernelnek átadható opciók jól dokumentálva vannak a Kernel Parameters fájlban és a man 7 bootparam-ban.

A CentOS 7 szerverem jelenlegi beállításai a következők:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"

Miért szeretné módosítani az alapértelmezett kernelparamétereket vagy átadni extra beállításokat? Egyszerűen fogalmazva, előfordulhatnak olyan esetek, amikor meg kell mondanunk a kernelnek bizonyos hardverparamétereket, amelyeket nem biztos, hogy képes önmagában meghatározni, vagy felül kell írnia azokat az értékeket, amelyeket észlelne.

Ez történt velem nem is olyan régen, amikor 10 éves laptopomon kipróbáltam a Vector Linuxot, a Slackware származékát. Telepítés után nem észlelte a megfelelő beállításokat a videokártyámhoz, ezért módosítanom kellett a GRUB-on keresztül átadott kernel opciókat, hogy működjön.

Egy másik példa, amikor a rendszert egyfelhasználós módba kell állítani a karbantartási feladatok elvégzéséhez. Ezt úgy teheti meg, hogy hozzáfűzi a single szót a GRUB_CMDLINE_LINUX-hoz, és újraindítja:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"

A /etc/defalt/grub szerkesztése után az update-grub (Ubuntu) vagy a grub2-mkconfig -o /boot/grub2/grub parancsot kell futtatnia. cfg (CentOS és openSUSE) ezután frissítse a grub.cfg fájlt (ellenkező esetben a változtatások elvesznek a rendszerindításkor).

Ez a parancs feldolgozza a korábban említett rendszerindítási konfigurációs fájlokat a grub.cfg frissítéséhez. Ez a módszer biztosítja, hogy a változtatások állandóak legyenek, míg a rendszerindításkor a GRUB-on keresztül átadott opciók csak az aktuális munkamenetben maradnak fenn.

Linux GRUB-problémák javítása

Ha egy második operációs rendszert telepít, vagy ha a GRUB konfigurációs fájlja emberi hiba miatt megsérül, vannak módok arra, hogy a rendszert talpra állítsa, és újrainduljon.

A kezdőképernyőn nyomja meg a c billentyűt a GRUB parancssor megjelenítéséhez (ne feledje, hogy az e billentyűvel is módosíthatja az alapértelmezett rendszerindítási beállításokat), és használja a súgót az elérhető parancsok a GRUB promptban:

Az ls-re összpontosítunk, amely felsorolja a telepített eszközöket és fájlrendszereket, és megvizsgáljuk, mit talál. Az alábbi képen láthatjuk, hogy 4 merevlemez van (hd0-tól hd3-ig).

Úgy tűnik, csak a hd0 particionálva lett (ezt az msdos1 és az msdos2 bizonyítja, ahol az 1 és 2 a partíciószámok, az msdos pedig a particionálási séma).

Vizsgáljuk meg most a hd0 (msdos1) első partícióját, hogy megtudjuk, megtaláljuk-e ott a GRUB-ot. Ez a megközelítés lehetővé teszi számunkra, hogy elindítsuk a Linuxot, és ott más magas szintű eszközöket használjunk a konfigurációs fájl javítására vagy a GRUB teljes újratelepítésére, ha szükséges:

ls (hd0,msdos1)/

Amint azt a kiemelt területen láthatjuk, a grub2 könyvtárat ebben a partícióban találtuk:

Miután megbizonyosodtunk arról, hogy a GRUB a (hd0,msdos1) helyen található, mondjuk meg a GRUB-nak, hogy hol találja a konfigurációs fájlját, majd utasítsuk, hogy próbálja meg elindítani a menüjét:

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal

Ezután a GRUB menüben válasszon ki egy bejegyzést, és nyomja meg az Enter billentyűt a rendszerindításhoz. Miután a rendszer elindult, kiadhatja a grub2-install /dev/sdX parancsot (módosítsa az sdX elemet azon eszközön, amelyre telepíteni szeretné a GRUB-ot). A rendszerindítási információk ezután frissülnek, és az összes kapcsolódó fájl visszaáll.

grub2-install /dev/sdX

Az Ubuntu GRUB2 hibaelhárítási útmutatója más, összetettebb forgatókönyveket is dokumentál a javasolt javításokkal együtt. Az ott ismertetett fogalmak más disztribúciókra is érvényesek.

Összegzés

Ebben a cikkben bemutattuk a GRUB-ot, jeleztük, hol találhat online és offline dokumentációt, és elmagyaráztuk, hogyan lehet megközelíteni egy olyan forgatókönyvet, amikor a rendszer rendszerbetöltővel kapcsolatos probléma miatt leállt a megfelelő indítás.

Szerencsére a GRUB az egyik legjobban dokumentált eszköz, és könnyen találhat segítséget akár a telepített dokumentumokban, akár online a cikkben megosztott források segítségével.

Van kérdése vagy észrevétele? Ne habozzon tudassa velünk az alábbi megjegyzés űrlap segítségével. Várom válaszukat!