LFCS: Grand Unified Bootloader (GRUB) konfigurēšana un problēmu novēršana - 13. daļa


Sakarā ar nesenajām izmaiņām LFCS sertifikācijas eksāmena mērķos, kas stājās spēkā 2016. gada 2. februārī, nepieciešamās tēmas pievienojam arī LFCE sērijai.

Šajā rakstā mēs iepazīstināsim jūs ar GRUB un paskaidrosim, kāpēc ir nepieciešams sāknēšanas iekrāvējs un kā tas sistēmai piešķir daudzpusību.

Linux sāknēšanas process no brīža, kad nospiežat datora barošanas pogu, līdz iegūstat pilnībā funkcionējošu sistēmu, ievēro šo augsta līmeņa secību:

  1. 1. Process, kas pazīstams kā POST (Power-On Self Test), veic vispārēju datora aparatūras komponentu pārbaudi.
  2. 2. Kad POST ir pabeigts, tas nodod vadību sāknēšanas iekrāvējam, kas savukārt ielādē Linux kodolu atmiņā (kopā ar initramfs) un izpilda to. Linux visbiežāk izmantotais sāknēšanas iekrāvējs ir GRand Unified Boot loader vai īsāk sakot GRUB.
  3. 3. Kodols pārbauda aparatūru un piekļūst tai, un pēc tam palaiž sākotnējo procesu (galvenokārt pazīstams ar tā vispārīgo nosaukumu “init”), kas savukārt pabeidz sistēmas sāknēšanu, palaižot pakalpojumus.

Šīs sērijas 7. daļā (“pakalpojumu pārvaldības sistēmas un rīki, ko izmanto mūsdienu Linux izplatītāji. Pirms turpināt darbu, ieteicams pārskatīt šo rakstu.

Iepazīstinām ar GRUB sāknēšanas iekrāvēju

Divas galvenās GRUB versijas (v1 dažreiz dēvē par GRUB Legacy un v2) var atrast mūsdienu sistēmās, lai gan lielākā daļa izplatītāju jaunākajās versijās pēc noklusējuma izmanto v2. Tikai Red Hat Enterprise Linux 6 un tā atvasinājumi joprojām izmanto v1.

Tādējādi šajā rokasgrāmatā mēs galvenokārt pievērsīsimies v2 iezīmēm.

Neatkarīgi no GRUB versijas sāknēšanas iekrāvējs ļauj lietotājam:

  1. 1). modificēt sistēmas uzvedību, norādot dažādus izmantojamos kodolus,
  2. 2). izvēlieties starp alternatīvām operētājsistēmām sāknēšanai un
  3. 3). pievienojiet vai rediģējiet konfigurācijas posmus, lai cita starpā mainītu sāknēšanas opcijas.

Šodien GRUB uztur GNU projekts, un tas ir labi dokumentēts viņu vietnē. Apskatot šo rokasgrāmatu, ieteicams izmantot GNU oficiālo dokumentāciju.

Kad sistēma sāk darboties, galvenajā konsolē tiek parādīts šāds GRUB ekrāns. Sākumā jums tiek piedāvāts izvēlēties starp alternatīviem kodoliem (pēc noklusējuma sistēma tiks sākta, izmantojot jaunāko kodolu), un jums ir atļauts ievadīt GRUB komandrindu (ar c ) vai rediģēt sāknēšanas opcijas (pēc nospiežot taustiņu e ).

Viens no iemesliem, kāpēc jūs apsvērtu sāknēšanu ar vecāku kodolu, ir aparatūras ierīce, kas agrāk darbojās pareizi un pēc jaunināšanas ir sākusi darboties (piemēru skatiet vietnē AskUbuntu forumos).

GRUB v2 konfigurācija tiek nolasīta sāknēšanas laikā no /boot/grub/grub.cfg vai /boot/grub2/grub.cfg , savukārt /boot/grub/v1 tiek izmantoti grub.conf vai /boot/grub/menu.lst . Šie faili NAV rediģējami ar rokām, bet tiek modificēti, pamatojoties uz /etc/default/grub saturu un failiem, kas atrodami /etc/grub.d .

CentOS 7 šeit ir konfigurācijas fails, kas tiek izveidots, pirmo reizi instalējot sistēmu:

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"

Papildus tiešsaistes dokumentācijai varat atrast arī GNU GRUB rokasgrāmatu, izmantojot šādu informāciju:

# info grub

Ja jūs īpaši interesē opcijas, kas pieejamas failam/etc/default/grub, varat tieši izsaukt konfigurācijas sadaļu:

# info -f grub -n 'Simple configuration'

Izmantojot iepriekš minēto komandu, jūs uzzināsiet, ka GRUB_TIMEOUT iestata laiku starp brīdi, kad parādās sākotnējais ekrāns, un sistēmas automātiskās sāknēšanas sākumu, ja vien lietotājs to netraucē. Kad šis mainīgais ir iestatīts uz -1 , sāknēšana netiks sākta, kamēr lietotājs nebūs izdarījis izvēli.

Kad vienā mašīnā ir instalētas vairākas operētājsistēmas vai kodoli, GRUB_DEFAULT nepieciešama vesela skaitļa vērtība, kas norāda, kura OS vai kodola ieraksts GRUB sākotnējā ekrānā ir jāizvēlas, lai sāknētu pēc noklusējuma. Ierakstu sarakstu var apskatīt ne tikai iepriekš parādītajā uzplaiksnījuma ekrānā, bet arī izmantojot šādu komandu:

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

Zemāk redzamajā attēlā redzamajā piemērā, ja mēs vēlamies sāknēt ar kodola versiju 3.10.0-123.el7.x86_64 (4. ieraksts), mums ir jāiestata GRUB_DEFAULT uz 3 (ieraksti tiek iekšēji numurēti, sākot ar nulli) šādi:

GRUB_DEFAULT=3

Viens pēdējais GRUB konfigurācijas mainīgais, kas interesē īpaši, ir GRUB_CMDLINE_LINUX , ko izmanto opciju nodošanai kodolam. Opcijas, kuras var nodot caur GRUB kodolam, ir labi dokumentētas man 7 bootparam.

Pašreizējās iespējas manā CentOS 7 serverī ir šādas:

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"

Kāpēc jūs vēlaties mainīt kodola noklusējuma parametrus vai nodot papildu opcijas? Vienkārši sakot, var būt gadījumi, kad jums jāpaziņo kodolam noteikti aparatūras parametri, kurus tas, iespējams, nespēj pats noteikt, vai ignorēt tās atklātās vērtības.

Tas notika ar mani ne pārāk sen, kad savā 10 gadus vecajā klēpjdatorā izmēģināju Vector Linux, kas ir Slackware atvasinājums. Pēc instalēšanas tas neatrada pareizos iestatījumus manai videokartei, tāpēc man bija jāpārveido kodola opcijas, kas iet caur GRUB, lai tā darbotos.

Vēl viens piemērs ir gadījums, kad, lai veiktu tehniskās apkopes uzdevumus, sistēma jāpārvieto uz viena lietotāja režīmu. To var izdarīt, pievienojot vārdu single vienumam GRUB_CMDLINE_LINUX un restartējot:

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"

Pēc /etc/defalt/grub rediģēšanas jums būs jāpalaiž update-grub (Ubuntu) vai grub2-mkconfig -o/boot/grub2/grub. cfg (CentOS un openSUSE) pēc tam, lai atjauninātu grub.cfg (pretējā gadījumā izmaiņas tiks zaudētas, palaižot).

Šī komanda apstrādās iepriekš minētos sāknēšanas konfigurācijas failus, lai atjauninātu grub.cfg . Šī metode nodrošina, ka izmaiņas ir neatgriezeniskas, savukārt palaišanas laikā caur GRUB ietvertās opcijas ilgs tikai pašreizējās sesijas laikā.

Linux GRUB problēmu novēršana

Ja instalējat otru operētājsistēmu vai ja GRUB konfigurācijas fails tiek sabojāts cilvēcisku kļūdu dēļ, ir veidi, kā jūs varat atgriezt sistēmu kājās un atkal palaist.

Sākuma ekrānā nospiediet c , lai iegūtu GRUB komandrindu (atcerieties, ka varat arī nospiest e , lai rediģētu noklusējuma sāknēšanas opcijas) un izmantojiet palīdzību, lai parādītu pieejamos komandas GRUB uzvednē:

Mēs pievērsīsimies ls, kurā būs uzskaitītas instalētās ierīces un failu sistēmas, un mēs pārbaudīsim, ko tā atrod. Zemāk redzamajā attēlā mēs varam redzēt, ka ir 4 cietie diski (no hd0 līdz hd3 ).

Šķiet, ka ir sadalīts tikai hd0 (par to liecina msdos1 un msdos2, kur 1 un 2 ir nodalījuma numuri un msdos ir sadalīšanas shēma).

Tagad pārbaudīsim pirmo nodalījumu vietnē hd0 (msdos1), lai noskaidrotu, vai mēs tur varam atrast GRUB. Šī pieeja ļaus mums palaist Linux un tur izmantot citus augsta līmeņa rīkus, lai labotu konfigurācijas failu vai pilnībā pārinstalētu GRUB, ja tas ir nepieciešams:

# ls (hd0,msdos1)/

Kā redzam iezīmētajā apgabalā, šajā nodalījumā atradām direktoriju grub2:

Kad esam pārliecināti, ka GRUB atrodas mapē (hd0, msdos1), pateiksim GRUB, kur atrast tā konfigurācijas failu, un pēc tam uzdosim mēģināt palaist izvēlni:

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

Pēc tam izvēlnē GRUB izvēlieties ierakstu un nospiediet Enter, lai sāktu, izmantojot to. Kad sistēma ir palaidusi, varat izdot komandu grub2-install/dev/sdX (nomainiet sdX ar ierīci, kurā vēlaties instalēt GRUB). Pēc tam tiks atjaunināta sāknēšanas informācija un atjaunoti visi saistītie faili.

# grub2-install /dev/sdX

Citi sarežģītāki scenāriji kopā ar ieteiktajiem labojumiem ir dokumentēti Ubuntu GRUB2 problēmu novēršanas rokasgrāmatā. Tur izskaidrotie jēdzieni ir derīgi arī citiem izplatījumiem.

Kopsavilkums

Šajā rakstā mēs esam iepazīstinājuši jūs ar GRUB, norādījuši, kur var atrast dokumentāciju gan tiešsaistē, gan bezsaistē, un paskaidrojuši, kā rīkoties scenārijā, kad sistēma ir pareizi pārtraukusi sāknēšanu ar sāknēšanas ielādētāju saistītas problēmas dēļ.

Par laimi, GRUB ir viens no dokumentiem, kas ir vislabāk dokumentēts, un jūs varat viegli atrast palīdzību vai nu instalētajos dokumentos, vai tiešsaistē, izmantojot resursus, kurus esam kopīgojuši šajā rakstā.

Vai jums ir jautājumi vai komentāri? Nevilcinieties informēt mūs, izmantojot zemāk esošo komentāru formu. Mēs ceram uz jums atbildi!