Hva er GRUB: En komplett guide til GNU Boot Manager

Siste oppdatering: 14 oktober 2025
Forfatter: TecnoDigital
  • 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.

Generell illustrasjon om GRUB

Hvis du har installert GNU/Linux på datamaskinen din eller bruker flere systemer, har du sannsynligvis hørt om GRUB. Det er det flotte lille programmet du ser rett før systemet starter opp, som lar deg velge hva du skal laste inn. Selv om det går ubemerket hen, Dens rolle er nøkkelen til å starte operativsystemet og overlate kontrollen til kjernen uten drama.

I PC-oppstartsverdenen har GRUB blitt de facto-standarden på grunn av sin kraft og fleksibilitet. Den ble født i GNU-prosjektet, og i dag, Det er den mest brukte oppstartsbehandleren i GNU/Linux, kompatibel med en god håndfull arkitekturer og filsystemer, brukervennlig for nybegynnere og samtidig en sveitserkniv for de som finjusterer hver eneste detalj på støvelen.

Hva er GNU GRUB, og hva er det til for?

GNU GRUB (GNU Grand Unified Bootloader) Det er en multiboot-behandler: et program som firmwaren (BIOS eller UEFI) kjører når datamaskinen slås på for å velge og laste inn et operativsystem. Den lar deg velge menyoppføringer, 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 datamaskiner med UEFI, Fastvaren laster direkte inn den kjørbare GRUB-filen som ligger på EFI-systempartisjonen (ESP), så lenge 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 oppstart av kompatible kjerner homogentOg når kjernen er i minnet, overfører GRUB kontrollen og arbeidet er gjort, noe som ikke er noen liten bragd.

GRUB-oppstartsalternativer-skjermen

Teknisk datablad og prosjektdata

GRUB er en del av GNU-økosystemet og distribueres som fri programvare lisensiert under GNU GPL v3 eller nyereUtviklingen er åpen, med et offisielt arkiv, feilsporing, nettsted og et veldig aktivt fellesskap rundt det.

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 fra Erich Stefan Boleyn i sammenheng med GNU Hurd og Mach-mikrokjernen. For å håndtere forskjellen i oppstartsmetoder ble Multiboot-spesifikasjonen laget, som gjorde det enklere for oppstartsadministratorer og kjerner å "snakke samme språk". I 1999, Gordon Matzigkeit og Yoshinori Okuji De presset på for at den ble adoptert 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 krystalliserte seg i GRUB2, mens den forrige linjen ble omdøpt til «GRUB Legacy» (hvis versjon 0.97 sist ble oppdatert i 2005). Fra og med 2007 migrerte flere distribusjoner til GRUB 2, og sent i 2009, De aller fleste inkluderte det som standard.

Diagram over GRUB-oppstartsprosessen

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.

  Slik finner du ruterens IP-adresse: Steg-for-steg-guide for alle plattformer

I UEFI er flyten mer direkte: Fastvaren kjører GRUB EFI-binærfilen fra EFI-partisjonen, hvis den er riktig installert og registrert. I begge tilfeller viser GRUB en meny eller konsoll, laster inn den valgte kjernen og overfører kjøringen til den.

Multiboot-spesifikasjon og kompatibilitet

GRUB implementerer Multiboot, som tillater oppstart av kompatible kjerner uten spesifikke triks. I tillegg, for systemer som ikke støtter det (som f.eks. Windows eller DOS), tilbyr kjedeinnlasting, og er rettet mot den første sektoren av partisjonen der dens egne lastere befinner seg.

Filsystemkompatibiliteten er enorm: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS, blant annet. Den kan også lese fra LVM-volumer og RAID-arrayer, et pluss 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 skal lese filene sine fraNår Linux-kjernen tar kontroll, definerer den sin egen virkelige rot, og resten av GRUB slutter å spille noen rolle.

GRUB-grensesnitt

GRUB tilbyr tre hovedvisninger. Den mest kjente er meny, med forhåndskonfigurerte inndata; du kan bevege deg med pilene, starte med Enter, redigere en oppføring med «e» eller åpne konsollen med «c».

Med oppføringsredigereren kan du redigere linjer på direkten (legge til med «o/O», redigere med «e», slette med «d») og, hvis alt passer, starte med «b». Den er ideell for testing av parametere fra kjernen uten å berøre filer.

Konsollen er den kraftigste modusen: den støtter kontekstuell autofullføring, redigeringssnarveier og alt GRUB interne kommandoer for å finne disker, laste inn kernel/initrd eller chainload. Hvis konfigurasjonsfilen mangler eller er feil, vil GRUB henvise deg hit slik at du kan løse problemet manuelt.

Vanlige feilmeldinger

Feil kan oppstå tidlig (mer begrenset) eller når menyer og moduler lastes inn (mer beskrivende). Nedenfor er et sammendrag 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).
  Slik installerer du C++ på Ubuntu: Komplett nybegynnerveiledning

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.conf a grub.cfg, med fornyet syntaks og kommandoer og automatisk generering ved hjelp av grub-mkconfig.
  • Partisjonsnummerering starter klokken 1 i GRUB 2 (i Legacy startet det på 0).
  • Persistens av variabler med save_env/load_env i 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.img og dynamiske moduler (*.mod).

Sikkerhet og herding med GRUB

En dårlig beskyttet bootloader er en felle. Hvis noen med fysisk tilgang kan redigere kjerneparametere eller starte en annen oppføring, deaktiver sikkerhetstiltakene dine effektivtDerfor er det lurt å beskytte GRUB med passord og følge gode fremgangsmåter.

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/.

Suppler med diskkryptering ved hjelp av LUKS, slik at selv om noen stjeler enheten, kan de ikke lese dataene. Det sikrer også at systemets passordregler er strenge for å redusere brute-force-angrep.

Administrer historikken til tømmerstokker med hodeDe som gir ledetråder til en angriper bør minimeres eller sentraliseres med tilgangskontroller; de som bidrar til å revidere ondsinnede forsøk bør aggregeres 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.

  Informasjon om Samsung One UI: historikk, versjoner og nye funksjoner

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 går jeg inn i 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 spiller. diagnostisere på farten.

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 kontekster utenfor GNU/Linux, husk at det ikke er en støttetjeneste. Hvis problemet ditt er spesifikt for Windows, er det mest praktiske å kontakte forum dedikert til det systemet for å få målrettet hjelp.

GRUB har utviklet seg fra å være en «oppstartsmeny» til et ekte før-systemmiljø, som kan starte opp flere operativsystemer, administrere komplekse disker og hjelpe deg med å gjenopprette et system med bare et par kommandoer. Med en god konfigurasjon og noe herding (GRUB-passord, LUKS-kryptering, nøkkelpolicyer og godt administrerte logger), vil du ha en robust, fleksibel og fremfor alt kontrollert oppstart.

UEFI Bootkit
Relatert artikkel:
UEFI Bootkit: Bootkitty på Linux og arven etter BlackLotus