Vad är GRUB: En komplett guide till GNU Boot Manager

Senaste uppdateringen: 14 oktober 2025
Författare: TecnoDigital
  • GRUB är GNU:s starthanterare som väljer och laddar operativsystemet, med stöd för BIOS/UEFI och multiboot.
  • GRUB 2 lägger till moduler, förbättrat stöd för filsystem, UUID-sökning och en grafisk meny/terminal.
  • Konfigurationen hanteras via /etc/default/grub och 40_custom, och genereras om med update-grub eller grub2-mkconfig.
  • Säkerhet: Lösenordsskydda GRUB, använd LUKS-kryptering och ha starka lösenordspolicyer.

Allmän illustration om GRUB

Om du har installerat GNU/Linux på din dator eller använder flera operativsystem har du förmodligen hört talas om GRUB. Det är det lilla men kraftfulla programmet du ser precis innan systemet startar, vilket låter dig välja vad som ska laddas. Även om det ofta går obemärkt förbi, är dess roll avgörande för att starta operativsystemet och smidigt överföra kontrollen till kärnan.

I PC-uppstartsvärlden har GRUB blivit de facto-standarden tack vare sin kraft och flexibilitet. Född inom GNU-projektet är det nu den mest utbredda starthanteraren i GNU/Linux , kompatibel med en mängd olika arkitekturer och filsystem, användarvänlig för nybörjare och samtidigt en schweizisk armékniv för dem som finjusterar varje detalj i uppstartsprocessen.

Vad är GNU GRUB och vad är det till för?

GNU GRUB (GNU Grand Unified Bootloader) är en multi-boot-hanterare: programvara som den inbyggda programvaran (BIOS eller UEFI) kör när datorn slås på för att välja och ladda ett operativsystem. Den låter användare välja menyalternativ, skicka parametrar till kärnan, starta från nätverket och till och med interagera med en konsol för att felsöka specifika problem.

Det används huvudsakligen i GNU/Linux-distributioner, även om det också har använts av andra system som Solaris på x86. På moderna UEFI- system laddar den inbyggda programvaran direkt den körbara GRUB-filen som finns i EFI-systempartitionen (ESP) , förutsatt att den är registrerad i NVRAM; i BIOS/MBR upptar GRUB de första sektorerna på disken och fortsätter därifrån.

Utöver den typiska menyn följer GRUB Multiboot-specifikationen, vilket innebär att den kan starta kompatibla kärnor sömlöst . Och när kärnan väl finns i minnet lämnar GRUB över kontrollen och dess jobb är gjort, vilket inte är någon liten bedrift.

GRUB-startalternativsskärmen

Tekniskt datablad och projektdata

GRUB är en del av GNU-ekosystemet och distribueras som fri programvara under GNU GPL v3 eller senare licens . Dess utveckling är öppen källkod, med ett officiellt arkiv, buggspårare och webbplats, och en mycket aktiv community.

Den är skriven huvudsakligen i C och assembler, och körs på flera plattformar: IA-32, x86-64 och PowerPC, bland annat. Den nuvarande grenen är GRUB 2 (en ny implementering av det historiska "GRUB Legacy"). Den senaste stabila versionen som släpptes är 2.12 (20 december 2023). Om du vill kontrollera din lokala version kan du köra: grub-install --version och du kommer att se motsvarande kedja.

Lite historia och utveckling

GRUB började som ett initiativ av Erich Stefan Boleyn inom ramen för GNU Hurd och Mach-mikrokärnan. För att lösa skillnaderna i uppstartsmetoder skapades Multiboot-specifikationen, vilket möjliggjorde för bootloaders och kärnor att "tala samma språk". År 1999 ledde Gordon Matzigkeit och Yoshinori Okuji dess antagande som ett officiellt paket inom GNU-projektet.

Runt 2002 startade en grupp japanska forskare PUPA (Preliminary Universal Programming Architecture) med målet att skriva om GRUB för att göra det mer robust och modulärt. Detta arbete resulterade i GRUB 2 , medan den tidigare versionen blev känd som "GRUB Legacy" (vars version 0.97 senast uppdaterades 2005). Från och med 2007 migrerade flera distributioner till GRUB 2, och i slutet av 2009 inkluderade den stora majoriteten det som standard.

Diagram över GRUB-startprocessen

Hur man startar datorn med GRUB (BIOS och UEFI)

När du startar datorn kör den inbyggda programvaran sina kontroller (RAM, klocka, enheter, startordning) och letar efter en bootloader. På system med BIOS/MBR överförs kontrollen till Master Boot Record (MBR), de första 512 bytena på diskenGRUB delades in i steg: Steg 1 (minimal kod i MBR), Steg 1.5 (i senare sektorer, överbryggning för att förstå filsystem) och Steg 2 (menyer och avancerade funktioner). I GRUB 2 existerar inte längre den "1.5"; nu finns det specifika avbildningar som boot.img, core.img och moduler (*.mod) som kombineras enligt installationen.

  Skillnader mellan Windows Pro och Enterprise och andra utgåvor

I UEFI är processen mer direkt: firmware kör GRUB EFI-binärfilen från EFI-partitionen , förutsatt att den är korrekt installerad och registrerad. I båda fallen presenterar GRUB en meny eller konsol, laddar den valda kärnan och överför sedan körningen till den.

Multiboot-specifikation och kompatibilitet

GRUB implementerar Multiboot, vilket gör att kompatibla kärnor kan startas utan specifika "knep". Dessutom, för system som inte stöder det (som Windows eller DOS ), erbjuder det kedjeladdning, som riktar sig mot den första sektorn i partitionen där dess bootloaders finns.

Dess filsystemkompatibilitet är omfattande: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , bland andra. Den kan också läsa från LVM-volymer och RAID-arrayer, en betydande fördel när lagringsstrukturen är komplex.

Utvalda funktioner och funktioner

  • Menygränssnitt Konfigurerbar och mycket flexibel interaktiv terminal, med automatisk ifyllning via Tab och genvägar i Bash-stil.
  • Stöd för LBA (Logisk blockadressering) för att övervinna klassiska BIOS-gränser och läsa bortom 1024 cylindrar.
  • Kapacitet för nätverksstart (PXE/TFTP) och fjärrterminaler, användbara i centraliserade hanteringsscenarier.
  • Automatisk dekomprimering och igenkänning av flera körbara format.
  • Permanent lagring av variabler med spara_miljö/ladda_miljö y grub-editenv (när plattformen tillåter det).
  • All RAM-detektering, oberoende av diskgeometri och sökmekanismer efter etiketter och UUID.
  • Grafiskt stöd för menyer och bakgrunder, och en modulär design som upprätthåller core.img liten och laddar moduler efter behov.

Nyckelterminologi: enheter, partitioner och sökvägar

GRUB namnger diskar och partitioner på sitt eget sätt. Den första disken är vanligtvis (hd0), den första partitionen (hd0,1) I GRUB 2 (kom ihåg: i GRUB 2 börjar numreringen på 1; i Legacy började den på 0). För att referera till en hel disk utelämnas partitionen: (hd0).

För att indikera filer kombineras enheten med sökvägen: (hd0,1)/ruta/al/archivo. Det stöder också blocklistor (blocklistor) när det är nödvändigt att ange den exakta platsen på disken för en fil som inte syns som sådan i filsystemet, till exempel (hd0,1)+1 för den första sektorn i en partition, användbart med chainloader +1.

"Root-filsystemet" i GRUB är inte detsamma som "/" i Linux. Det är helt enkelt rotpartitionen från vilken GRUB läser sina filer ; när Linuxkärnan tar kontroll definierar den sin egen faktiska rot, och allt annat i GRUB blir irrelevant.

GRUB-gränssnitt

GRUB erbjuder tre huvudvyer. Den mest välbekanta är menyn , med förkonfigurerade poster; du kan navigera med piltangenterna, starta med Enter, redigera en post med "e" eller öppna konsolen med "c".

Input-editorn låter dig modifiera rader i realtid (lägg till med "o/O", redigera med "e", ta bort med "d") och, om allt ser rätt ut, starta med "b". Den är idealisk för att testa kärnparametrar utan att röra filer.

Konsolen är det kraftfullaste läget: det stöder kontextuell autokomplettering, redigeringsgenvägar och alla GRUBs interna kommandon för att hitta diskar, ladda kernel/initrd eller chainloading. Om konfigurationsfilen saknas eller är skadad kommer GRUB att starta dig här så att du kan lösa problemet manuellt.

Vanliga felmeddelanden

Fel kan uppstå i det inledande skedet (mer begränsat) eller vid laddning av menyer och moduler (mer beskrivande). Nedan följer en sammanställning av representativa koder som GRUB kan visa, omskrivna för tydlighetens skull :

  • 1: Ogiltig eller icke-absolut sökväg; 2: Ogiltig filtyp (inte en vanlig fil); 3–4: Korrupt data/rubrik under dekomprimering; 5: skadad partitionstabell eller ogiltig.
  • 6: Inkompatibilitet mellan steg 1/steg 2; 7: Inläsning under 1 MB stöds inte; 8: Försökte starta utan att ladda en kärna; 9: Okänt startfel.
  • 10: Multiboot-funktioner stöds inte; 11: Enheten känns inte igen; 12: Ogiltig enhet; 13: Körbart filformat stöds inte.
  • 14: Filsystemet förhindrar att hela filen läses; 15: filen hittades inte; 16: Inkonsekvent filsystemstruktur.
  • 17: Det går inte att montera den valda partitionen; 18: Cylindern ligger utanför det intervall som stöds av BIOS (vanligt på äldre hårddiskar); 19: Initrd före kernel.
  • 20: Moduler före en multiboot-kärna; 21: Vald disk finns inte; 22: Partition saknas; 23: Fel vid tolkning av ett tal.
  • 24: Åtkomst till ett block utanför partitionen; 25: Fel vid diskläsning; 26: För många symboliska länkar; 27: Okänt kommando.
  • 28: Objektet får inte plats i minnet; 29: Skrivfel till disk; 30: Ogiltigt argument; 31: Filen är inte sektorjusterad (ReiserFS, använd notail).
  • 32: Autentisering krävs; 33: Seriell enhet har inte konfigurerats; 34: Inga lediga sektorer för steg 1.5 efter MBR (konflikt med EZ-BIOS eller partitionen startar för tidigt).
  Förbättringar av Firefox 150 på Linux och viktiga nya funktioner i webbläsaren

Grundläggande GRUB-kommandon

I konsolen kan du köra mycket användbara interaktiva kommandon. Till exempel, boot startar den senast laddade (kärna eller kedjeladdaren), och chainloader <archivo> laddar en sektor eller fil från en kedja; den typiska genvägen för Windows är chainloader +1.

displaymem visar minnesanvändningen enligt BIOS, vilket är praktiskt om du är osäker på det detekterade RAM-minnet. Med initrd <archivo> Du anger den initiala RAM-diskavbildningen som kärnan behöver.

För att installera till MBR från GRUB Legacy-konsolen använde du install med vägarna till steg 1, steg 2 och, valfritt, till konfigurationsfilen. Idag i GRUB 2, från systemet, är det normalt att använda grub-install och återskapa menyn med update-grub/grub2-mkconfig.

Kommandot kernel anger kärnbinärfilen och dess parametrar, till exempel: kernel /vmlinuz root=/dev/sda5Det föregås vanligtvis av root (hdX,Y) o rootnoverify för att ange partitionen som GRUB ska läsa från.

Konfigurationsfiler och direktiv

I GRUB Legacy fanns menyn i /boot/grub/menu.lst o grub.conf, med direktiv som color, default, fallback, hiddenmenu, password, timeout, splashimage och block title med ordern för varje system.

Ett klassiskt exempel (parafraserat) skulle inkludera en Linux-sektion med root (hd0,2), kernel med hans rotparameter=/…Och bootoch en annan för Windows med rootnoverify (hd0,1) y chainloader +1.

I GRUB 2 är den automatiskt genererade filen /boot/grub/grub.cfgDet rekommenderas inte att redigera den manuellt; istället justeras den /etc/default/grub (värden som GRUB_TIMEOUT, GRUB_DEFAULT, etc.) och anpassade poster läggs till i /etc/grub.d/40_customSedan körs den update-grub o grub2-mkconfig för att återskapa menyn.

Viktiga skillnader mellan GRUB Legacy och GRUB 2

  • Konfigurationsfilen gick från menu.lst/grub.conf a grub.cfg, med förnyad syntax och kommandon samt automatisk generering med hjälp av grub-mkconfig.
  • Partitionsnumrering börjar 1 i GRUB 2 (i Legacy började det på 0).
  • Persistens av variabler med save_env/load_env i vissa konfigurationer.
  • Bättre ruttdetektering och sök efter UUID/taggar; fler filsystem stöds.
  • Direktläsning från LVM och RAID.
  • Terminal- och menygrafik och omorganiserade bilder: Steg 1.5 är borta; boot.img, core.img och dynamiska moduler (*.mod).

Säkerhet och härdning med GRUB

En dåligt skyddad starthanterare är en såll. Om någon med fysisk åtkomst kan redigera kärnparametrar eller starta en annan post, inaktiverar det effektivt dina säkerhetsåtgärder . Det är därför det är lämpligt att skydda GRUB med lösenord och implementera bästa praxis.

Ställ in en starkt lösenord för att begränsa ändringar av inmatningar eller åtkomst till konsolen. I GRUB 2, använd användarnamn och lösenord med grub-mkpasswd-pbkdf2 och konfigurera motsvarande regler i skripten för /etc/grub.d/.

Det inkluderar även diskkryptering med LUKS , så att även om någon stjäl datorn kommer de inte att kunna läsa informationen. Det säkerställer också att systemets lösenordspolicyer är strikta för att minska brute-force-attacker.

Hantera din logghistorik klokt : de som ger ledtrådar till en angripare bör minimeras eller centraliseras med åtkomstkontroller; de som hjälper till att granska skadliga försök bör aggregeras och analyseras på en säker plats.

För att upptäcka andra installerade system och generera poster automatiskt, installera os-proberDet sparar tid och förhindrar fel när du återskapar menyn.

  SAP: Funktioner och fördelar

Installation och underhåll

Om du inte installerade GRUB under installationen av din distribution kan du göra det senare. I GRUB 2, från systemet, kör sudo grub-install /dev/sdX (ersätt med din disk) och sedan sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgDu kommer att se menyn vid nästa uppstart.

Från en GRUB Legacy-konsol är den klassiska proceduren att ange roten och köra installationen: root (hd1,0) följt av setup (hd1,0) för den första partitionen på den andra disken, eller setup (hd1) om du pekar på MBR:n för den andra disken.

Redigera direkt /boot/grub/grub.cfg Detta är inte en bra idé i GRUB 2, även om det är tekniskt möjligt. Den rekommenderade rutten är att förändras /etc/default/grub, använda sig av /etc/grub.d/40_custom för eget innehåll och regenerering.

Praktiska frågor och användbara genvägar

Hur vet man vilken startpartition som är på /dev/sda? På BIOS/MBR-system: sudo fdisk -l /dev/sda (se asterisken för ”Boot”). I GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT och leta efter EFI-partitionen (FAT32, typ EF00/flags). sudo efibootmgr -v visar de inspelade startposterna.

Hur får jag tag i UUID för en partition? med blkid o lsblk -f. Till exempel: sudo blkid /dev/sda2 returnerar sin UUID och andra metadata.

Hur får jag GRUB 2 att vänta 10 sekunder innan den anger standardposten? Justerar /etc/default/grub med GRUB_TIMEOUT=10 (och, om tillämpligt, GRUB_TIMEOUT_STYLE=menu) och kör sudo update-grub o grub2-mkconfig.

GRUB Legacy-kommandon för att installera på den första partitionen av den andra disken? Öppna konsolen och kör: root (hd1,0) och då setup (hd1,0)Om du ville ha MBR, skulle det vara setup (hd1).

Steg för att ändra GRUB 2-konfigurationen? 1) Redigera /etc/default/grub (till exempel., GRUB_DEFAULT, GRUB_TIMEOUT), 2) lägg till poster i /etc/grub.d/40_custom om du behöver dem, 3) regenerera med update-grub/grub2-mkconfig, 4) starta om och testa.

Var placerar man anpassade menyer i GRUB 2? En /etc/grub.d/40_custom (eller egna filer i /etc/grub.d/ med rätt behörighet). Redigera aldrig för hand /boot/grub/grub.cfg förutom i en nödsituation.

Var lagrades posterna i GRUB Legacy? En /boot/grub/menu.lst o grub.conf, enligt fördelningen.

Hur kommer jag åt GRUB-konsolen från menyn? Tryck på "c"-tangenten i GRUB 2 eller Legacy. För att redigera en specifik post, tryck på "e". Båda genvägarna är mycket användbara när du behöver diagnostisera problem direkt.

Exempel på vanliga alternativ

Standardval för start: GRUB_DEFAULT=0 den första inningen börjar; med GRUB_DEFAULT=saved kommer ihåg den senast använda konfigurationen. Omskapa konfigurationen efter ändringen.

Väntetid: GRUB_TIMEOUT=4 justerar menyfördröjningen; med 0 startar utan paus; i vissa fall kan du dölja menyn med GRUB_TIMEOUT_STYLE=hidden för en renare start.

Menyuppdatering: på Debian/Ubuntu och derivator, sudo update-grub; i andra, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Se till att du har os-prober installerat om du vill upptäcka andra system automatiskt.

Även om GRUB även förekommer i sammanhang utanför GNU/Linux, kom ihåg att det inte är en supporttjänst. Om ditt problem är specifikt för Windows är det mest praktiska att gå till forum dedikerade till det systemet för att få fokuserad hjälp.

GRUB har utvecklats från en enkel startmeny till en verklig försystemmiljö, kapabel att starta flera operativsystem, hantera komplexa diskar och hjälpa dig att återställa ett system med bara ett par kommandon. Med korrekt konfiguration och viss härdning (GRUB-lösenord, LUKS-kryptering, välhanterade nyckelpolicyer och loggar) får du en robust, flexibel och framför allt kontrollerad startprocess.

UEFI-bootkit
Relaterad artikel:
UEFI Bootkit: Bootkitty på Linux och BlackLotus arv