- GRUB ir GNU sāknēšanas pārvaldnieks, kas atlasa un ielādē operētājsistēmu, atbalstot BIOS/UEFI un Multiboot.
- GRUB 2 pievieno moduļus, uzlabotu failu sistēmas atbalstu, UUID meklēšanu un grafisku izvēlni/termināli.
- Konfigurāciju pārvalda, izmantojot /etc/default/grub un 40_custom, un to var atkārtoti ģenerēt ar update-grub vai grub2-mkconfig.
- Drošība: Aizsargājiet GRUB ar paroli, izmantojiet LUKS šifrēšanu un ievērojiet spēcīgas paroļu politikas.
Ja datorā esat instalējis GNU/Linux vai izmantojat vairākas operētājsistēmas, iespējams, esat dzirdējuši par GRUB. Tā ir maza, bet jaudīga programma, ko redzat tieši pirms sistēmas palaišanas, ļaujot izvēlēties, ko ielādēt. Lai gan tā bieži vien paliek nepamanīta, tās loma ir izšķiroša operētājsistēmas palaišanā un vienmērīgā vadības nodošanā kodolam.
Datoru palaišanas pasaulē GRUB ir kļuvis par faktisko standartu, pateicoties tā jaudai un elastībai. Radīts GNU projekta ietvaros, tas tagad ir visizplatītākais palaišanas pārvaldnieks GNU/Linux vidē , saderīgs ar plašu arhitektūru un failu sistēmu klāstu, lietotājam draudzīgs iesācējiem un vienlaikus kā Šveices armijas nazis tiem, kas precīzi noregulē katru palaišanas procesa detaļu.
Kas ir GNU GRUB un kam tas paredzēts?
GNU GRUB (GNU GRand Unified Bootloader) ir vairāku palaišanas sistēmu pārvaldnieks: programmatūra, ko programmaparatūra (BIOS vai UEFI) palaiž, kad dators tiek ieslēgts, lai izvēlētos un ielādētu operētājsistēmu. Tā ļauj lietotājiem atlasīt izvēlnes vienumus, nodot parametrus kodolam, palaist datoru no tīkla un pat mijiedarboties ar konsoli, lai novērstu konkrētas problēmas.
To galvenokārt izmanto GNU/Linux distribūcijās, lai gan to ir izmantojušas arī citas sistēmas, piemēram, Solaris uz x86. Mūsdienu UEFI sistēmās programmaparatūra tieši ielādē GRUB izpildāmo failu, kas atrodas EFI sistēmas nodalījumā (ESP) , ja tas ir reģistrēts NVRAM; BIOS/MBR GRUB aizņem diska sākotnējos sektorus un turpina darbu no turienes.
Papildus tipiskajai izvēlnei GRUB atbilst Multiboot specifikācijai, kas nozīmē, ka tas var nemanāmi ielādēt saderīgus kodolus . Un, kad kodols ir atmiņā, GRUB nodod kontroli un tā darbs ir paveikts, kas nav viegls uzdevums.

Tehniskā lapa un projekta dati
GRUB ir daļa no GNU ekosistēmas un tiek izplatīta kā bezmaksas programmatūra saskaņā ar GNU GPL v3 vai jaunāku licenci . Tā izstrāde ir atvērtā koda programmatūra ar oficiālu repozitoriju, kļūdu izsekotāju un tīmekļa vietni, kā arī ļoti aktīvu kopienu.
Tas galvenokārt ir rakstīts C un asemblera valodā un darbojas vairākās platformās: IA-32, x86-64 un PowerPC, cita starpā. Pašreizējā atzara ir GRUB 2 (vēsturiskā “GRUB Legacy” atkārtota ieviešana). Jaunākā izlaistā stabilā versija ir 2.12 (2023. gada 20. decembris). Ja vēlaties pārbaudīt savu lokālo versiju, varat palaist: grub-install --version un jūs redzēsiet atbilstošo ķēdi.
Nedaudz par vēsturi un evolūciju
GRUB aizsākās kā Ēriha Stefana Boleina iniciatīva GNU Hurd un Mach mikrokodola kontekstā. Lai novērstu atšķirības sāknēšanas metodēs, tika izveidota Multiboot specifikācija, kas veicināja sāknēšanas ielādētāju un kodolu "runāšanu vienā valodā". 1999. gadā Gordons Macigkeits un Jošinori Okudži vadīja tās pieņemšanu kā oficiālu GNU projekta pakotni.
Ap 2002. gadu japāņu pētnieku grupa uzsāka PUPA (Preliminary Universal Programming Architecture — provizorisko universālo programmēšanas arhitektūru) ar mērķi pārrakstīt GRUB, lai padarītu to robustāku un modulārāku. Šīs pūles rezultējās GRUB 2 izstrādē , savukārt iepriekšējā versija kļuva pazīstama kā "GRUB Legacy" (kuras versija 0.97 pēdējo reizi tika atjaunināta 2005. gadā). Sākot ar 2007. gadu, vairākas izplatīšanas versijas migrēja uz GRUB 2, un līdz 2009. gada beigām lielākā daļa to iekļāva pēc noklusējuma.
Kā startēt datoru, izmantojot GRUB (BIOS un UEFI)
Ieslēdzot datoru, programmaparatūra veic pārbaudes (RAM, pulkstenis, ierīces, sāknēšanas secība) un meklē sāknēšanas ielādētāju. Sistēmās ar BIOS/MBR vadība tiek nodota Galvenais sāknēšanas ieraksts (MBR), diska sākotnējie 512 baiti. GRUB tika sadalīts posmos: 1. posms (minimāls kods MBR), 1.5. posms (vēlākos sektoros, tiltu veidošana, lai izprastu failu sistēmas) un 2. posms (izvēlnes un papildu funkcijas). GRUB 2 versijā šis "1.5" vairs nepastāv; tagad ir īpaši attēli, piemēram, boot.img, core.img un moduļi (*.mod), kas tiek apvienoti atbilstoši instalācijai.
UEFI procesā process ir tiešāks: programmaparatūra izpilda GRUB EFI bināro failu no EFI nodalījuma , ja tas ir pareizi instalēts un reģistrēts. Abos gadījumos GRUB atver izvēlni vai konsoli, ielādē izvēlēto kodolu un pēc tam nodod izpildi tam.
Vairāku sāknēšanas ierīču specifikācija un saderība
GRUB ievieš vairāku palaišanu (Multiboot), kas ļauj palaist saderīgus kodolus bez īpašiem "trikiem". Turklāt sistēmām, kas to neatbalsta (piemēram, Windows vai DOS ), tas piedāvā ķēdes ielādi, mērķējot uz nodalījuma pirmo sektoru, kurā atrodas tā sāknēšanas ielādētāji.
Tā failu sistēmu saderība ir plaša: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS u. c. Tā var arī lasīt no LVM sējumiem un RAID masīviem, kas ir būtiska priekšrocība, ja krātuves struktūra ir sarežģīta.
Piedāvātās iespējas un funkcijas
- Izvēlnes saskarne Konfigurējams un ļoti elastīgs interaktīvs terminālis ar automātisko tabulēšanas pabeigšanu un Bash stila īsinājumtaustiņiem.
- Atbalsts LBA (loģiskā bloku adresēšana) lai pārvarētu klasiskos BIOS ierobežojumus un nolasītu vairāk nekā 1024 cilindrus.
- Jauda tīkla sāknēšana (PXE/TFTP) un attālinātie termināļi, kas ir noderīgi centralizētas pārvaldības scenārijos.
- Automātiska dekompresija un vairāku izpildāmo formātu atpazīšana.
- Mainīgo lielumu pastāvīga glabāšana ar saglabāt_vidi/ielādēt_vidi y
grub-editenv(ja platforma to atļauj). - Visa RAM noteikšana, diska ģeometrijas neatkarība un meklēšanas mehānismi pēc etiķetēm un UUID.
- Grafisks atbalsts izvēlnēm un foniem, kā arī modulārs dizains, kas saglabā kodols.img mazs un ielādē moduļus pēc nepieciešamības.
Galvenā terminoloģija: ierīces, nodalījumi un ceļi
GRUB nosauc diskus un nodalījumus savā veidā. Pirmais disks parasti ir (hd0), pirmais nodalījums (hd0,1) GRUB 2 vidē (atcerieties: GRUB 2 vidē numerācija sākas ar 1; Legacy vidē tā sākās ar 0). Lai atsauktos uz visu disku, nodalījums tiek izlaists: (hd0).
Lai norādītu failus, ierīce tiek apvienota ar ceļu: (hd0,1)/ruta/al/archivo. Tas arī atbalsta bloķēšanas saraksti (bloķēšanas saraksti), ja ir jānorāda precīza faila atrašanās vieta diskā, kas failu sistēmā nav redzama kā tāda, piemēram (hd0,1)+1 nodalījuma pirmajam sektoram, noderīgi ar chainloader +1.
GRUB "saknes failu sistēma" nav tas pats, kas "/" Linux. Tā ir vienkārši saknes nodalījums, no kura GRUB lasīs savus failus ; tiklīdz Linux kodols pārņem vadību, tas definē savu faktisko sakni, un viss pārējais GRUB kļūst nebūtisks.
GRUB saskarnes
GRUB piedāvā trīs galvenos skatus. Vispazīstamākais ir izvēlnes skats ar iepriekš konfigurētiem ierakstiem; varat pārvietoties ar bultiņu taustiņiem, palaist sistēmu ar Enter, rediģēt ierakstu ar "e" vai atvērt konsoli ar "c".
Ievades redaktors ļauj modificēt rindas acumirklī (pievienot ar "o/O", rediģēt ar "e", dzēst ar "d") un, ja viss izskatās pareizi, palaist sistēmu ar "b". Tas ir ideāli piemērots kodola parametru testēšanai, nepieskaroties failiem.
Konsole ir visspēcīgākais režīms: tā atbalsta kontekstuālo automātisko pabeigšanu, rediģēšanas saīsnes un visas GRUB iekšējās komandas disku atrašanai, kodola/initrd ielādei vai ķēdes ielādei. Ja konfigurācijas fails trūkst vai ir bojāts, GRUB jūs palaidīs šeit, lai jūs varētu manuāli atrisināt problēmu.
Bieži sastopamie kļūdu ziņojumi
Kļūdas var parādīties sākotnējā posmā (ierobežotāk) vai ielādējot izvēlnes un moduļus (aprakstošāk). Zemāk ir sniegts reprezentatīvu kodu apkopojums, ko GRUB var parādīt, pārfrāzējot tos skaidrības labad :
- 1: Nederīgs vai neabsolūts ceļš; 2: Nederīgs faila tips (nav parasts fails); 3–4: Bojāti dati/galvenes fragments dekompresijas laikā; 5: bojāta nodalījuma tabula vai nederīgs.
- 6: 1. /2. posma nesaderība; 7: Ielāde, kas mazāka par 1 MB, netiek atbalstīta; 8: Mēģinājums startēt, neielādējot kodolu; 9: Nezināma startēšanas kļūme.
- 10: Vairāku sāknēšanas funkciju atbalsts netiek atbalstīts; 11: Ierīce netiek atpazīta; 12: Nederīga ierīce; 13: Neatbalstīts izpildāmā faila formāts.
- 14: Failu sistēma neļauj nolasīt visu failu; 15: fails nav atrasts; 16: Nekonsekventa failu sistēmas struktūra.
- 17: Nevar pievienot atlasīto nodalījumu; 18: Cilindrs atrodas ārpus BIOS atbalstītā diapazona (tipiski vecākiem diskdziņiem); 19: Initrd pirms kodola.
- 20: Moduļi pirms vairāku sāknēšanas kodola; 21: Atlasītais disks neeksistē; 22: Neesoša nodalījuma; 23: Kļūda, interpretējot skaitli.
- 24: Piekļuve blokam ārpus nodalījuma; 25: Diska lasīšanas kļūda; 26: Pārāk daudz simbolisko saišu; 27: Nezināma komanda.
- 28: Vienums neietilpst atmiņā; 29: Diska ierakstīšanas kļūda; 30: Nederīgs arguments; 31: Fails nav sektorāli izlīdzināts (ReiserFS, izmantojiet notail).
- 32: Nepieciešama autentifikācija; 33: Seriālā ierīce nav konfigurēta; 34: Pēc MBR nav brīvu sektoru 1.5. posmam (konflikts ar EZ-BIOS vai nodalījums tiek startēts pārāk agri).
GRUB pamatkomandas
Konsolē var palaist ļoti noderīgas interaktīvas komandas. Piemēram, boot iedarbina pēdējo ielādēto (kodolu vai ķēdes ielādētāju) un chainloader <archivo> ielādē sektoru vai failu no ķēdes; tipisks Windows saīsinājums ir chainloader +1.
displaymem parāda atmiņas izmantošanu atbilstoši BIOS, kas ir ērti, ja neesat pārliecināts par noteikto RAM apjomu. initrd <archivo> jūs norādāt sākotnējo RAM diska attēlu, kas nepieciešams kodolam.
Lai instalētu MBR no GRUB Legacy konsoles, jūs izmantojāt install ar maršrutiem uz 1. posms, 2. posms un, pēc izvēles, konfigurācijas failam. Mūsdienās GRUB 2 sistēmā ir ierasts izmantot grub-install un atjaunojiet izvēlni ar update-grub/grub2-mkconfig.
Komanda kernel norāda kodola bināro failu un tā parametrus, piemēram: kernel /vmlinuz root=/dev/sda5Parasti pirms tā ir root (hdX,Y) o rootnoverify lai iestatītu nodalījumu, no kura GRUB lasīs.
Konfigurācijas faili un direktīvas
GRUB Legacy versijā izvēlne atradās šeit: /boot/grub/menu.lst o grub.confar tādām direktīvām kā color, default, fallback, hiddenmenu, password, timeout, splashimage un bloķē title ar katras sistēmas rīkojumiem.
Klasisks piemērs (pārfrāzēts) ietvertu Linux sadaļu ar root (hd0,2), kernel ar viņu saknes parametrs=/…, Un bootun vēl viens operētājsistēmai Windows ar rootnoverify (hd0,1) y chainloader +1.
GRUB 2 sistēmā automātiski ģenerētais fails ir /boot/grub/grub.cfgNav ieteicams to rediģēt manuāli; tā vietā tas tiek pielāgots. /etc/default/grub (vērtības, piemēram, GRUB_TIMEOUT, GRUB_DEFAULTutt.) un pielāgoti ieraksti tiek pievienoti /etc/grub.d/40_customTad tas tiek izpildīts. update-grub o grub2-mkconfig lai atjaunotu ēdienkarti.
Galvenās atšķirības starp GRUB Legacy un GRUB 2
- Konfigurācijas fails tika nosūtīts no
menu.lst/grub.confagrub.cfg, ar atjaunotu sintaksi un komandām, kā arī automātisku ģenerēšanu, izmantojotgrub-mkconfig. - Nodalījumu numerācija sākas plkst. 1 GRUB 2 vidē (Legacy vidē tas sākās ar 0).
- Mainīgo lielumu noturība ar
save_env/load_envdažās konfigurācijās. - Labāka maršruta noteikšana un meklēt pēc UUID/birkāmatbalstītas vairāk failu sistēmu;
- Tieša lasīšana no LVM un RAID.
- Termināļa un izvēļņu grafika un reorganizēti attēli: 1.5. posms vairs nav pieejams;
boot.img,core.imgun dinamiskie moduļi (*.mod).
Drošība un nostiprināšana ar GRUB
Slikti aizsargāts sāknēšanas pārvaldnieks ir kā siets. Ja kāds ar fizisku piekļuvi var rediģēt kodola parametrus vai palaist citu ierakstu, tas efektīvi atspējo jūsu drošības pasākumus . Tāpēc ieteicams aizsargāt GRUB ar parolēm un ieviest labāko praksi.
Iestatiet vienu spēcīga parole lai ierobežotu ierakstu modifikācijas vai piekļuvi konsolei. GRUB 2 sistēmā izmantojiet lietotājvārdus un paroles ar grub-mkpasswd-pbkdf2 un konfigurējiet atbilstošos noteikumus skriptos /etc/grub.d/.
Tas ietver arī diska šifrēšanu, izmantojot LUKS , lai pat tad, ja kāds nozog datoru, viņš nevarētu nolasīt datus. Tas arī nodrošina, ka sistēmas paroļu politika ir stingra, lai samazinātu brutāla spēka uzbrukumus.
Gudri pārvaldiet savu žurnālu vēsturi : tie, kas sniedz norādes uzbrucējam, ir jāsamazina līdz minimumam vai jācentralizē, izmantojot piekļuves kontroles; tie, kas palīdz auditēt ļaunprātīgus mēģinājumus, ir jāapkopo un jāanalizē drošā vietā.
Lai noteiktu citas instalētās sistēmas un automātiski ģenerētu ierakstus, instalējiet os-proberTas ietaupīs jūsu laiku un novērsīs kļūdas, atkārtoti veidojot izvēlni.
Uzstādīšana un apkope
Ja distributīvā instalēšanas laikā neinstalējāt GRUB, varat to izdarīt vēlāk. GRUB 2 sistēmā palaidiet sudo grub-install /dev/sdX (aizstāt ar savu disku) un pēc tam sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgNākamajā startēšanas reizē redzēsiet izvēlni.
No GRUB Legacy konsoles klasiskā procedūra ir norādīt sakni un palaist instalāciju: root (hd1,0) pēc tam setup (hd1,0) otrā diska pirmajai nodalījumam vai setup (hd1) ja norādāt uz otrā diska MBR.
Rediģēt tieši /boot/grub/grub.cfg Šī nav laba ideja GRUB 2 vidē, pat ja tas ir tehniski iespējams. Ieteicamais maršruts ir mainīties /etc/default/grub, izmantot /etc/grub.d/40_custom pašu saturam un atjaunošanai.
Praktiski jautājumi un noderīgi īsceļi
Kā zināt, kura ir sāknēšanas nodalījuma daļa /dev/sda? BIOS/MBR sistēmās: sudo fdisk -l /dev/sda (skatīt zvaigznīti, kas apzīmē “Boot” (Sāknēšana)). GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT un meklējiet EFI nodalījumu (FAT32, ierakstiet EF00/flags it īpaši). Arī sudo efibootmgr -v parāda ierakstītos sāknēšanas ierakstus.
Kā es varu iegūt nodalījuma UUID? ar blkid o lsblk -f. Piemēram: sudo blkid /dev/sda2 atgriež savu UUID un citi metadati.
Kā panākt, lai GRUB 2 gaidītu 10 sekundes pirms noklusējuma ieraksta ievadīšanas? Pielāgo /etc/default/grub ar GRUB_TIMEOUT=10 (un, ja piemērojams, GRUB_TIMEOUT_STYLE=menu) un izpilda sudo update-grub o grub2-mkconfig.
GRUB Legacy komandas instalēšanai otrā diska pirmajā nodalījumā? Atveriet konsoli un palaidiet: root (hd1,0) un pēc tam setup (hd1,0)Ja jūs vēlētos MBR, tas būtu setup (hd1).
Kā mainīt GRUB 2 konfigurāciju? 1) Rediģēt /etc/default/grub (piemēram, GRUB_DEFAULT, GRUB_TIMEOUT), 2) pievienot ierakstus /etc/grub.d/40_custom ja jums tie ir nepieciešami, 3) atjaunojiet tos ar update-grub/grub2-mkconfig, 4) pārstartējiet un pārbaudiet.
Kur GRUB 2 ievietot pielāgotas izvēlnes? En /etc/grub.d/40_custom (vai savus failus mapē /etc/grub.d/ ar atbilstošām atļaujām). Nekad nerediģējiet manuāli /boot/grub/grub.cfg izņemot ārkārtas situācijā.
Kur ieraksti tika saglabāti GRUB Legacy vidē? En /boot/grub/menu.lst o grub.conf, saskaņā ar sadalījumu.
Kā piekļūt GRUB konsolei no izvēlnes? GRUB 2 vai Legacy versijā nospiediet taustiņu "c". Lai rediģētu konkrētu ierakstu, nospiediet taustiņu "e". Abi īsinājumtaustiņi ir ļoti noderīgi, ja ir nepieciešams diagnosticēt problēmas acumirklī.
Izplatītāko iespēju piemēri
Noklusējuma sāknēšanas izvēle: GRUB_DEFAULT=0 sākas pirmais innings; ar GRUB_DEFAULT=saved atceras pēdējo izmantoto konfigurāciju. Pēc izmaiņu veikšanas atkārtoti ģenerējiet konfigurāciju.
Gaidīšanas laiks: GRUB_TIMEOUT=4 pielāgo izvēlnes aizkavi; ar 0 sākas bez pauzes; dažos gadījumos izvēlni var paslēpt ar GRUB_TIMEOUT_STYLE=hidden tīrākam sākumam.
Izvēlnes atjauninājums: Debian/Ubuntu un atvasinātajos produktos sudo update-grub; citās valstīs, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Pārliecinieties, ka jums ir os-prober instalēta, ja vēlaties automātiski noteikt citas sistēmas.
Lai gan GRUB parādās arī ārpus GNU/Linux kontekstiem, atcerieties, ka tas nav atbalsta pakalpojums. Ja jūsu problēma ir specifiska Windows, vispraktiskāk ir apmeklēt forumus, kas veltīti šai sistēmai, lai saņemtu mērķtiecīgu palīdzību.
GRUB ir attīstījies no vienkāršas sāknēšanas izvēlnes par īstu pirmssistēmas vidi, kas spēj startēt vairākas operētājsistēmas, pārvaldīt sarežģītus diskus un palīdzēt atjaunot sistēmu, izmantojot tikai pāris komandas. Ar pareizu konfigurāciju un zināmu aizsardzību (GRUB paroles, LUKS šifrēšana, labi pārvaldītas atslēgu politikas un žurnāli) jums būs stabils, elastīgs un, pats galvenais, kontrolēts sāknēšanas process.
