Hvad er GRUB: En komplet guide til GNU Boot Manager

Sidste ændring: 14 oktober 2025
Forfatter: TecnoDigital
  • GRUB er GNU boot manager, der vælger og indlæser operativsystemet og understøtter BIOS/UEFI og Multiboot.
  • GRUB 2 tilføjer moduler, forbedret filsystemunderstøttelse, UUID-søgning og en grafisk menu/terminal.
  • Konfigurationen administreres via /etc/default/grub og 40_custom, og regenereres med update-grub eller grub2-mkconfig.
  • Sikkerhed: Beskyt GRUB med adgangskode, brug LUKS-kryptering, og hav stærke adgangskodepolitikker.

Generel illustration om GRUB

Hvis du har installeret GNU/Linux på din computer eller bruger flere operativsystemer, har du sikkert hørt om GRUB. Det er det lille, men kraftfulde program, du ser lige før dit system starter, og som giver dig mulighed for at vælge, hvad der skal indlæses. Selvom det ofte går ubemærket hen, er dets rolle afgørende for at starte operativsystemet og problemfrit overføre kontrollen til kernen.

I PC-opstartsverdenen er GRUB blevet de facto-standarden på grund af dens kraft og fleksibilitet. Født inden for GNU-projektet er det nu den mest udbredte boot manager i GNU/Linux , kompatibel med en bred vifte af arkitekturer og filsystemer, brugervenlig for nybegyndere og samtidig en schweizerkniv for dem, der finjusterer hver eneste detalje i opstartsprocessen.

Hvad er GNU GRUB, og hvad er det til?

GNU GRUB (GNU Grand Unified Bootloader) er en multi-boot manager: software, som firmwaren (BIOS eller UEFI) kører, når computeren tændes, for at vælge og indlæse et operativsystem. Det giver brugerne mulighed for at vælge menupunkter, sende parametre til kernen, starte fra netværket og endda interagere med en konsol for at fejlfinde specifikke problemer.

Det bruges hovedsageligt i GNU/Linux-distributioner, selvom det også er blevet brugt af andre systemer såsom Solaris på x86. På moderne UEFI- systemer indlæser firmwaren direkte den eksekverbare GRUB-fil, der er placeret i EFI-systempartitionen (ESP) , forudsat at den er registreret i NVRAM; i BIOS/MBR optager GRUB de første sektorer af disken og fortsætter derfra.

Ud over den typiske menu overholder GRUB Multiboot-specifikationen, hvilket betyder, at den problemfrit kan starte kompatible kerner . Og når kernen er i hukommelsen, overdrager GRUB kontrollen, og dens arbejde er udført, hvilket ikke er nogen lille bedrift.

GRUB-opstartsindstillinger-skærmen

Teknisk datablad og projektdata

GRUB er en del af GNU-økosystemet og distribueres som fri software under GNU GPL v3 eller senere licens . Udviklingen er open source med et officielt arkiv, en bug tracker og et websted samt et meget aktivt fællesskab.

Den er primært skrevet i C og assembler og kører på flere platforme: IA-32, x86-64 og PowerPC, blandt andre. Den nuværende gren er GRUB 2 (en genimplementering af den historiske "GRUB Legacy"). Den seneste stabile version, der er blevet udgivet, er 2.12 (20. december 2023). Hvis du vil tjekke din lokale version, kan du køre: grub-install --version og du vil se den tilsvarende kæde.

Lidt historie og udvikling

GRUB startede som et initiativ af Erich Stefan Boleyn inden for rammerne af GNU Hurd og Mach-mikrokernen. For at løse uligheden i boot-metoder blev Multiboot-specifikationen skabt, som gjorde det muligt for bootloadere og kerner at "tale samme sprog". I 1999 stod Gordon Matzigkeit og Yoshinori Okuji i spidsen for dens adoption som en officiel pakke i GNU-projektet.

Omkring 2002 startede en gruppe japanske forskere PUPA (Preliminary Universal Programming Architecture) med det mål at omskrive GRUB for at gøre det mere robust og modulært. Dette arbejde resulterede i GRUB 2 , mens den tidligere version blev kendt som "GRUB Legacy" (hvis version 0.97 sidst blev opdateret i 2005). Fra 2007 og frem migrerede flere distributioner til GRUB 2, og ved udgangen af ​​2009 inkluderede langt de fleste det som standard.

Diagram over GRUB-opstartsprocessen

Sådan starter du din computer med GRUB (BIOS og UEFI)

Når du tænder din pc, kører firmwaren sine kontroller (RAM, ur, enheder, boot-rækkefølge) og søger efter en bootloader. På systemer med BIOS/MBR overføres kontrollen til Master Boot Record (MBR), de første 512 bytes på diskenGRUB blev opdelt i faser: Fase 1 (minimal kode i MBR), Fase 1.5 (i senere sektorer, brobygning for at forstå filsystemer) og Fase 2 (menuer og avancerede funktioner). I GRUB 2 eksisterer den "1.5" ikke længere; nu er der specifikke billeder såsom boot.img, core.img og moduler (*.mod), der kombineres i henhold til installationen.

  Linux 6.14: Hvad er nyt, sikkerhedsforbedringer og hardwaresupport

I UEFI er processen mere direkte: firmwaren udfører GRUB EFI-binærfilen fra EFI-partitionen , forudsat at den er korrekt installeret og registreret. I begge tilfælde præsenterer GRUB en menu eller konsol, indlæser den valgte kerne og overfører derefter udførelsen til den.

Multiboot-specifikation og kompatibilitet

GRUB implementerer Multiboot, hvilket tillader kompatible kerner at blive startet op uden specifikke "tricks". Derudover tilbyder den chainloading for systemer, der ikke understøtter det (såsom Windows eller DOS ), der er målrettet mod den første sektor af partitionen, hvor dens bootloadere befinder sig.

Dens filsystemkompatibilitet er omfattende: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , blandt andre. Den kan også læse fra LVM-volumener og RAID-arrays, hvilket er en betydelig fordel, når lagerstrukturen er kompleks.

Udvalgte funktioner og funktioner

  • Menugrænseflade Konfigurerbar og meget fleksibel interaktiv terminal med automatisk udfyldelse af Tab og genveje i Bash-stil.
  • Støtte til LBA (Logisk blokadressering) at overvinde klassiske BIOS-begrænsninger og læse mere end 1024 cylindre.
  • Kapacitet til netværksstart (PXE/TFTP) og fjernterminaler, hvilket er nyttigt i centraliserede administrationsscenarier.
  • Automatisk dekomprimering og genkendelse af flere eksekverbare formater.
  • Permanent lagring af variabler med gem_miljø/indlæs_miljø y grub-editenv (når platformen tillader det).
  • Al RAM-detektion, uafhængighed af diskgeometri og søgemekanismer efter etiketter og UUID.
  • Grafisk understøttelse af menuer og baggrunde og et modulært design, der opretholder core.img lille og indlæser moduler efter behov.

Nøgleterminologi: enheder, partitioner og stier

GRUB navngiver diske og partitioner på sin egen måde. Den første disk er normalt (hd0), den første partition (hd0,1) I GRUB 2 (husk: i GRUB 2 starter nummereringen ved 1; i Legacy startede den ved 0). For at referere til en hel disk udelades partitionen: (hd0).

For at angive filer kombineres enheden med stien: (hd0,1)/ruta/al/archivo. Det understøtter også block lister (bloklister) når det er nødvendigt at angive den nøjagtige placering på disken af ​​en fil, der ikke er synlig som sådan i filsystemet, for eksempel (hd0,1)+1 for den første sektor af en partition, nyttig med chainloader +1.

"Root-filsystemet" i GRUB er ikke det samme som "/" i Linux. Det er simpelthen rodpartitionen, hvorfra GRUB læser sine filer ; når Linux-kernen tager kontrol, definerer den sin egen faktiske rod, og alt andet i GRUB bliver irrelevant.

GRUB-grænseflader

GRUB tilbyder tre hovedvisninger. Den mest velkendte er menuen med forudkonfigurerede elementer; du kan navigere med piletasterne, starte med Enter, redigere en indgang med "e" eller åbne konsollen med "c".

Input-editoren lader dig ændre linjer i farten (tilføj med "o/O", rediger med "e", slet med "d") og, hvis alt ser rigtigt ud, opstart med "b". Den er ideel til at teste kerneparametre uden at røre filer.

Konsollen er den mest kraftfulde tilstand: den understøtter kontekstuel autofuldførelse, redigeringsgenveje og alle GRUBs interne kommandoer til at finde diske, indlæse kernel/initrd eller chainloading. Hvis konfigurationsfilen mangler eller er beskadiget, starter GRUB dig her, så du manuelt kan løse problemet.

Almindelige fejlmeddelelser

Der kan opstå fejl i den indledende fase (mere begrænset) eller ved indlæsning af menuer og moduler (mere beskrivende). Nedenfor er en samling af repræsentative koder, som GRUB kan vise, omskrevet for klarhedens skyld :

  • 1: Ugyldig eller ikke-absolut sti; 2: Ugyldig filtype (ikke en almindelig fil); 3-4: Beskadigede data/header under dekomprimering; 5: beskadiget partitionstabel eller ugyldig.
  • 6: Stage1/Stage2-inkompatibilitet; 7: Indlæsning under 1 MB understøttes ikke; 8: Forsøg på opstart uden at indlæse en kerne; 9: Ukendt opstartsfejl.
  • 10: Multiboot-funktioner understøttes ikke; 11: Enhed genkendes ikke; 12: Ugyldig enhed; 13: Ikke-understøttet eksekverbart format.
  • 14: Filsystemet forhindrer hele filen i at blive læst; 15: fil ikke fundet; 16: Inkonsekvent filsystemstruktur.
  • 17: Kan ikke montere den valgte partition; 18: Cylinder uden for det område, der understøttes af BIOS (typisk på ældre drev); 19: Initrd før kernel.
  • 20: Moduler før en multiboot-kerne; 21: Den valgte disk findes ikke; 22: Ikke-eksisterende partition; 23: Fejl ved fortolkning af et tal.
  • 24: Adgang til en blok uden for partitionen; 25: Disklæsningsfejl; 26: For mange symbolske links; 27: Ukendt kommando.
  • 28: Elementet passer ikke i hukommelsen; 29: Diskskrivningsfejl; 30: Ugyldigt argument; 31: Filen er ikke sektorjusteret (ReiserFS, brug notail).
  • 32: Godkendelse kræves; 33: Seriel enhed ikke konfigureret; 34: Ingen ledige sektorer til trin 1.5 efter MBR (konflikt med EZ-BIOS eller partition starter for tidligt).
  Fejl, der forkorter din pc's levetid, og hvordan du undgår dem

Grundlæggende GRUB-kommandoer

I konsollen kan du køre meget nyttige interaktive kommandoer. For eksempel, boot starter den sidst indlæste (kernel eller chainloader), og chainloader <archivo> indlæser en sektor eller fil fra en kæde; den typiske genvej til Windows er chainloader +1.

displaymem viser hukommelsesforbruget i henhold til BIOS, hvilket er praktisk, hvis du er usikker på den registrerede RAM. Med initrd <archivo> Du angiver det indledende RAM-diskbillede, som kernen kræver.

For at installere til MBR fra GRUB Legacy-konsollen brugte du install med ruterne til stage1, stage2 og, valgfrit, til konfigurationsfilen. I dag i GRUB 2 er det normalt at bruge fra systemet grub-install og regenerer menuen med update-grub/grub2-mkconfig.

Kommandoen kernel angiver kernelbinærfilen og dens parametre, for eksempel: kernel /vmlinuz root=/dev/sda5Det er normalt forudgået af root (hdX,Y) o rootnoverify for at indstille den partition, som GRUB skal læse fra.

Konfigurationsfiler og direktiver

I GRUB Legacy befandt menuen sig i /boot/grub/menu.lst o grub.confmed direktiver som f.eks. color, default, fallback, hiddenmenu, password, timeout, splashimage og blokke title med ordrerne for hvert system.

Et klassisk eksempel (parafraseret) ville omfatte en Linux-sektion med root (hd0,2), kernel med rodparameter=/…, Og bootog en anden til Windows med rootnoverify (hd0,1) y chainloader +1.

I GRUB 2 er den automatisk genererede fil /boot/grub/grub.cfgDet anbefales ikke at redigere det manuelt; i stedet justeres det /etc/default/grub (værdier som f.eks. GRUB_TIMEOUT, GRUB_DEFAULTosv.) og brugerdefinerede poster tilføjes i /etc/grub.d/40_customSå udføres den update-grub o grub2-mkconfig for at regenerere menuen.

Vigtigste forskelle mellem GRUB Legacy og GRUB 2

  • Konfigurationsfilen gik fra menu.lst/grub.conf a grub.cfg, med fornyet syntaks og kommandoer og automatisk generering ved hjælp af grub-mkconfig.
  • Partitionsnummerering starter i 1 i GRUB 2 (i Legacy startede det ved 0).
  • Persistens af variabler med save_env/load_env i nogle konfigurationer.
  • Bedre rutedetektion og søg efter UUID/tagsflere filsystemer understøttes.
  • Direkte læsning fra LVM og RAID.
  • Terminal- og menugrafik og omorganiserede billeder: Trin 1.5 er væk; boot.img, core.img og dynamiske moduler (*.mod).

Sikkerhed og hærdning med GRUB

En dårligt sikret boot manager er en si. Hvis en person med fysisk adgang kan redigere kerneparametre eller starte en anden post, deaktiverer det effektivt dine sikkerhedsforanstaltninger . Derfor er det tilrådeligt at beskytte GRUB med adgangskoder og implementere bedste praksis.

Sæt en stærk adgangskode for at begrænse ændringer af adgang eller konsoladgang. I GRUB 2 skal du bruge brugernavne og adgangskoder med grub-mkpasswd-pbkdf2 og konfigurer de tilsvarende regler i scripts til /etc/grub.d/.

Det inkluderer også diskkryptering ved hjælp af LUKS , så selvom nogen stjæler computeren, vil de ikke være i stand til at læse dataene. Det sikrer også, at systemets adgangskodepolitikker er strenge for at reducere brute-force-angreb.

Administrer din loghistorik klogt : Dem, der giver spor til en angriber, bør minimeres eller centraliseres med adgangskontroller; dem, der hjælper med at revidere ondsindede forsøg, bør aggregeres og analyseres på et sikkert sted.

For at registrere andre installerede systemer og generere poster automatisk, skal du installere os-proberDet vil spare dig tid og forhindre fejl, når du genskaber menuen.

  Sådan aktiverer du sikker opstart efter en BIOS-opdatering

Installation og vedligeholdelse

Hvis du ikke installerede GRUB under installationen af ​​din distro, kan du gøre det senere. I GRUB 2 skal du køre [kommandoer/kommandoer] fra systemet. sudo grub-install /dev/sdX (erstat med din disk) og derefter sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgDu vil se menuen ved næste opstart.

Fra en GRUB Legacy-konsol er den klassiske procedure at angive roden og køre installationen: root (hd1,0) efterfulgt af setup (hd1,0) for den første partition på den anden disk, eller setup (hd1) hvis du peger på MBR'en på den anden disk.

Rediger direkte /boot/grub/grub.cfg Dette er ikke en god idé i GRUB 2, selvom det er teknisk muligt. Den anbefalede rute er at ændre /etc/default/grub, brug /etc/grub.d/40_custom til eget indhold og regenerering.

Praktiske spørgsmål og nyttige genveje

Hvordan ved man hvilken bootpartition der er på /dev/sda? På BIOS/MBR-systemer: sudo fdisk -l /dev/sda (se stjernen for “Boot”). I GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT og kig efter EFI-partitionen (især FAT32, type EF00/flags). sudo efibootmgr -v viser de registrerede opstartsposter.

Hvordan får jeg UUID'et for en partition? med blkid o lsblk -f. For eksempel: sudo blkid /dev/sda2 returnerer sin UUID og andre metadata.

Hvordan får jeg GRUB 2 til at vente 10 sekunder, før den indtaster standardindstillingen? Justerer /etc/default/grub med GRUB_TIMEOUT=10 (og, hvis relevant, GRUB_TIMEOUT_STYLE=menu) og udfører sudo update-grub o grub2-mkconfig.

GRUB Legacy-kommandoer til installation på den første partition af den anden disk? Åbn konsollen og kør: root (hd1,0) og derefter setup (hd1,0)Hvis du ville have MBR'en, ville det være setup (hd1).

Trin til at ændre GRUB 2-konfigurationen? 1) Rediger /etc/default/grub (f.eks. GRUB_DEFAULT, GRUB_TIMEOUT), 2) tilføj poster i /etc/grub.d/40_custom hvis du har brug for dem, 3) regenerer med update-grub/grub2-mkconfig, 4) genstart og test.

Hvor placeres brugerdefinerede menuer i GRUB 2? En /etc/grub.d/40_custom (eller egne filer i /etc/grub.d/ med de nødvendige tilladelser). Rediger aldrig manuelt /boot/grub/grub.cfg undtagen i en nødsituation.

Hvor blev posterne gemt i GRUB Legacy? En /boot/grub/menu.lst o grub.conf, ifølge fordelingen.

Hvordan får jeg adgang til GRUB-konsollen fra menuen? Tryk på "c"-tasten i GRUB 2 eller Legacy. For at redigere en specifik post skal du trykke på "e". Begge genveje er meget nyttige, når du har brug for at diagnosticere problemer på farten.

Eksempler på almindelige muligheder

Standard opstartsvalg: GRUB_DEFAULT=0 den første inning starter; med GRUB_DEFAULT=saved husker den sidst anvendte konfiguration. Genskab konfigurationen efter ændringen.

Ventetid: GRUB_TIMEOUT=4 justerer menuforsinkelsen; med 0 starter uden pause; i nogle tilfælde kan du skjule menuen med GRUB_TIMEOUT_STYLE=hidden for en renere start.

Menuopdatering: 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 installeret, hvis du vil registrere andre systemer automatisk.

Selvom GRUB også optræder i sammenhænge uden for GNU/Linux, skal du huske, at det ikke er en supporttjeneste. Hvis dit problem er specifikt for Windows, er det mest praktiske at gå til fora dedikeret til det pågældende system for at få målrettet hjælp.

GRUB har udviklet sig fra en simpel opstartsmenu til et ægte præ-systemmiljø, der er i stand til at opstarte flere operativsystemer, administrere komplekse diske og hjælpe dig med at gendanne et system med blot et par kommandoer. Med korrekt konfiguration og en vis grad af hærdning (GRUB-adgangskoder, LUKS-kryptering, veladministrerede nøglepolitikker og logfiler) vil du have en robust, fleksibel og frem for alt kontrolleret opstartsproces.

UEFI Bootkit
Relateret artikel:
UEFI Bootkit: Bootkitty på Linux og BlackLotus' arv