Kas yra GRUB: išsamus GNU įkrovos tvarkyklės vadovas

Paskutiniai pakeitimai: spalio 14 d. 2025 m.
  • GRUB yra GNU įkrovos tvarkyklė, kuri parenka ir įkelia operacinę sistemą, palaikydama BIOS/UEFI ir kelių sistemų įkrovą.
  • GRUB 2 prideda modulius, patobulintą failų sistemos palaikymą, UUID paiešką ir grafinį meniu / terminalą.
  • Konfigūracija valdoma per /etc/default/grub ir 40_custom, iš naujo generuojama naudojant update-grub arba grub2-mkconfig.
  • Saugumas: apsaugokite GRUB slaptažodžiu, naudokite LUKS šifravimą ir taikykite stiprias slaptažodžių politikos nuostatas.

Bendra GRUB iliustracija

Jei kompiuteryje įdiegėte GNU/Linux arba naudojate kelias operacines sistemas, tikriausiai esate girdėję apie GRUB. Tai maža, bet galinga programa, kurią matote prieš pat paleidžiant sistemą, leisdama jums pasirinkti, ką įkelti. Nors ji dažnai lieka nepastebėta, jos vaidmuo yra labai svarbus paleidžiant operacinę sistemą ir sklandžiai perduodant valdymą branduoliui.

Kompiuterių paleidimo pasaulyje GRUB dėl savo galios ir lankstumo tapo faktiniu standartu. Sukurtas GNU projekto metu, jis dabar yra labiausiai paplitęs paleidimo tvarkyklė GNU/Linux , suderinama su daugybe architektūrų ir failų sistemų, patogi naudoti pradedantiesiems ir tuo pačiu metu yra tarsi šveicariškas peilis tiems, kurie tiksliai derina kiekvieną paleidimo proceso detalę.

Kas yra GNU GRUB ir kam jis skirtas?

„GNU GRUB“ („GNU GRand Unified Bootloader“) yra kelių įkrovų tvarkyklė: programinė įranga, kurią programinė įranga (BIOS arba UEFI) paleidžia įjungus kompiuterį, kad pasirinktų ir įkeltų operacinę sistemą. Ji leidžia vartotojams pasirinkti meniu elementus, perduoti parametrus branduoliui, paleisti iš tinklo ir netgi sąveikauti su konsole, kad būtų galima išspręsti konkrečias problemas.

Jis daugiausia naudojamas GNU/Linux distribucijose, nors jį naudojo ir kitos sistemos, tokios kaip „Solaris“ x86 versijoje. Šiuolaikinėse UEFI sistemose programinė įranga tiesiogiai įkelia GRUB vykdomąjį failą, esantį EFI sistemos skaidinyje (ESP) , jei jis yra užregistruotas NVRAM; BIOS/MBR GRUB užima pradinius disko sektorius ir tęsia darbą iš ten.

Be įprasto meniu, GRUB atitinka „Multiboot“ specifikaciją, o tai reiškia, kad gali sklandžiai paleisti suderinamus branduolius . Kai branduolys yra atmintyje, GRUB perduoda valdymą ir jo darbas yra atliktas, o tai nemenkas žygdarbis.

GRUB įkrovos parinkčių ekranas

Techninis lapas ir projekto duomenys

GRUB yra GNU ekosistemos dalis ir platinama kaip nemokama programinė įranga pagal GNU GPL v3 arba naujesnę licenciją . Ji kuriama atvirojo kodo, turi oficialią saugyklą, klaidų sekimo priemonę ir svetainę bei labai aktyvią bendruomenę.

Jis parašytas daugiausia C ir asemblerio kalbomis ir veikia keliose platformose: IA-32, x86-64 ir „PowerPC“, be kita ko. Dabartinė šaka yra GRUB 2 (istorinės „GRUB Legacy“ pakartotinė versija). Naujausia išleista stabili versija yra 2.12 (2023 m. gruodžio 20 d.). Jei norite patikrinti savo vietinę versiją, galite paleisti: grub-install --version ir pamatysite atitinkamą grandinę.

Truputis istorijos ir evoliucijos

GRUB atsirado kaip Ericho Stefano Boleyno iniciatyva GNU Hurd ir Macho mikrobranduolio kontekste. Siekiant išspręsti įkrovos metodų skirtumus, buvo sukurta „Multiboot“ specifikacija, kuri sudarė sąlygas įkrovos įkrovikliams ir branduoliams „kalbėti ta pačia kalba“. 1999 m. Gordonas Matzigkeitas ir Yoshinori Okuji vadovavo jos priėmimui kaip oficialaus GNU projekto paketo.

Apie 2002 m. grupė japonų tyrėjų pradėjo kurti PUPA (Preliminary Universal Programming Architecture – preliminarią universalią programavimo architektūrą), siekdami perrašyti GRUB, kad jis taptų patikimesnis ir modulinis. Šios pastangos lėmė GRUB 2 atsiradimą , o ankstesnė versija tapo žinoma kaip „GRUB Legacy“ (kurios 0.97 versija paskutinį kartą atnaujinta 2005 m.). Nuo 2007 m. keli distribuciniai paketai perėjo prie GRUB 2, o iki 2009 m. pabaigos didžioji dauguma jų įtraukė jį pagal numatytuosius nustatymus.

GRUB įkrovos proceso schema

Kaip paleisti kompiuterį naudojant GRUB (BIOS ir UEFI)

Įjungus kompiuterį, programinė įranga atlieka patikrinimus (RAM, laikrodis, įrenginiai, paleidimo tvarka) ir ieško paleidimo tvarkyklės. Sistemose su BIOS/MBR valdymas perduodamas Pagrindinis įkrovos įrašas (MBR), pradiniai 512 disko baitųGRUB buvo padalintas į etapus: 1 etapas (minimalus kodas MBR), 1.5 etapas (vėlesniuose sektoriuose, sujungiant failus, kad būtų galima suprasti) ir 2 etapas (meniu ir išplėstinės funkcijos). GRUB 2 versijoje to „1.5“ nebėra; dabar yra specialūs atvaizdai, pvz. boot.img, core.img ir modulius (*.mod), kurie yra sujungiami pagal diegimą.

  „Linux“ sistemos administravimas: išsamus vadovas sistemų administratoriams

UEFI atveju procesas yra tiesesnis: programinė įranga vykdo GRUB EFI dvejetainį failą iš EFI skaidinio , jei jis teisingai įdiegtas ir užregistruotas. Abiem atvejais GRUB pateikia meniu arba konsolę, įkelia pasirinktą branduolį ir perduoda vykdymą jam.

Kelių įkrovų specifikacija ir suderinamumas

GRUB įgyvendina „Multiboot“ funkciją, leidžiančią paleisti suderinamus branduolius be specialių „gudrybių“. Be to, sistemoms, kurios to nepalaiko (pvz., „Windows“ ar DOS ), jis siūlo grandininį įkėlimą, nukreiptą į pirmąjį skirsnio, kuriame yra įkrovos įkrovos programos, sektorių.

Jo failų sistemų suderinamumas yra platus: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS ir kt. Jis taip pat gali skaityti iš LVM tomų ir RAID masyvų, o tai yra didelis privalumas, kai saugojimo struktūra yra sudėtinga.

Išskirtinės savybės ir funkcijos

  • Meniu sąsaja Konfigūruojamas ir labai lankstus interaktyvus terminalas su automatiniu Tab užbaigimu ir Bash stiliaus sparčiaisiais klavišais.
  • Parama LBA (loginis blokų adresavimas) įveikti klasikinius BIOS apribojimus ir skaityti daugiau nei 1024 cilindrus.
  • Talpa tinklo įkrovimas (PXE/TFTP) ir nuotoliniai terminalai, naudingi centralizuoto valdymo scenarijuose.
  • Automatinis kelių vykdomųjų formatų dekompresavimas ir atpažinimas.
  • Nuolatinis kintamųjų saugojimas su išsaugoti_aplinką / įkelti_aplinką y grub-editenv (kai platforma tai leidžia).
  • Visa RAM aptikimas, disko geometrijos nepriklausomumas ir paieškos mechanizmai pagal žymas ir UUID.
  • Grafinis meniu ir fonų palaikymas bei modulinis dizainas, kuris išlaiko core.img mažas ir įkelia modulius pagal poreikį.

Pagrindinė terminologija: įrenginiai, skaidiniai ir keliai

GRUB diskams ir skaidiniams suteikia savo pavadinimus. Pirmasis diskas paprastai yra (hd0), pirmasis skaidinys (hd0,1) GRUB 2 sistemoje (atminkite: GRUB 2 sistemoje numeracija prasideda nuo 1; Legacy sistemoje – nuo ​​0). Norint nurodyti visą diską, skaidinys praleidžiamas: (hd0).

Norint nurodyti failus, įrenginys sujungiamas su keliu: (hd0,1)/ruta/al/archivo. Tai taip pat palaiko blokavimo sąrašus (blokų sąrašai), kai reikia nurodyti tikslią failo vietą diske, kuri failų sistemoje nėra matoma, pavyzdžiui (hd0,1)+1 pirmajam skaidinio sektoriui, naudinga su chainloader +1.

„Šakninė failų sistema“ GRUB sistemoje nėra tas pats, kas „/“ Linux sistemoje. Tai tiesiog šakninis skaidinys, iš kurio GRUB skaitys savo failus ; kai „Linux“ branduolys perima valdymą, jis apibrėžia savo tikrąją šakninę skaidinį, ir visa kita GRUB sistemoje tampa nereikšminga.

GRUB sąsajos

GRUB siūlo tris pagrindinius rodinius. Labiausiai žinomas yra meniu su iš anksto sukonfigūruotais įrašais; galite naršyti rodyklių klavišais, paleisti sistemą paspausdami Enter, redaguoti įrašą paspausdami „e“ arba atidaryti konsolę paspausdami „c“.

Įvesties redaktorius leidžia keisti eilutes akimirksniu (pridėti su „o/O“, redaguoti su „e“, ištrinti su „d“) ir, jei viskas atrodo gerai, paleisti su „b“. Tai idealiai tinka branduolio parametrams testuoti neliečiant failų.

Konsolė yra galingiausias režimas: ji palaiko kontekstinį automatinį užbaigimą, redagavimo sparčiuosius klavišus ir visas GRUB vidines komandas , skirtas diskų paieškai, branduolio / initrd įkėlimui arba grandininiam įkėlimui. Jei konfigūracijos failo nėra arba jis sugadintas, GRUB jus paleis čia, kad galėtumėte rankiniu būdu išspręsti problemą.

Dažni klaidų pranešimai

Klaidos gali atsirasti pradiniame etape (labiau ribotos) arba įkeliant meniu ir modulius (aiškesnis aprašymas). Žemiau pateikiamas tipinių kodų, kuriuos gali rodyti GRUB, rinkinys, perfrazuotas aiškumo dėlei :

  • 1: Neteisingas arba neabsoliutus kelias; 2: Neteisingas failo tipas (ne įprastas failas); 3–4: Sugadinti duomenys / antraštė dekompresijos metu; 5: pažeista skaidinių lentelė arba negaliojantis.
  • 6: 1/2 etapo nesuderinamumas; 7: Nepalaikomas mažesnio nei 1 MB įkėlimas; 8: Bandyta paleisti neįkėlus branduolio; 9: Nežinoma įkrovos klaida.
  • 10: Kelių įkrovų funkcijos nepalaikomos; 11: Įrenginys neatpažintas; 12: Netinkamas įrenginys; 13: Nepalaikomas vykdomojo failo formatas.
  • 14: Failų sistema neleidžia nuskaityti viso failo; 15: failas nerastas; 16: Nenuosekli failų sistemos struktūra.
  • 17: Nepavyksta prijungti pasirinkto skaidinio; 18: Cilindras yra už BIOS palaikomo diapazono ribų (įprasta senesniuose diskuose); 19: Initrd prieš branduolį.
  • 20: Moduliai prieš kelių įkrovų branduolį; 21: Pasirinkto disko nėra; 22: Neegzistuojantis skaidinys; 23: Klaida interpretuojant skaičių.
  • 24: Prieiga prie bloko už skaidinio ribų; 25: Disko skaitymo klaida; 26: Per daug simbolinių nuorodų; 27: Nežinoma komanda.
  • 28: Elementas netelpa atmintyje; 29: Disko rašymo klaida; 30: Neteisingas argumentas; 31: Failas nesulygiuotas pagal sektorius (ReiserFS, naudokite notail).
  • 32: Reikalingas autentifikavimas; 33: Nuoseklusis įrenginys nesukonfigūruotas; 34: Po MBR nėra laisvų sektorių 1.5 etapui (konfliktas su EZ-BIOS arba skaidinys paleidžiamas per anksti).
  Kaip sujungti du NTFS skaidinius sistemoje „Windows“: saugūs metodai, apribojimai ir įrankiai

Pagrindinės GRUB komandos

Konsolėje galite vykdyti labai naudingas interaktyvias komandas. Pavyzdžiui, boot paleidžia paskutinį įkeltą (branduolį arba grandininį įkroviklį) ir chainloader <archivo> įkelia sektorių arba failą iš grandinės; tipiškas „Windows“ spartusis klavišas yra chainloader +1.

displaymem rodo atminties naudojimą pagal BIOS, o tai praverčia, jei nesate tikri dėl aptiktos RAM. initrd <archivo> nurodote pradinį RAM disko atvaizdą, kurio reikia branduoliui.

Norėdami įdiegti į MBR iš GRUB Legacy konsolės, naudojote install su maršrutais į 1 etapas, 2 etapas ir, pasirinktinai, į konfigūracijos failą. Šiandien GRUB 2 sistemoje įprasta naudoti grub-install ir atkurti meniu su update-grub/grub2-mkconfig.

Įsakymas kernel nurodo branduolio dvejetainį failą ir jo parametrus, pavyzdžiui: kernel /vmlinuz root=/dev/sda5Paprastai prieš tai eina root (hdX,Y) o rootnoverify nustatyti skaidinį, iš kurio GRUB skaitys.

Konfigūracijos failai ir direktyvos

GRUB Legacy versijoje meniu buvo /boot/grub/menu.lst o grub.conf, su tokiomis direktyvomis kaip color, default, fallback, hiddenmenu, password, timeout, splashimage ir blokai title su kiekvienos sistemos užsakymais.

Klasikinis pavyzdys (perfrazuotas) apimtų „Linux“ skyrių su root (hd0,2), kernel su šakninis parametras = /…Ir bootir dar vienas skirtas „Windows“ su rootnoverify (hd0,1) y chainloader +1.

GRUB 2 sistemoje automatiškai sugeneruotas failas yra /boot/grub/grub.cfgNerekomenduojama jo redaguoti ranka; vietoj to jis koreguojamas /etc/default/grub (tokios vertės kaip GRUB_TIMEOUT, GRUB_DEFAULTir kt.) ir pasirinktiniai įrašai pridedami /etc/grub.d/40_customTada jis vykdomas. update-grub o grub2-mkconfig atkurti meniu.

Pagrindiniai GRUB Legacy ir GRUB 2 skirtumai

  • Konfigūracinis failas buvo išvestas iš menu.lst/grub.conf a grub.cfg, su atnaujinta sintakse ir komandomis bei automatiniu generavimu naudojant grub-mkconfig.
  • Dalinių numeravimas prasideda 1 m GRUB 2 sistemoje („Legacy“ sistemoje jis prasidėdavo nuo 0).
  • Kintamųjų išlikimas su save_env/load_env kai kuriose konfigūracijose.
  • Geresnis maršruto aptikimas ir paieška pagal UUID / žymaspalaikomos daugiau failų sistemų;
  • Tiesioginis skaitymas iš LVM ir RAID.
  • Terminalo ir meniu grafika bei pertvarkyti vaizdai: 1.5 etapo nebėra; boot.img, core.img ir dinaminius modulius (*.mod).

Saugumas ir grūdinimas naudojant GRUB

Prastai apsaugota įkrovos tvarkyklė yra tarsi sietas. Jei kas nors, turintis fizinę prieigą, gali redaguoti branduolio parametrus arba paleisti kitą įrašą, tai iš esmės išjungia jūsų saugumo priemones . Štai kodėl patartina apsaugoti GRUB slaptažodžiais ir įdiegti geriausią praktiką.

Nustatykite vieną tvirtas slaptažodis kad apribotumėte įrašų modifikavimą arba prieigą prie konsolės. GRUB 2 sistemoje naudokite vartotojo vardus ir slaptažodžius su grub-mkpasswd-pbkdf2 ir sukonfigūruokite atitinkamas taisykles scenarijuose /etc/grub.d/.

Taip pat yra disko šifravimas naudojant LUKS , todėl net jei kas nors pavogtų kompiuterį, jis negalėtų nuskaityti duomenų. Tai taip pat užtikrina griežtą sistemos slaptažodžių politiką, siekiant sumažinti „brute-force“ atakų skaičių.

Išmintingai tvarkykite savo žurnalų istoriją : tuos, kurie suteikia užpuolikui užuominų, reikėtų sumažinti iki minimumo arba centralizuoti naudojant prieigos kontrolę; tuos, kurie padeda audituoti kenkėjiškus bandymus, reikėtų kaupti ir analizuoti saugioje vietoje.

Norėdami aptikti kitas įdiegtas sistemas ir automatiškai generuoti įrašus, įdiekite os-proberTai sutaupys jūsų laiką ir padės išvengti klaidų atkuriant meniu.

  MSR skaidinys sistemoje „Windows“: viskas, ką reikia žinoti ir kaip jį valdyti

Montavimas ir priežiūra

Jei GRUB neįdiegėte diegdami savo distribuciją, galite tai padaryti vėliau. GRUB 2 sistemoje paleiskite sudo grub-install /dev/sdX (pakeiskite savo disku) ir tada sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgKitą kartą paleidus sistemą, pamatysite meniu.

Klasikinė GRUB „Legacy“ konsolės procedūra yra nurodyti šakninį vartotoją ir paleisti diegimą: root (hd1,0) po to setup (hd1,0) antrojo disko pirmajam skaidiniui arba setup (hd1) jei parodysite to antrojo disko MBR.

Redaguoti tiesiogiai /boot/grub/grub.cfg Tai nėra gera idėja GRUB 2, net jei tai techniškai įmanoma. Rekomenduojamas maršrutas yra keisti /etc/default/grub, naudokite /etc/grub.d/40_custom savo turiniui ir regeneracijai.

Praktiniai klausimai ir naudingi trumpesni veiksmai

Kaip sužinoti, kuris yra įkrovos skaidinys /dev/sda aplanke? BIOS/MBR sistemose: sudo fdisk -l /dev/sda (žr. žvaigždute pažymėtą „Boot“). GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT ir ieškokite EFI skaidinio (FAT32, įveskite EF00/flags, ypač). Taip pat sudo efibootmgr -v rodo įrašytus įkrovos įrašus.

Kaip gauti skaidinio UUID? su blkid o lsblk -f. Por ejemplo: sudo blkid /dev/sda2 grąžina savo UUID ir kitus metaduomenis.

Kaip priversti GRUB 2 palaukti 10 sekundžių prieš įvedant numatytąjį įrašą? Koreguoja /etc/default/grub su GRUB_TIMEOUT=10 (ir, jei taikoma, GRUB_TIMEOUT_STYLE=menu) ir vykdo sudo update-grub o grub2-mkconfig.

GRUB Legacy komandas diegti antrojo disko pirmajame skaidinyje? Atidarykite konsolę ir paleiskite: root (hd1,0) ir setup (hd1,0)Jei norėtumėte MBR, tai būtų setup (hd1).

GRUB 2 konfigūracijos keitimo veiksmai? 1) Redaguoti /etc/default/grub (pvz., GRUB_DEFAULT, GRUB_TIMEOUT), 2) įtraukite įrašus /etc/grub.d/40_custom jei jums jų reikia, 3) regeneruokite su update-grub/grub2-mkconfig, 4) perkraukite ir išbandykite.

Kur GRUB 2 įdėti pasirinktinius meniu? En /etc/grub.d/40_custom (arba savo failus /etc/grub.d/ su tinkamais leidimais). Niekada neredaguokite rankiniu būdu /boot/grub/grub.cfg išskyrus avarinį atvejį.

Kur įrašai buvo saugomi „GRUB Legacy“ sistemoje? En /boot/grub/menu.lst o grub.conf, pagal pasiskirstymą.

Kaip pasiekti GRUB konsolę iš meniu? GRUB 2 arba Legacy versijoje paspauskite klavišą „c“. Norėdami redaguoti konkretų įrašą, paspauskite „e“. Abu spartieji klavišai yra labai naudingi, kai reikia diagnozuoti problemas akimirksniu.

Įprastų variantų pavyzdžiai

Numatytasis įkrovos pasirinkimas: GRUB_DEFAULT=0 prasideda pirmasis kėlinys; su GRUB_DEFAULT=saved prisimena paskutinę naudotą konfigūraciją. Po pakeitimo iš naujo sugeneruokite konfigūraciją.

Laukimo laikas: GRUB_TIMEOUT=4 reguliuoja meniu uždelsimą; su 0 prasideda be pertraukos; kai kuriais atvejais galite paslėpti meniu naudodami GRUB_TIMEOUT_STYLE=hidden už švaresnę pradžią.

Meniu atnaujinimas: Debian/Ubuntu ir išvestinėse programose sudo update-grub; kituose, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Įsitikinkite, kad turite os-prober įdiegta, jei norite automatiškai aptikti kitas sistemas.

Nors GRUB pasirodo ir ne GNU/Linux kontekstuose, atminkite, kad tai nėra palaikymo tarnyba. Jei jūsų problema susijusi tik su „Windows“, praktiškiausia kreiptis į tai sistemai skirtus forumus, kad gautumėte specializuotą pagalbą.

GRUB išsivystė iš paprasto įkrovos meniu į tikrą priešsisteminę aplinką, galinčią paleisti kelias operacines sistemas, valdyti sudėtingus diskus ir padėti atkurti sistemą vos keliomis komandomis. Tinkamai sukonfigūravus ir šiek tiek apsaugant sistemą (GRUB slaptažodžiai, LUKS šifravimas, gerai valdomos raktų politikos ir žurnalai), turėsite patikimą, lankstų ir, svarbiausia, kontroliuojamą įkrovos procesą.

UEFI įkrovos rinkinys
Susijęs straipsnis:
UEFI Bootkit: Bootkitty Linux sistemoje ir BlackLotus palikimas