LFCS: Kako nastaviti in odpraviti težave z Grand Unified Bootloaderjem (GRUB) - 13. del


Zaradi nedavnih sprememb ciljev certifikacijskega izpita LFCS, ki so začeli veljati 2. februarja 2016, v serijo LFCE dodajamo tudi potrebne teme.

V tem članku vam bomo predstavili GRUB in razložili, zakaj je zagonski nalagalnik potreben in kako sistem dodaja vsestranskost.

Postopek zagona Linuxa od trenutka, ko pritisnete gumb za vklop računalnika, dokler ne dobite popolnoma funkcionalnega sistema, sledi temu zaporedju na visoki ravni:

  1. 1. Postopek, znan kot POST (Power-On Self Test), opravi splošno preverjanje komponent strojne opreme vašega računalnika.
  2. 2. Ko POST zaključi, nadzor prenese na zagonski nalagalnik, ki nato naloži jedro Linuxa v pomnilnik (skupaj z initramfs) in ga izvede. Najbolj uporabljen zagonski nalagalnik v Linuxu je GRand Unified Boot loader ali na kratko GRUB.
  3. 3. Jedro preveri in dostopa do strojne opreme, nato pa zažene začetni postopek (večinoma znan pod splošnim imenom\"init"), ki nato dokonča zagon sistema z zagonom storitev.

V 7. delu te serije (\ "Sistemi in orodja za upravljanje storitev, ki jih uporabljajo sodobne distribucije Linuxa. Ta članek boste morda želeli pregledati, preden nadaljujete.

Predstavljamo GRUB Boot Loader

Dve glavni različici GRUB (v1 se včasih imenuje GRUB Legacy in v2) je mogoče najti v sodobnih sistemih, čeprav večina distribucij v svojih najnovejših različicah privzeto uporablja v2. V1 še danes uporabljajo le Red Hat Enterprise Linux 6 in njegovi izpeljanki.

Tako se bomo v tem priročniku osredotočili predvsem na značilnosti v2.

Ne glede na različico GRUB, zagonski nalagalnik uporabniku omogoča:

  1. 1). spremenite način obnašanja sistema z določitvijo različnih jeder za uporabo,
  2. 2). izbirajte med nadomestnimi operacijskimi sistemi za zagon in
  3. 3). dodajte ali uredite konfiguracijske kitice, da med drugim spremenite možnosti zagona.

Danes GRUB vzdržuje projekt GNU in je dobro dokumentiran na njihovi spletni strani. Priporočamo vam, da med tem vodnikom uporabljate uradno dokumentacijo GNU.

Ko se sistem zažene, se vam na glavni konzoli prikaže naslednji zaslon GRUB. Sprva boste pozvani, da izberete med nadomestnimi jedri (sistem se privzeto zažene z najnovejšim jedrom) in lahko vnesete ukazno vrstico GRUB (z c ) ali uredite zagonske možnosti (s s pritiskom na tipko e ).

Eden od razlogov, zakaj bi razmislili o zagonu s starejšim jedrom, je strojna naprava, ki je nekoč delovala pravilno in se je po nadgradnji začela "delovati" (za primer glejte to povezavo na forumih AskUbuntu).

Konfiguracija GRUB v2 se prebere ob zagonu iz /boot/grub/grub.cfg ali /boot/grub2/grub.cfg , medtem ko /boot/grub/grub.conf ali /boot/grub/menu.lst se uporabljajo v v1. Teh datotek NE SME urejati ročno, ampak jih spreminjamo glede na vsebino /etc/default/grub in datoteke, ki jih najdemo v /etc/grub.d .

V CentOS 7 je tukaj konfiguracijska datoteka, ki se ustvari ob prvi namestitvi sistema:

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"

Poleg spletne dokumentacije lahko najdete tudi priročnik GNU GRUB, ki uporablja naslednje informacije:

# info grub

Če vas posebej zanimajo možnosti, ki so na voljo za/etc/default/grub, lahko neposredno pokličete razdelek za konfiguracijo:

# info -f grub -n 'Simple configuration'

Z zgornjim ukazom boste ugotovili, da GRUB_TIMEOUT nastavi čas med trenutkom, ko se prikaže začetni zaslon, in samodejnim zagonom sistema, če ga uporabnik ne prekine. Ko je ta spremenljivka nastavljena na -1 , se zagon ne začne, dokler uporabnik ne izbere.

Ko je v isti računalnik nameščenih več operacijskih sistemov ali jeder, GRUB_DEFAULT zahteva celoštevilčno vrednost, ki označuje, kateri OS ali vnos jedra na začetnem zaslonu GRUB mora biti privzeto izbran za zagon. Seznam vnosov si lahko ogledate ne samo na zgornjem zaslonu, prikazanem zgoraj, ampak tudi z naslednjim ukazom:

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

V primeru, prikazanem na spodnji sliki, če želimo zagnati z različico jedra 3.10.0-123.el7.x86_64 (4. vnos), moramo GRUB_DEFAULT nastaviti na 3 (vnosi so notranje oštevilčeni, začenši z ničlo), kot sledi:

GRUB_DEFAULT=3

Končna spremenljivka GRUB, ki je še posebej zanimiva, je GRUB_CMDLINE_LINUX , ki se uporablja za posredovanje možnosti jedru. Možnosti, ki jih lahko prek GRUB prenesete v jedro, so dobro dokumentirane v man 7 bootparam.

Trenutne možnosti v mojem strežniku CentOS 7 so:

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"

Zakaj bi radi spremenili privzete parametre jedra ali dodali dodatne možnosti? Preprosto povedano, včasih boste morali jedru sporočiti določene strojne parametre, ki jih morda ne bo moglo določiti samostojno, ali pa bo preglasil vrednosti, ki jih bo zaznal.

To se mi je zgodilo nedolgo nazaj, ko sem na svojem 10-letnem prenosniku preizkusil Vector Linux, izpeljanko Slackware-a. Po namestitvi ni zaznal pravih nastavitev za mojo grafično kartico, zato sem moral spremeniti možnosti jedra, ki so bile posredovane prek GRUB, da bi lahko delovalo.

Drug primer je, ko morate sistem za izvajanje vzdrževalnih nalog prestaviti v način enega uporabnika. To lahko storite tako, da besedo single dodate GRUB_CMDLINE_LINUX in znova zaženete:

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"

Po urejanju /etc/defalt/grub boste morali zagnati update-grub (Ubuntu) ali grub2-mkconfig -o/boot/grub2/grub. cfg (CentOS in openSUSE) za posodobitev grub.cfg (sicer se spremembe ob zagonu izgubijo).

Ta ukaz bo obdelal prej omenjene zagonske konfiguracijske datoteke za posodobitev grub.cfg . Ta metoda zagotavlja, da so spremembe trajne, medtem ko bodo možnosti, posredovane skozi GRUB ob zagonu, trajale le med trenutno sejo.

Odpravljanje težav z Linux GRUB

Če namestite drugi operacijski sistem ali če se vaša konfiguracijska datoteka GRUB poškoduje zaradi človeške napake, lahko sistem postavite na noge in znova zaženete.

Na začetnem zaslonu pritisnite c , da dobite ukazno vrstico GRUB (ne pozabite, da lahko pritisnete tudi e , da uredite privzete možnosti zagona), in uporabite pomoč, da omogočite razpoložljive ukazi v pozivu GRUB:

Osredotočili se bomo na ls, ki bo navedel nameščene naprave in datotečne sisteme, in preučili bomo, kaj najde. Na spodnji sliki lahko vidimo 4 trde diske ( hd0 do hd3 ).

Zdi se, da je bil razdeljen samo hd0 (kar dokazujejo msdos1 in msdos2, kjer sta 1 in 2 številki particij, msdos pa shema razdeljevanja).

Oglejmo si zdaj prvo particijo na hd0 (msdos1), da ugotovimo, ali lahko tam najdemo GRUB. Ta pristop nam bo omogočil zagon Linuxa in tam uporabil druga orodja na visoki ravni, da popravimo konfiguracijsko datoteko ali v celoti znova namestimo GRUB, če je to potrebno:

# ls (hd0,msdos1)/

Kot lahko vidimo na označenem območju, smo na tej particiji našli imenik grub2:

Ko smo prepričani, da ima GRUB prebivališče (hd0, msdos1), povejmo GRUB-u, kje najti svojo konfiguracijsko datoteko, nato pa mu naročimo, naj poskusi zagnati svoj meni:

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

Nato v meniju GRUB izberite vnos in pritisnite Enter, da ga zaženete. Ko se sistem zažene, lahko izdate ukaz grub2-install/dev/sdX (spremenite sdX z napravo, v katero želite namestiti GRUB). Nato bodo posodobljene zagonske informacije in obnovljene vse povezane datoteke.

# grub2-install /dev/sdX

Drugi bolj zapleteni scenariji so skupaj s predlaganimi popravki dokumentirani v priročniku za odpravljanje težav Ubuntu GRUB2. Tam razloženi koncepti veljajo tudi za druge distribucije.

Povzetek

V tem članku smo vam predstavili GRUB, navedli, kje lahko najdete dokumentacijo tako v spletu kot tudi zunaj njega, in razložili, kako pristopiti k scenariju, ko se sistem zaradi težave z zagonskim nalagalnikom ustavi pravilno zagon.

Na srečo je GRUB eno izmed orodij, ki je najbolje dokumentirano in pomoč lahko preprosto poiščete v nameščenih dokumentih ali na spletu z uporabo virov, ki smo jih delili v tem članku.

Imate vprašanja ali komentarje? Ne oklevajte in nas obvestite s pomočjo spodnjega obrazca za komentar. Veselimo se vaših odzivov!