- GRUB je GNU boot manager koji odabire i učitava operativni sistem, podržavajući BIOS/UEFI i Multiboot.
- GRUB 2 dodaje module, poboljšanu podršku za datotečni sistem, UUID pretragu i grafički meni/terminal.
- Konfiguracija se upravlja putem /etc/default/grub i 40_custom, regenerirajući se pomoću update-grub ili grub2-mkconfig.
- Sigurnost: Zaštitite GRUB lozinkom, koristite LUKS enkripciju i imajte jake politike lozinki.
Ako ste instalirali GNU/Linux na svoj računar ili koristite više operativnih sistema, vjerovatno ste čuli za GRUB. To je taj mali, ali moćan program koji vidite neposredno prije pokretanja sistema, a koji vam omogućava da odaberete šta ćete učitati. Iako često ostaje nezapažen, njegova uloga je ključna za pokretanje operativnog sistema i nesmetano prenošenje kontrole na kernel.
U svijetu pokretanja računara, GRUB je postao de facto standard zbog svoje snage i fleksibilnosti. Rođen u okviru GNU projekta, sada je najrasprostranjeniji boot manager u GNU/Linuxu , kompatibilan sa širokim rasponom arhitektura i datotečnih sistema, jednostavan za korištenje početnicima, a istovremeno i švicarski nožić za one koji fino podešavaju svaki detalj procesa pokretanja.
Šta je GNU GRUB i čemu služi?
GNU GRUB (GNU GRand Unified Bootloader) je menadžer za višestruko pokretanje: softver koji firmver (BIOS ili UEFI) pokreće kada se računar uključi kako bi odabrao i učitao operativni sistem. Omogućava korisnicima odabir stavki menija, prosljeđivanje parametara kernelu, pokretanje s mreže, pa čak i interakciju s konzolom za rješavanje određenih problema.
Uglavnom se koristi u GNU/Linux distribucijama, iako su ga koristili i drugi sistemi poput Solarisa na x86. Na modernim UEFI sistemima , firmver direktno učitava GRUB izvršnu datoteku koja se nalazi na EFI sistemskoj particiji (ESP) , pod uslovom da je registrovana u NVRAM-u; u BIOS-u/MBR-u, GRUB zauzima početne sektore diska i nastavlja odatle.
Pored tipičnog menija, GRUB je u skladu sa Multiboot specifikacijom, što znači da može besprijekorno pokrenuti kompatibilne kernele . Nakon što se kernel smjesti u memoriju, GRUB predaje kontrolu i njegov posao je završen, što nije mali podvig.

Tehnički list i podaci o projektu
GRUB je dio GNU ekosistema i distribuira se kao besplatni softver pod GNU GPL v3 ili novijom licencom . Razvoj je otvorenog koda, sa službenim repozitorijem, sistemom za praćenje grešaka i web stranicom, te vrlo aktivnom zajednicom.
Napisan je prvenstveno u C-u i asembleru i radi na nekoliko platformi: IA-32, x86-64 i PowerPC, između ostalog. Trenutna grana je GRUB 2 (reimplementacija historijskog "GRUB Legacyja"). Najnovija objavljena stabilna verzija je 2.12 (20. decembar 2023.). Ako želite provjeriti svoju lokalnu verziju, možete pokrenuti: grub-install --version i vidjet ćete odgovarajući lanac.
Malo historije i evolucije
GRUB je započeo kao inicijativa Ericha Stefana Boleyna u kontekstu GNU Hurda i Mach mikrokernela. Kako bi se riješila razlika u metodama pokretanja, kreirana je Multiboot specifikacija, koja je omogućila da bootloaderi i kerneli "govore istim jezikom". Godine 1999. Gordon Matzigkeit i Yoshinori Okuji predvodili su njeno usvajanje kao službenog paketa GNU projekta.
Oko 2002. godine, grupa japanskih istraživača pokrenula je PUPA (Preliminarna univerzalna programska arhitektura) s ciljem prepisivanja GRUB-a kako bi bio robusniji i modularniji. Ovaj napor je rezultirao GRUB-om 2 , dok je prethodna verzija postala poznata kao "GRUB Legacy" (čija je verzija 0.97 posljednji put ažurirana 2005. godine). Od 2007. godine nadalje, nekoliko distribucija je prešlo na GRUB 2, a do kraja 2009. godine, velika većina ga je uključivala po defaultu.
Kako pokrenuti računar pomoću GRUB-a (BIOS i UEFI)
Kada uključite računar, firmver pokreće provjere (RAM, takt, uređaje, redoslijed pokretanja) i traži bootloader. Na sistemima sa BIOS/MBR, kontrola se prenosi na Glavni zapis za pokretanje (MBR), početnih 512 bajtova diskaGRUB je bio podijeljen u faze: Faza 1 (minimalni kod u MBR-u), Faza 1.5 (u kasnijim sektorima, premošćivanje radi razumijevanja sistema datoteka) i Faza 2 (meniji i napredne funkcije). U GRUB-u 2, ta "1.5" više ne postoji; sada postoje specifične slike kao što su boot.img, core.img i module (*.mod) koji se kombinuju prema instalaciji.
U UEFI-ju, proces je direktniji: firmver izvršava GRUB EFI binarni fajl sa EFI particije , pod uslovom da je ispravno instaliran i registrovan. U oba slučaja, GRUB prikazuje meni ili konzolu, učitava odabrani kernel, a zatim prenosi izvršenje na njega.
Specifikacija i kompatibilnost za višestruko pokretanje
GRUB implementira Multiboot, omogućavajući pokretanje kompatibilnih kernela bez specifičnih "trikova". Nadalje, za sisteme koji ga ne podržavaju (kao što su Windows ili DOS ), nudi lančano učitavanje (chain loading), ciljajući prvi sektor particije gdje se nalaze njegovi bootloaderi.
Njegova kompatibilnost sa datotečnim sistemima je opsežna: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , između ostalih. Također može čitati s LVM volumena i RAID nizova, što je značajna prednost kada je struktura pohrane složena.
Istaknute karakteristike i funkcije
- Interfejs menija Konfigurabilan i vrlo fleksibilan interaktivni terminal, s automatskim dovršavanjem pomoću tipke Tab i prečicama u stilu Bash-a.
- Podrška LBA (Logički blok adresiranja) da prevaziđe klasična ograničenja BIOS-a i pročita više od 1024 cilindra.
- Kapacitet za pokretanje s mreže (PXE/TFTP) i udaljeni terminali, korisni u scenarijima centraliziranog upravljanja.
- Automatska dekompresija i prepoznavanje više izvršnih formata.
- Trajno skladištenje varijabli sa sačuvaj_okrug/učitaj_okrug y
grub-editenv(kada platforma to dozvoljava). - Sva detekcija RAM memorije, nezavisnost geometrije diska i mehanizmi pretraživanja po oznakama i UUID-u.
- Grafička podrška za menije i pozadine, te modularni dizajn koji održava core.img mali i učitava module po potrebi.
Ključna terminologija: uređaji, particije i putanje
GRUB imenuje diskove i particije na svoj način. Prvi disk je obično (hd0), prva particija (hd0,1) U GRUB-u 2 (zapamtite: u GRUB-u 2, numerisanje počinje od 1; u Legacy verziji, počinjalo je od 0). Da bi se referiralo na cijeli disk, particija se izostavlja: (hd0).
Za označavanje datoteka, uređaj se kombinuje sa putanjom: (hd0,1)/ruta/al/archivo. Takođe podržava blok liste (liste blokiranih datoteka) kada je potrebno naznačiti tačnu lokaciju na disku datoteke koja nije vidljiva kao takva u datotečnom sistemu, na primjer (hd0,1)+1 za prvi sektor particije, korisno sa chainloader +1.
"Korijenski datotečni sistem" u GRUB-u nije isto što i "/" u Linuxu. To je jednostavno korijenska particija s koje GRUB čita svoje datoteke ; kada Linux kernel preuzme kontrolu, on definira svoj vlastiti korijenski direktorij i sve ostalo u GRUB-u postaje nebitno.
GRUB interfejsi
GRUB nudi tri glavna prikaza. Najpoznatiji je meni , sa unaprijed konfiguriranim unosima; možete se kretati pomoću tipki sa strelicama, pokrenuti sistem pomoću Entera, uređivati unos pomoću "e" ili otvoriti konzolu pomoću "c".
Uređivač unosa vam omogućava da mijenjate linije u hodu (dodajete sa "o/O", uređujete sa "e", brišete sa "d") i, ako sve izgleda ispravno, pokrećete sistem sa "b". Idealan je za testiranje parametara kernela bez dodirivanja datoteka.
Konzola je najmoćniji način rada: podržava kontekstualno automatsko dovršavanje, prečice za uređivanje i sve GRUB-ove interne naredbe za lociranje diskova, učitavanje kernela/initrd-a ili lančano učitavanje. Ako konfiguracijska datoteka nedostaje ili je oštećena, GRUB će vas pokrenuti ovdje kako biste mogli ručno riješiti problem.
Uobičajene poruke o grešci
Greške se mogu pojaviti u početnoj fazi (ograničenije) ili prilikom učitavanja menija i modula (opisnije). U nastavku je kompilacija reprezentativnih kodova koje GRUB može prikazati, parafraziranih radi jasnoće :
- 1: Nevažeća ili neapsolutna putanja; 2: Nevažeći tip datoteke (nije regularna datoteka); 3–4: Oštećeni podaci/zaglavlje tokom dekompresije; 5: oštećena tabela particija ili nevažeći.
- 6: Nekompatibilnost Stage1/Stage2; 7: Učitavanje ispod 1 MB nije podržano; 8: Pokušaj pokretanja bez učitavanja kernela; 9: Nepoznata greška pri pokretanju.
- 10: Funkcije višestrukog pokretanja nisu podržane; 11: Uređaj nije prepoznat; 12: Nevažeći uređaj; 13: Nepodržani format izvršne datoteke.
- 14: Datotečni sistem sprečava čitanje cijele datoteke; 15: Datoteka nije pronađena; 16: Nedosljedna struktura datotečnog sistema.
- 17: Nije moguće montirati odabranu particiju; 18: Cilindar izvan raspona koji podržava BIOS (tipično za starije diskove); 19: Initrd prije kernela.
- 20: Moduli prije multiboot kernela; 21: Odabrani disk ne postoji; 22: Nepostojeća particija; 23: Greška prilikom interpretacije broja.
- 24: Pristup bloku izvan particije; 25: Greška pri čitanju diska; 26: Previše simboličkih linkova; 27: Nepoznata komanda.
- 28: Stavka ne stane u memoriju; 29: Greška pri pisanju na disk; 30: Nevažeći argument; 31: Datoteka nije sektorski poravnata (ReiserFS, koristite bez repa).
- 32: Potrebna je autentifikacija; 33: Serijski uređaj nije konfiguriran; 34: Nema slobodnih sektora za Stage 1.5 nakon MBR-a (sukob s EZ-BIOS-om ili prerano pokretanje particije).
Osnovne GRUB naredbe
U konzoli možete pokrenuti vrlo korisne interaktivne naredbe. Na primjer, boot pokreće posljednji učitani program (kernel ili lančani učitivač), i chainloader <archivo> učitava sektor ili datoteku iz lanca; tipična prečica za Windows je chainloader +1.
displaymem prikazuje korištenje memorije prema BIOS-u, što je korisno ako niste sigurni u detektovanu RAM memoriju. Sa initrd <archivo> Određujete početnu sliku RAM diska potrebnu kernelu.
Za instalaciju u MBR iz GRUB Legacy konzole, koristili ste install sa rutama do stage1, stage2 i, opcionalno, u konfiguracijsku datoteku. Danas je u GRUB-u 2, iz sistema, normalno koristiti grub-install i regenerirajte meni sa update-grub/grub2-mkconfig.
Naredba kernel specificira binarni fajl kernela i njegove parametre, na primjer: kernel /vmlinuz root=/dev/sda5Obično mu prethodi root (hdX,Y) o rootnoverify da biste postavili particiju sa koje će GRUB čitati.
Konfiguracijske datoteke i direktive
U GRUB Legacy verziji meni se nalazio u /boot/grub/menu.lst o grub.conf, sa direktivama kao što su color, default, fallback, hiddenmenu, password, timeout, splashimage i blokove title sa naredbama za svaki sistem.
Klasičan primjer (parafraziran) bi uključivao Linux odjeljak sa root (hd0,2), kernel sa svojim korijenski parametar=/…, y booti još jedan za Windows sa rootnoverify (hd0,1) y chainloader +1.
U GRUB-u 2 automatski generirana datoteka je /boot/grub/grub.cfgNe preporučuje se ručno uređivanje; umjesto toga, prilagođava se /etc/default/grub (vrijednosti kao što su GRUB_TIMEOUT, GRUB_DEFAULTitd.) i prilagođeni unosi se dodaju u /etc/grub.d/40_customZatim se izvršava update-grub o grub2-mkconfig da regenerišete meni.
Ključne razlike između GRUB Legacy i GRUB 2
- Konfiguracijska datoteka je prešla iz
menu.lst/grub.confagrub.cfg, sa obnovljenom sintaksom i naredbama i automatskim generisanjem pomoćugrub-mkconfig. - Numerisanje particija počinje 1 u GRUB-u 2 (u Legacy verziji je počinjalo od 0).
- Perzistencija varijabli sa
save_env/load_envu nekim konfiguracijama. - Bolje otkrivanje rute i pretraga po UUID-u/oznakamapodržano je više datotečnih sistema.
- Direktno čitanje iz LVM i RAID.
- Grafika terminala i menija, te reorganizirane slike: Faza 1.5 je uklonjena;
boot.img,core.imgi dinamički moduli (*.mod).
Sigurnost i zaštita pomoću GRUB-a
Loše zaštićen boot manager je sito. Ako neko sa fizičkim pristupom može uređivati parametre kernela ili pokrenuti drugačiji unos, to efektivno onemogućava vaše sigurnosne mjere . Zato je preporučljivo zaštititi GRUB lozinkama i implementirati najbolje prakse.
Set jedan jaka lozinka da biste ograničili izmjene unosa ili pristup konzoli. U GRUB-u 2 koristite korisnička imena i lozinke sa grub-mkpasswd-pbkdf2 i konfigurirajte odgovarajuća pravila u skriptama /etc/grub.d/.
Također uključuje enkripciju diska pomoću LUKS-a , tako da čak i ako neko ukrade računar, neće moći pročitati podatke. Također osigurava da su sistemske politike lozinki stroge kako bi se smanjili napadi grubom silom.
Mudro upravljajte historijom svojih zapisa : one koje daju tragove napadaču trebale bi biti minimizirane ili centralizirane pomoću kontrola pristupa; one koje pomažu u reviziji zlonamjernih pokušaja trebale bi biti agregirane i analizirane na sigurnoj lokaciji.
Da biste otkrili druge instalirane sisteme i automatski generirali unose, instalirajte os-proberTo će vam uštedjeti vrijeme i spriječiti greške prilikom ponovnog kreiranja menija.
Instalacija i održavanje
Ako niste instalirali GRUB tokom instalacije vaše distribucije, možete to učiniti kasnije. U GRUB-u 2, iz sistema, pokrenite sudo grub-install /dev/sdX (zamijenite svojim diskom) i zatim sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgMeni ćete vidjeti pri sljedećem pokretanju.
Iz GRUB Legacy konzole, klasična procedura je naznačiti root i pokrenuti instalaciju: root (hd1,0) praćeno setup (hd1,0) za prvu particiju drugog diska, ili setup (hd1) ako pokažete na MBR tog drugog diska.
Uredi direktno /boot/grub/grub.cfg Ovo nije dobra ideja u GRUB-u 2, čak i ako je tehnički izvodljivo. Preporučena ruta je promijeniti /etc/default/grub, koristite /etc/grub.d/40_custom za vlastiti sadržaj i regeneraciju.
Praktična pitanja i korisne prečice
Kako znati koja je boot particija na /dev/sda? Na BIOS/MBR sistemima: sudo fdisk -l /dev/sda (pogledajte zvjezdicu za „Boot“). U GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT i potražite EFI particiju (FAT32, upišite EF00/flags esp). Također sudo efibootmgr -v prikazuje zabilježene unose za pokretanje.
Kako da dobijem UUID particije? con blkid o lsblk -f. Na primjer: sudo blkid /dev/sda2 vraća svoje UUID i ostale metapodatke.
Kako da natjeram GRUB 2 da čeka 10 sekundi prije nego što unese zadani unos? Prilagođava /etc/default/grub con GRUB_TIMEOUT=10 (i, ako je primjenjivo, GRUB_TIMEOUT_STYLE=menu) i izvršava sudo update-grub o grub2-mkconfig.
GRUB Legacy komande za instalaciju na prvu particiju drugog diska? Otvorite konzolu i pokrenite: root (hd1,0) a zatim setup (hd1,0)Da ste htjeli MBR, to bi bio... setup (hd1).
Koraci za promjenu konfiguracije GRUB 2? 1) Uredi /etc/default/grub (npr. GRUB_DEFAULT, GRUB_TIMEOUT), 2) dodajte unose u /etc/grub.d/40_custom ako vam trebaju, 3) regenerirajte ih sa update-grub/grub2-mkconfig, 4) ponovo pokrenite računar i testirajte.
Gdje postaviti prilagođene menije u GRUB 2? En /etc/grub.d/40_custom (ili vlastite datoteke u /etc/grub.d/ (uz odgovarajuće dozvole). Nikada ne uređujte ručno /boot/grub/grub.cfg osim u hitnim slučajevima.
Gdje su unosi pohranjeni u GRUB Legacy? En /boot/grub/menu.lst o grub.conf, prema distribuciji.
Kako da pristupim GRUB konzoli iz menija? Pritisnite tipku "c" u GRUB 2 ili Legacy verziji. Da biste uredili određeni unos, pritisnite "e". Obje prečice su vrlo korisne kada trebate dijagnosticirati probleme u hodu.
Primjeri uobičajenih opcija
Zadani odabir pokretanja: GRUB_DEFAULT=0 počinje prva izmjena; sa GRUB_DEFAULT=saved pamti posljednju korištenu konfiguraciju. Nakon promjene, regenerirajte konfiguraciju.
Vrijeme čekanja: GRUB_TIMEOUT=4 podešava kašnjenje menija; sa 0 počinje bez pauziranja; u nekim scenarijima možete sakriti meni pomoću GRUB_TIMEOUT_STYLE=hidden za čistiji početak.
Ažuriranje menija: na Debianu/Ubuntuu i derivatima, sudo update-grubu drugim slučajevima, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Pobrinite se da imate os-prober instaliran ako želite automatski detektovati druge sisteme.
Iako se GRUB pojavljuje i u kontekstima izvan GNU/Linuxa, imajte na umu da to nije služba za podršku. Ako je vaš problem specifičan za Windows, najpraktičnije što možete učiniti je posjetiti forume posvećene tom sistemu za ciljanu pomoć.
GRUB se razvio od jednostavnog menija za pokretanje sistema u pravo predsistemsko okruženje, sposobno za pokretanje više operativnih sistema, upravljanje složenim diskovima i pomoć pri oporavku sistema uz samo nekoliko naredbi. Uz pravilnu konfiguraciju i određeno pojačanje (GRUB lozinke, LUKS enkripciju, dobro upravljane politike ključeva i logove), imat ćete robustan, fleksibilan i, prije svega, kontroliran proces pokretanja.
