LFCS: Wéi konfiguréieren an troubleshoot Grand Unified Bootloader (GRUB) - Deel 13


Wéinst de rezente Ännerunge vun den LFCS Zertifizéierungsexamenziler, déi ab dem 2. Februar 2016 effektiv ab dem 2. Februar 2016 wierksam sinn, füüge mir och déi néideg Themen an d'LFCE Serie dobäi.

An dësem Artikel wäerte mir Iech GRUB virstellen an erkläre firwat e Bootloader noutwendeg ass, a wéi et de System villsäiteg bäidréit.

De Linux Bootprozess vun der Zäit wou Dir den Power Button vun Ärem Computer dréckt, bis Dir e voll funktionnelle System kritt, follegt dës High-Level Sequenz:

  1. 1. E Prozess bekannt als POST (Power-On Self Test) mécht eng Gesamtkontroll vun den Hardwarekomponenten vun Ärem Computer.
  2. 2. Wann de POST ofgeschloss ass, gëtt d'Kontroll un de Bootloader iwwerginn, deen am Tour de Linux Kernel an d'Erënnerung lued (zesumme mat initramfs) an ausféiert. De meescht benotzte Bootloader am Linux ass den GRand Unified Boot loader, oder kuerz GRUB.
  3. 3. De Kernel iwwerpréift an zougänglech op d'Hardware, a leeft dann den initialen Prozess (meeschtens bekannt ënner sengem generesche Numm \init), deen am Tour de Systemboot ofgeschloss huet andeems d'Servicer starten.

Am Deel 7 vun dëser Serie (Service Management Systemer an Tools déi vun modernen Linux Verdeelungen benotzt ginn. Dir wëllt dësen Artikel iwwerpréiwen ier Dir weider geet.

Aféierung GRUB Boot Loader

Zwou grouss GRUB Versiounen (v1 heiansdo genannt GRUB Legacy a v2) kënnen a modernen Systemer fonnt ginn, obwuel déi meescht Distributiounen v2 als Standard an hiren leschten Versiounen benotzen. Nëmmen Red Hat Enterprise Linux 6 a seng Derivate benotzen nach haut v1.

Also konzentréiere mir eis haaptsächlech op d'Features vu v2 an dësem Guide.

Onofhängeg vun der GRUB Versioun, e Bootloader erlaabt de Benotzer:

  1. 1). änneren d'Aart a Weis wéi de System sech behält andeems Dir verschidde Kärel spezifizéiert fir ze benotzen,
  2. 2). wielt tëscht alternativen Betribssystemer fir ze booten, an
  3. 3). Konfiguratiounsstrofen addéieren oder änneren fir Bootoptiounen z'änneren, ënner anerem.

Haut gëtt GRUB vum GNU-Projet ënnerhal an ass gutt op hirer Websäit dokumentéiert. Dir sidd encouragéiert d'GNU offiziell Dokumentatioun ze benotzen wann Dir duerch dëse Guide gitt.

Wann de System boott, kritt Dir de folgenden GRUB Bildschierm an der Haaptkonsole presentéiert. Am Ufank gëtt Dir opgefuerdert tëscht alternativen Kärelen ze wielen (par défaut gëtt de System mat dem leschte Kernel booten) an däerf eng GRUB Kommandozeil anzeginn (mat c) oder d'Bootoptiounen änneren (vum dréckt den e Taste).

Ee vun de Grënn firwat Dir iwwerleeë géift mat engem méi alen Kernel ze booten ass en Hardware-Apparat, dee fréier richteg funktionnéiert huet an no engem Upgrade ugefaang huet (kuckt op dëse Link an den AskUbuntu Foren fir e Beispill).

D'GRUB v2 Konfiguratioun gëtt beim Boot vun /boot/grub/grub.cfg oder /boot/grub2/grub.cfg gelies, wärend /boot/grub/ grub.conf oder /boot/grub/menu.lst ginn an v1. Dës Dateie sollen NET mat der Hand geännert ginn, awer ginn geännert op Basis vum Inhalt vu /etc/default/grub an de Fichier'en, déi bannent /etc/grub.d fonnt ginn.

An engem CentOS 7, hei ass d'Konfiguratiounsdatei déi erstallt gëtt wann de System fir d'éischt installéiert ass:

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"

Zousätzlech zu der Online Dokumentatioun, kënnt Dir och d'GNU GRUB Handbuch fannen mat Informatioun wéi follegt:

# info grub

Wann Dir speziell un d'Optioune fir /etc/default/grub interesséiert sidd, kënnt Dir d'Konfiguratiounssektioun direkt opruffen:

# info -f grub -n 'Simple configuration'

Wann Dir de Kommando uewen benotzt, fannt Dir eraus datt GRUB_TIMEOUT d'Zäit setzt tëscht dem Moment wou den initialen Écran erschéngt an de System automatesch Booten ufänkt, ausser wann et vum Benotzer ënnerbrach gëtt. Wann dës Variabel op -1 gesat ass, gëtt de Boot net gestart bis de Benotzer eng Auswiel mécht.

Wann e puer Betribssystemer oder Kernelen an der selwechter Maschinn installéiert sinn, erfuerdert GRUB_DEFAULT en ganz Zuelenwäert, deen ugeet wéi eng OS oder Kernelentrée am GRUB initialen Écran soll gewielt ginn fir als Standard ze booten. D'Lëscht vun den Entréen kann net nëmmen am Splash-Bildschierm ugewise ginn, awer och mat de folgende Kommando:

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

Am Beispill am Bild hei ënnen, wa mir wëllen mat der Kernel Versioun 3.10.0-123.el7.x86_64 (4. Entrée) booten, musse mir GRUB_DEFAULT op 3 setzen (Einträg sinn intern nummeréiert mat Null unzefänken) wéi follegt:

GRUB_DEFAULT=3

Eng lescht GRUB Konfiguratiounsvariabel, déi vu speziellen Interesse ass, ass GRUB_CMDLINE_LINUX, déi benotzt gëtt fir Optiounen un de Kärel weiderzeginn. D'Optiounen, déi duerch GRUB an de Kernel passéiert kënne ginn, sinn gutt dokumentéiert am Man 7 Bootparam.

Aktuell Optiounen a mengem CentOS 7 Server sinn:

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"

Firwat wëllt Dir d'Standard Kernelparameter änneren oder extra Optiounen passéieren? An einfache Begrëffer, et kann Zäite ginn, wann Dir de Kärel bestëmmte Hardware Parameteren soen muss, datt et net fäheg sinn eleng ze bestëmmen, oder d'Wäerter iwwerdribblen, datt et z'entdecken.

Dëst ass mir viru net ze laang geschitt wéi ech Vector Linux probéiert hunn, eng Derivat vu Slackware, op mengem 10 Joer ale Laptop. No der Installatioun huet et net déi richteg Astellunge fir meng Videokarte festgestallt, sou datt ech d'Kerneloptiounen duerch GRUB geännert hunn, fir datt et funktionnéiert.

En anert Beispill ass wann Dir de System an de Single-Benotzer-Modus musst bréngen fir Ënnerhaltsaufgaben ze maachen. Dir kënnt dat maachen andeems Dir d'Wuert Single op GRUB_CMDLINE_LINUX bäidréit an nei starten:

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"

Nodeems Dir /etc/defalt/grub geännert hutt, musst Dir update-grub (Ubuntu) oder grub2-mkconfig -o /boot/grub2/grub lafen. cfg (CentOS an openSUSE) duerno fir grub.cfg ze aktualiséieren (soss ginn d'Ännerunge beim Boot verluer).

Dëse Kommando veraarbecht d'Bootkonfiguratiounsdateien déi virdru erwähnt sinn fir grub.cfg ze aktualiséieren. Dës Method garantéiert datt d'Ännerunge permanent sinn, während d'Optiounen, déi duerch GRUB bei der Bootzäit passéiert sinn, nëmme während der aktueller Sessioun daueren.

Linux GRUB Themen fixéieren

Wann Dir en zweeten Betriebssystem installéiert oder wann Är GRUB Konfiguratiounsdatei wéinst mënschleche Feeler korrupt gëtt, ginn et Weeër fir Äre System erëm op d'Been ze kréien an erëm ze booten.

Am initialen Écran, dréckt c fir eng GRUB Kommandozeil ze kréien (erënnert datt Dir och e drécke kënnt fir d'Standardbootoptiounen z'änneren), a benotzt Hëllef fir déi verfügbar ze bréngen Kommandoen an der GRUB Prompt:

Mir konzentréieren eis op ls, déi d'installéiert Geräter an Dateiesystemer oplëschten, a mir iwwerpréiwen wat et fënnt. Am Bild hei drënner kënne mir gesinn datt et 4 Festplazen sinn (hd0 duerch hd3).

Nëmmen hd0 schéngt opgedeelt ze sinn (wéi beweist vu msdos1 an msdos2, wou 1 an 2 d'Partitionsnummeren sinn an msdos d'Partitionéierungsschema ass).

Loosst eis elo déi éischt Partition op hd0 (msdos1) ënnersichen fir ze kucken ob mir GRUB do fannen. Dës Approche erlaabt eis Linux ze booten an do aner High Level Tools ze benotzen fir d'Konfiguratiounsdatei ze reparéieren oder GRUB ganz nei z'installéieren wann et néideg ass:

# ls (hd0,msdos1)/

Wéi mir an der markéierter Regioun kënne gesinn, hu mir de grub2 Verzeichnis an dëser Partition fonnt:

Wann mir sécher sinn datt GRUB an (hd0,msdos1) wunnt, loosst eis GRUB soen wou se seng Konfiguratiounsdatei fannen an se dann instruéieren fir säi Menü ze starten:

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

Dann am GRUB Menü, wielt eng Entrée an dréckt Enter fir se ze booten. Wann de System gestart ass, kënnt Dir de Kommando grub2-install /dev/sdX ausginn (änneren sdX mam Apparat op deem Dir GRUB installéiere wëllt). D'Bootinformatioun gëtt dann aktualiséiert an all verbonne Dateie ginn restauréiert.

# grub2-install /dev/sdX

Aner méi komplex Szenarie ginn dokumentéiert, zesumme mat hire proposéierte Fixer, am Ubuntu GRUB2 Troubleshooting Guide. D'Konzepter, déi do erkläert ginn, sinn och gëlteg fir aner Verdeelungen.

Resumé

An dësem Artikel hu mir Iech op GRUB agefouert, uginn wou Dir Dokumentatioun souwuel online wéi offline fannt, an erkläert wéi Dir en Szenario ugoe kënnt wou e System opgehalen huet richteg ze booten wéinst engem Bootloader-relatéierten Thema.

Glécklecherweis ass GRUB ee vun den Tools déi am beschten dokumentéiert sinn an Dir kënnt einfach Hëllef fannen entweder an den installéierten Dokumenter oder online mat de Ressourcen déi mir an dësem Artikel gedeelt hunn.

Hutt Dir Froen oder Kommentaren? Zéckt net eis matzedeelen andeems Dir de Kommentarformular hei drënner benotzt. Mir freeën eis vun Iech ze héieren!