LFCS: Kako konfigurirati i riješiti probleme Grand Unified Bootloader (GRUB) - Dio 13


Zbog nedavnih promjena u ciljevima LFCS certifikacijskog ispita koji su stupili na snagu 2. veljače 2016., dodajemo potrebne teme i u seriju LFCE.

U ovom ćemo vas članku predstaviti GRUB-u i objasniti zašto je pokretački program potreban i kako dodaje svestranost sustavu.

Postupak pokretanja Linuxa od trenutka kada pritisnete tipku za napajanje računala pa sve dok ne dobijete potpuno funkcionalan sustav slijedi ovaj redoslijed visoke razine:

  1. 1. Proces poznat pod nazivom POST (Power-On Self Test) provodi ukupnu provjeru hardverskih komponenata vašeg računala.
  2. 2. Kad se POST dovrši, on prenosi kontrolu na loader, koji zauzvrat učitava Linux jezgru u memoriju (zajedno s initramfs) i izvršava je. Najčešće korišteni boot loader u Linuxu je GRand Unified Boot loader ili skraćeno GRUB.
  3. 3. Kernel provjerava i pristupa hardveru, a zatim pokreće početni postupak (uglavnom poznat pod svojim generičkim nazivom "init") koji zauzvrat dovršava pokretanje sustava pokretanjem usluga.

U 7. dijelu ove serije („Sustavi i alati za upravljanje uslugama koje koriste moderne Linux distribucije. Možda ćete htjeti pregledati taj članak prije nego što nastavite dalje.

Predstavljamo GRUB boot loader

Dvije glavne verzije GRUB-a (v1 koje se ponekad nazivaju GRUB Legacy i v2) mogu se naći u modernim sustavima, iako većina distribucija u zadnjim verzijama prema zadanim postavkama koristi v2. Samo Red Hat Enterprise Linux 6 i njegovi derivati i danas koriste v1.

Stoga ćemo se u ovom vodiču prvenstveno usredotočiti na značajke v2.

Bez obzira na verziju GRUB-a, pokretački program omogućuje korisniku da:

  1. 1). izmijeniti način ponašanja sustava navođenjem različitih jezgri koje će se koristiti,
  2. 2). odaberite između zamjenskih operativnih sustava za pokretanje i
  3. 3). dodati ili urediti konfiguracijske strofe za promjenu opcija pokretanja, između ostalog.

Danas GRUB održava projekt GNU i dobro je dokumentiran na njihovoj web stranici. Preporučujemo vam da koristite službenu dokumentaciju GNU-a dok prolazite kroz ovaj vodič.

Kada se sustav pokrene, na glavnoj se konzoli prikazuje sljedeći GRUB zaslon. U početku će se od vas tražiti da odaberete između zamjenskih jezgri (prema zadanim postavkama sustav će se pokrenuti pomoću najnovijeg jezgra) i smijete ući u naredbeni redak GRUB (s c ) ili urediti opcije pokretanja ( pritiskom na tipku e ).

Jedan od razloga zašto biste razmotrili pokretanje sa starijom jezgrom je hardverski uređaj koji je nekad radio ispravno i počeo je "djelovati" nakon nadogradnje (primjer potražite na ovoj poveznici na forumima AskUbuntu).

Konfiguracija GRUB v2 čita se pri pokretanju s /boot/grub/grub.cfg ili /boot/grub2/grub.cfg , dok /boot/grub/grub.conf ili /boot/grub/menu.lst koriste se u v1. Te se datoteke NE SMIJU uređivati ručno, već su izmijenjene na temelju sadržaja /etc/default/grub i datoteka pronađenih u /etc/grub.d .

U CentOS 7, evo konfiguracijske datoteke koja se kreira prilikom prve instalacije sustava:

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"

Pored mrežne dokumentacije, možete pronaći i priručnik za GNU GRUB koristeći sljedeće informacije:

# info grub

Ako vas posebno zanimaju opcije dostupne za/etc/default/grub, možete izravno pozvati odjeljak za konfiguraciju:

# info -f grub -n 'Simple configuration'

Koristeći gornju naredbu saznat ćete da GRUB_TIMEOUT postavlja vrijeme između trenutka kada se pojavi početni zaslon i započne automatsko pokretanje sustava, osim ako ga korisnik ne prekine. Kada je ova varijabla postavljena na -1 , pokretanje se neće pokrenuti dok korisnik ne izvrši odabir.

Kada se na isti stroj instalira više operativnih sustava ili jezgri, GRUB_DEFAULT zahtijeva cijelu vrijednost koja pokazuje koji OS ili unos jezgre na početnom zaslonu GRUB-a treba odabrati prema zadanim postavkama za pokretanje. Popis unosa može se pregledati ne samo na prikazanom početnom ekranu, već i pomoću sljedeće naredbe:

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

U primjeru prikazanom na donjoj slici, ako se želimo pokrenuti s verzijom jezgre 3.10.0-123.el7.x86_64 (4. unos), moramo postaviti GRUB_DEFAULT na 3 (unosi su interno numerirani počevši od nule) kako slijedi:

GRUB_DEFAULT=3

Jedna posljednja GRUB konfiguracijska varijabla koja je od posebnog interesa je GRUB_CMDLINE_LINUX , koja se koristi za prosljeđivanje opcija jezgri. Opcije koje se mogu proslijediti kroz GRUB do jezgre dobro su dokumentirane u man 7 bootparam.

Trenutne opcije na mom CentOS 7 poslužitelju su:

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"

Zašto biste željeli izmijeniti zadane parametre jezgre ili proslijediti dodatne opcije? Jednostavno rečeno, mogu biti trenuci kada jezgri trebate reći određene hardverske parametre koje možda neće moći sam odrediti ili nadjačati vrijednosti koje će otkriti.

To mi se dogodilo ne tako davno kad sam na svom 10-godišnjem prijenosnom računalu isprobao Vector Linux, derivat Slackwarea. Nakon instalacije nije otkrio prave postavke za moju video karticu, tako da sam morao izmijeniti opcije jezgre propuštene kroz GRUB kako bih mogao funkcionirati.

Drugi je primjer kada sustav trebate dovesti u jednokorisnički način rada za obavljanje zadataka održavanja. To možete učiniti dodavanjem riječi single u GRUB_CMDLINE_LINUX i ponovnim pokretanjem:

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"

Nakon uređivanja /etc/defalt/grub , morat ćete pokrenuti update-grub (Ubuntu) ili grub2-mkconfig -o/boot/grub2/grub. cfg (CentOS i openSUSE) nakon toga da biste ažurirali grub.cfg (u suprotnom će se promjene izgubiti prilikom pokretanja).

Ova naredba će obraditi prethodno spomenute datoteke konfiguracije pokretanja kako bi se ažuriralo grub.cfg . Ova metoda osigurava trajne promjene, dok će opcije proslijeđene kroz GRUB u vrijeme pokretanja trajati samo tijekom trenutne sesije.

Ispravljanje Linux GRUB problema

Ako instalirate drugi operativni sustav ili ako se vaša GRUB datoteka za konfiguraciju ošteti zbog ljudske pogreške, postoje načini na koje možete sistem ponovno podići na noge i moći ponovno pokrenuti.

Na početnom zaslonu pritisnite c da biste dobili naredbeni redak GRUB (imajte na umu da također možete pritisnuti e da biste uredili zadane mogućnosti pokretanja) i upotrijebite pomoć da biste omogućili dostupne naredbe u GRUB retku:

Usredotočit ćemo se na ls, koji će navesti instalirane uređaje i datotečne sustave, te ćemo ispitati što pronađe. Na donjoj slici možemo vidjeti da postoje 4 tvrda diska ( hd0 do hd3 ).

Čini se da je samo hd0 podijeljeno (što dokazuju msdos1 i msdos2, gdje su 1 i 2 brojevi particija, a msdos shema particioniranja).

Idemo sada ispitati prvu particiju na hd0 (msdos1) da vidimo možemo li tamo pronaći GRUB. Ovaj pristup omogućit će nam pokretanje Linuxa i korištenje drugih alata visoke razine za popravak konfiguracijske datoteke ili ponovno instaliranje GRUB-a ako je potrebno:

# ls (hd0,msdos1)/

Kao što možemo vidjeti na istaknutom području, pronašli smo direktorij grub2 na ovoj particiji:

Kad se uvjerimo da GRUB ima prebivalište (hd0, msdos1), recimo GRUB-u gdje će pronaći njegovu konfiguracijsku datoteku, a zatim ga uputimo da pokuša pokrenuti svoj izbornik:

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

Zatim u GRUB izborniku odaberite unos i pritisnite Enter za pokretanje pomoću njega. Nakon što se sustav pokrene, možete izdati naredbu grub2-install/dev/sdX (promijenite sdX s uređajem na koji želite instalirati GRUB). Podaci o pokretanju tada će se ažurirati i sve povezane datoteke će se vratiti.

# grub2-install /dev/sdX

Ostali složeniji scenariji dokumentirani su, zajedno s njihovim predloženim rješenjima, u vodiču za rješavanje problema Ubuntu GRUB2. Objašnjeni pojmovi vrijede i za druge distribucije.

Sažetak

U ovom smo vas članku upoznali s GRUB-om, naznačili gdje možete pronaći dokumentaciju i na mreži i izvan nje i objasnili kako pristupiti scenariju u kojem je sustav zaustavio ispravno pokretanje zbog problema u vezi s pokretačem.

Srećom, GRUB je jedan od alata koji je najbolje dokumentiran i lako možete pronaći pomoć u instaliranim dokumentima ili na mreži koristeći resurse koje smo podijelili u ovom članku.

Imate li pitanja ili komentara? Ne ustručavajte se javiti nam putem obrasca za komentare u nastavku. Radujemo se vašem javljanju!