- GRUB er GNUs oppstartsbehandler som velger og laster operativsystemet, og støtter BIOS/UEFI og multiboot.
- GRUB 2 legger til moduler, forbedret filsystemstøtte, UUID-søk og en grafisk meny/terminal.
- Konfigurasjonen administreres via /etc/default/grub og 40_custom, og genereres på nytt med update-grub eller grub2-mkconfig.
- Sikkerhet: Passordbeskytt GRUB, bruk LUKS-kryptering og ha sterke passordregler.
Hvis du har installert GNU/Linux på datamaskinen din eller bruker flere operativsystemer, har du sannsynligvis hørt om GRUB. Det er det lille, men kraftige programmet du ser rett før systemet starter opp, slik at du kan velge hva som skal lastes inn. Selv om det ofte går ubemerket hen, er dets rolle avgjørende for å starte operativsystemet og smidig overføre kontrollen til kjernen.
I PC-oppstartsverdenen har GRUB blitt de facto-standarden på grunn av sin kraft og fleksibilitet. Født innenfor GNU-prosjektet, er det nå den mest utbredte oppstartsbehandleren i GNU/Linux , kompatibel med et bredt spekter av arkitekturer og filsystemer, brukervennlig for nybegynnere, og samtidig en sveitserkniv for de som finjusterer hver eneste detalj i oppstartsprosessen.
Hva er GNU GRUB, og hva er det til for?
GNU GRUB (GNU Grand Unified Bootloader) er en fleroppstartshåndtering: programvare som kjører fastvaren (BIOS eller UEFI) når datamaskinen slås på for å velge og laste inn et operativsystem. Den lar brukere velge menyelementer, sende parametere til kjernen, starte opp fra nettverket og til og med samhandle med en konsoll for å feilsøke spesifikke problemer.
Den brukes hovedsakelig i GNU/Linux-distribusjoner, selv om den også har blitt brukt av andre systemer som Solaris på x86. På moderne UEFI- systemer laster fastvaren direkte den kjørbare GRUB-filen som ligger i EFI-systempartisjonen (ESP) , forutsatt at den er registrert i NVRAM; i BIOS/MBR opptar GRUB de første sektorene på disken og fortsetter derfra.
Utover den typiske menyen, overholder GRUB Multiboot-spesifikasjonen, som betyr at den kan starte opp kompatible kjerner sømløst . Og når kjernen er i minnet, overfører GRUB kontrollen og jobben er gjort, noe som ikke er noen liten bragd.

Teknisk datablad og prosjektdata
GRUB er en del av GNU-økosystemet og distribueres som fri programvare under GNU GPL v3 eller senere lisens . Utviklingen er åpen kildekode, med et offisielt arkiv, feilsporing og nettsted, og et veldig aktivt fellesskap.
Den er hovedsakelig skrevet i C og assembler, og kjører på flere plattformer: IA-32, x86-64 og PowerPC, blant andre. Den nåværende grenen er GRUB 2 (en reimplementering av den historiske «GRUB Legacy»). Den siste stabile versjonen som ble utgitt er 2.12 (20. desember 2023). Hvis du vil sjekke din lokale versjon, kan du kjøre: grub-install --version og du vil se den tilhørende kjeden.
Litt historie og evolusjon
GRUB startet som et initiativ av Erich Stefan Boleyn innenfor konteksten av GNU Hurd og Mach-mikrokjernen. For å løse forskjellen i oppstartsmetoder ble Multiboot-spesifikasjonen laget, som gjorde det mulig for oppstartslastere og kjerner å "snakke samme språk". I 1999 ledet Gordon Matzigkeit og Yoshinori Okuji an i adopsjonen som en offisiell pakke i GNU-prosjektet.
Rundt 2002 startet en gruppe japanske forskere PUPA (Preliminary Universal Programming Architecture) med mål om å omskrive GRUB for å gjøre den mer robust og modulær. Denne innsatsen resulterte i GRUB 2 , mens den forrige versjonen ble kjent som "GRUB Legacy" (hvis versjon 0.97 sist ble oppdatert i 2005). Fra 2007 og utover migrerte flere distribusjoner til GRUB 2, og innen utgangen av 2009 inkluderte de aller fleste det som standard.
Slik starter du opp datamaskinen med GRUB (BIOS og UEFI)
Når du slår på PC-en, kjører fastvaren kontrollene sine (RAM, klokke, enheter, oppstartsrekkefølge) og ser etter en oppstartslaster. På systemer med BIOS/MBR sendes kontrollen til Master Boot Record (MBR), de første 512 bytene på diskenGRUB ble delt inn i trinn: Trinn 1 (minimal kode i MBR), trinn 1.5 (i senere sektorer, brobygging for å forstå filsystemer), og trinn 2 (menyer og avanserte funksjoner). I GRUB 2 eksisterer ikke lenger denne "1.5"; nå finnes det spesifikke bilder som boot.img, core.img og moduler (*.mod) som er kombinert i henhold til installasjonen.
I UEFI er prosessen mer direkte: fastvaren kjører GRUB EFI-binærfilen fra EFI-partisjonen , forutsatt at den er riktig installert og registrert. I begge tilfeller presenterer GRUB en meny eller konsoll, laster inn den valgte kjernen og overfører deretter kjøreprosessen til den.
Multiboot-spesifikasjon og kompatibilitet
GRUB implementerer Multiboot, som lar kompatible kjerner starte opp uten spesifikke "triks". Videre, for systemer som ikke støtter det (som Windows eller DOS ), tilbyr det kjedeinnlasting, som er rettet mot den første sektoren av partisjonen der oppstartslasterne befinner seg.
Den har omfattende filsystemkompatibilitet: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , blant andre. Den kan også lese fra LVM-volumer og RAID-arrayer, en betydelig fordel når lagringsstrukturen er kompleks.
Utvalgte funksjoner og funksjoner
- Menygrensesnitt Konfigurerbar og svært fleksibel interaktiv terminal, med automatisk fullføring av Tab og snarveier i Bash-stil.
- Støtte av LBA (logisk blokkadressering) for å overvinne klassiske BIOS-begrensninger og lese utover 1024 sylindere.
- Kapasitet for nettverksoppstart (PXE/TFTP) og eksterne terminaler, nyttig i sentraliserte administrasjonsscenarier.
- Automatisk dekomprimering og gjenkjenning av flere kjørbare formater.
- Permanent lagring av variabler med lagre_konvolutt/last_konvolutt y
grub-editenv(når plattformen tillater det). - All RAM-deteksjon, uavhengighet av diskgeometri og søkemekanismer etter etiketter og UUID.
- Grafisk støtte for menyer og bakgrunner, og et modulært design som opprettholder kjerne.img liten og laster inn moduler etter behov.
Nøkkelterminologi: enheter, partisjoner og stier
GRUB navngir disker og partisjoner på sin egen måte. Den første disken er vanligvis (hd0), den første partisjonen (hd0,1) I GRUB 2 (husk: i GRUB 2 starter nummereringen på 1; i Legacy startet den på 0). For å referere til en hel disk, utelates partisjonen: (hd0).
For å indikere filer kombineres enheten med banen: (hd0,1)/ruta/al/archivo. Den støtter også blokkeringslister (blokkeringslister) når det er nødvendig å angi den nøyaktige plasseringen på disken til en fil som ikke er synlig som sådan i filsystemet, for eksempel (hd0,1)+1 for den første sektoren i en partisjon, nyttig med chainloader +1.
«Root-filsystemet» i GRUB er ikke det samme som «/» i Linux. Det er rett og slett rotpartisjonen som GRUB leser filene sine fra ; når Linux-kjernen tar kontroll, definerer den sin egen faktiske rot, og alt annet i GRUB blir irrelevant.
GRUB-grensesnitt
GRUB tilbyr tre hovedvisninger. Den mest kjente er menyen , med forhåndskonfigurerte oppføringer; du kan navigere med piltastene, starte opp med Enter, redigere en oppføring med "e" eller åpne konsollen med "c".
Inndataredigereren lar deg endre linjer på sparket (legge til med "o/O", redigere med "e", slette med "d") og, hvis alt ser riktig ut, starte opp med "b". Den er ideell for å teste kjerneparametere uten å berøre filer.
Konsollen er den kraftigste modusen: den støtter kontekstuell autofullføring, redigeringssnarveier og alle GRUBs interne kommandoer for å finne disker, laste inn kernel/initrd eller kjedelasting. Hvis konfigurasjonsfilen mangler eller er ødelagt, vil GRUB starte deg her slik at du kan løse problemet manuelt.
Vanlige feilmeldinger
Feil kan oppstå i den innledende fasen (mer begrenset) eller når du laster menyer og moduler (mer beskrivende). Nedenfor er en samling av representative koder som GRUB kan vise, omskrevet for klarhetens skyld :
- 1: Ugyldig eller ikke-absolutt sti; 2: Ugyldig filtype (ikke en vanlig fil); 3–4: Ødelagte data/header under dekomprimering; 5: skadet partisjonstabell eller ugyldig.
- 6: Inkompatibilitet mellom trinn 1/trinn 2; 7: Lasting under 1 MB støttes ikke; 8: Forsøkte å starte opp uten å laste inn en kjerne; 9: Ukjent oppstartsfeil.
- 10: Fleroppstartsfunksjoner støttes ikke; 11: Enheten gjenkjennes ikke; 12: Ugyldig enhet; 13: Kjørbart filformat støttes ikke.
- 14: Filsystemet hindrer at hele filen leses; 15: fil ikke funnet; 16: Inkonsekvent filsystemstruktur.
- 17: Kan ikke montere den valgte partisjonen; 18: Sylinder utenfor området som støttes av BIOS (vanlig på eldre disker); 19: Initrd før kernel.
- 20: Moduler før en multiboot-kjerne; 21: Valgt disk finnes ikke; 22: Ikke-eksisterende partisjon; 23: Feil ved tolkning av et tall.
- 24: Tilgang til en blokk utenfor partisjonen; 25: Feil ved disklesing; 26: For mange symbolske lenker; 27: Ukjent kommando.
- 28: Elementet får ikke plass i minnet; 29: Skrivefeil til disk; 30: Ugyldig argument; 31: Filen er ikke sektorjustert (ReiserFS, bruk notail).
- 32: Autentisering kreves; 33: Seriell enhet ikke konfigurert; 34: Ingen ledige sektorer for trinn 1.5 etter MBR (konflikt med EZ-BIOS eller partisjonen starter for tidlig).
Grunnleggende GRUB-kommandoer
I konsollen kan du kjøre svært nyttige interaktive kommandoer. For eksempel, boot starter den sist lastede (kjerne- eller kjedelasteren), og chainloader <archivo> laster inn en sektor eller fil fra en kjede; den typiske snarveien for Windows er chainloader +1.
displaymem viser minnebruk i henhold til BIOS, noe som er nyttig hvis du er usikker på den oppdagede RAM-en. Med initrd <archivo> Du spesifiserer det første RAM-diskavbildningen som kjernen trenger.
For å installere til MBR fra GRUB Legacy-konsollen, brukte du install med rutene til trinn 1, trinn 2 og, valgfritt, til konfigurasjonsfilen. I dag i GRUB 2, fra systemet, er det normalt å bruke grub-install og regenerer menyen med update-grub/grub2-mkconfig.
Kommandoen kernel spesifiserer kjernebinærfilen og dens parametere, for eksempel: kernel /vmlinuz root=/dev/sda5Det innledes vanligvis av root (hdX,Y) o rootnoverify for å angi partisjonen som GRUB skal lese fra.
Konfigurasjonsfiler og direktiver
I GRUB Legacy lå menyen i /boot/grub/menu.lst o grub.conf, med direktiver som color, default, fallback, hiddenmenu, password, timeout, splashimage og blokkerer title med ordrene for hvert system.
Et klassisk eksempel (parafrasert) ville inkludere en Linux-seksjon med root (hd0,2), kernel med hans rotparameter=/…, Og boot; og en annen for Windows med rootnoverify (hd0,1) y chainloader +1.
I GRUB 2 er den automatisk genererte filen /boot/grub/grub.cfgDet anbefales ikke å redigere den manuelt; i stedet justeres den /etc/default/grub (verdier som GRUB_TIMEOUT, GRUB_DEFAULTosv.) og egendefinerte oppføringer legges til i /etc/grub.d/40_customSå blir den utført update-grub o grub2-mkconfig for å gjenopprette menyen.
Viktige forskjeller mellom GRUB Legacy og GRUB 2
- Konfigurasjonsfilen gikk fra
menu.lst/grub.confagrub.cfg, med fornyet syntaks og kommandoer og automatisk generering ved hjelp avgrub-mkconfig. - Partisjonsnummerering starter klokken 1 i GRUB 2 (i Legacy startet det på 0).
- Persistens av variabler med
save_env/load_envi noen konfigurasjoner. - Bedre rutedeteksjon og søk etter UUID/tagger; flere filsystemer støttes.
- Direkte lesing fra LVM og RAID.
- Terminal- og menygrafikk og omorganiserte bilder: Trinn 1.5 er borte;
boot.img,core.imgog dynamiske moduler (*.mod).
Sikkerhet og herding med GRUB
En dårlig sikret oppstartsbehandling er en sil. Hvis noen med fysisk tilgang kan redigere kjerneparametere eller starte en annen oppføring, deaktiverer det effektivt sikkerhetstiltakene dine . Derfor er det lurt å beskytte GRUB med passord og implementere beste praksis.
Sett en sterkt passord for å begrense endringer i oppføringer eller konsolltilgang. I GRUB 2, bruk brukernavn og passord med grub-mkpasswd-pbkdf2 og konfigurer de tilsvarende reglene i skriptene til /etc/grub.d/.
Den inkluderer også diskkryptering ved hjelp av LUKS , slik at selv om noen stjeler datamaskinen, vil de ikke kunne lese dataene. Den sikrer også at systemets passordregler er strenge for å redusere brute-force-angrep.
Administrer logghistorikken din klokt : de som gir ledetråder til en angriper bør minimeres eller sentraliseres med tilgangskontroller; de som bidrar til å revidere ondsinnede forsøk bør samles og analyseres på et sikkert sted.
For å oppdage andre installerte systemer og generere oppføringer automatisk, installer os-proberDet vil spare deg tid og forhindre feil når du gjenskaper menyen.
Installasjon og vedlikehold
Hvis du ikke installerte GRUB under installasjonen av distroen din, kan du gjøre det senere. I GRUB 2, kjør [kommandoer/kommandoer] fra systemet. sudo grub-install /dev/sdX (erstatt med disken din) og deretter sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgDu vil se menyen ved neste oppstart.
Fra en GRUB Legacy-konsoll er den klassiske prosedyren å angi roten og kjøre installasjonen: root (hd1,0) etterfulgt av setup (hd1,0) for den første partisjonen på den andre disken, eller setup (hd1) hvis du peker på MBR-en til den andre disken.
Rediger direkte /boot/grub/grub.cfg Dette er ikke en god idé i GRUB 2, selv om det er teknisk mulig. Den anbefalte ruten er å forandre /etc/default/grub, bruk /etc/grub.d/40_custom for eget innhold og regenerering.
Praktiske spørsmål og nyttige snarveier
Hvordan finne ut hvilken oppstartspartisjon som er på /dev/sda? På BIOS/MBR-systemer: sudo fdisk -l /dev/sda (se stjernen for «Oppstart»). I GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT og se etter EFI-partisjonen (spesielt FAT32, type EF00/flags). sudo efibootmgr -v viser de registrerte oppstartsoppføringene.
Hvordan får jeg UUID-en til en partisjon? med blkid o lsblk -f. For eksempel: sudo blkid /dev/sda2 returnerer sin UUID og andre metadata.
Hvordan får jeg GRUB 2 til å vente i 10 sekunder før den skriver inn standardoppføringen? Justerer /etc/default/grub med GRUB_TIMEOUT=10 (og, hvis aktuelt, GRUB_TIMEOUT_STYLE=menu) og utfører sudo update-grub o grub2-mkconfig.
GRUB Legacy-kommandoer for å installere på den første partisjonen på den andre disken? Åpne konsollen og kjør: root (hd1,0) y luego setup (hd1,0)Hvis du ville ha MBR, ville det være setup (hd1).
Fremgangsmåte for å endre GRUB 2-konfigurasjonen? 1) Rediger /etc/default/grub (f.eks. GRUB_DEFAULT, GRUB_TIMEOUT), 2) legg til oppføringer i /etc/grub.d/40_custom hvis du trenger dem, 3) regenerer med update-grub/grub2-mkconfig, 4) start på nytt og test.
Hvor legger man inn egendefinerte menyer i GRUB 2? En /etc/grub.d/40_custom (eller egne filer i /etc/grub.d/ med riktige tillatelser). Aldri rediger for hånd /boot/grub/grub.cfg unntatt i en nødsituasjon.
Hvor ble oppføringene lagret i GRUB Legacy? En /boot/grub/menu.lst o grub.conf, i henhold til fordelingen.
Hvordan får jeg tilgang til GRUB-konsollen fra menyen? Trykk på "c"-tasten i GRUB 2 eller Legacy. For å redigere en bestemt oppføring, trykk på "e". Begge snarveiene er veldig nyttige når du trenger å diagnostisere problemer på sparket.
Eksempler på vanlige alternativer
Standard oppstartsvalg: GRUB_DEFAULT=0 den første omgangen starter; med GRUB_DEFAULT=saved husker den sist brukte konfigurasjonen. Regenerer konfigurasjonen etter endringen.
Ventetid: GRUB_TIMEOUT=4 justerer menyforsinkelsen; med 0 starter uten pause; i noen tilfeller kan du skjule menyen med GRUB_TIMEOUT_STYLE=hidden for en renere start.
Menyoppdatering: på Debian/Ubuntu og derivater, sudo update-grub; i andre, sudo grub2-mkconfig -o /boot/grub/grub.cfg. sørg for at du har os-prober installert hvis du vil oppdage andre systemer automatisk.
Selv om GRUB også dukker opp i sammenhenger utenfor GNU/Linux, husk at det ikke er en støttetjeneste. Hvis problemet ditt er spesifikt for Windows, er det mest praktiske å gå til forum dedikert til det systemet for å få fokusert hjelp.
GRUB har utviklet seg fra en enkel oppstartsmeny til et ekte pre-systemmiljø, som kan starte opp flere operativsystemer, administrere komplekse disker og hjelpe deg med å gjenopprette et system med bare et par kommandoer. Med riktig konfigurasjon og litt herding (GRUB-passord, LUKS-kryptering, godt administrerte nøkkelpolicyer og logger), vil du ha en robust, fleksibel og fremfor alt kontrollert oppstartsprosess.
