GNU GRUB - GNU GRUB

GNU GRUB
GNU GRUB -logo
GNU GRUB -logo
Debian Unstable GRUB2 (2015) .png
GRUB v2 kjører i tekstmodus
Originale forfattere Erich Boleyn
Utvikler (er) GNU -prosjekt
Første utgivelse 1995 ; 26 år siden ( 1995 )
Stabil utgivelse
2.06 (GRUB 2) / 8. juni 2021 ; 4 måneder siden ( 2021-06-08 )
Oppbevaringssted
Skrevet inn Montering , C
Operativsystem Linux , macOS , BSD , ( Solaris / illumos (x86 -port)) og Windows (gjennom kjettingbelastning)
Plattform IA-32 , x86-64 , IA-64 , ARM , PowerPC , s390x , MIPS og SPARC
Tilgjengelig i Engelsk og andre
Type Bootloader
Tillatelse GPLv3
Nettsted www .gnu .org /software /grub /

GNU GRUB (forkortelse for GNU GRand Unified Bootloader , ofte referert til som GRUB ) er en oppstartslasterpakke fra GNU -prosjektet . GRUB er referanseimplementeringen av Free Software Foundation 's Multiboot Specification , som gir en bruker muligheten til å starte et av flere operativsystemer installert på en datamaskin eller velge en spesifikk kjernekonfigurasjon tilgjengelig på et bestemt operativsystems partisjoner.

GNU GRUB ble utviklet fra en pakke kalt Grand Unified Bootloader (et skuespill om Grand Unified Theory ). Den brukes hovedsakelig for Unix-lignende systemer. Den operativsystemet GNU benytter GNU Grub som sin oppstartslast, som gjør de fleste Linux-distribusjoner og operativsystemet Solaris på x86-system, ved å starte med Solaris 10 1/06 frigivelse.

Operasjon

GRUB2 på MBR -partisjonert harddisk; trinn 1 ( boot.img) kan alternativt skrives inn i en av partisjonens oppstartssektorer .
GRUB2 på en GPT -partisjonert harddisk, oppstart på BIOS -fastvare eller UEFI -kompatibilitetsmodus (CSM)

Oppstart

Når en datamaskin slås på, finner BIOS den konfigurerte primære oppstartbare enheten (vanligvis datamaskinens harddisk) og laster og kjører det første oppstartsprogrammet fra hovedoppstartsposten (MBR). MBR er den første sektoren på harddisken, med null som forskyvning (sektorer som teller starter på null). I lang tid har størrelsen på en sektor vært 512 byte, men siden 2009 er det harddisker tilgjengelig med en sektorstørrelse på 4096 byte, kalt Advanced Format disks. Fra oktober 2013 er slike harddisker fremdeles tilgjengelig i 512-bytes sektorer ved å bruke 512e-emuleringen .

Den eldre MBR -partisjonstabellen støtter maksimalt fire partisjoner og har 64 byte kombinert. Sammen med den valgfrie disksignaturen (fire byte) og disketidsstempelet (seks byte), etterlater dette mellom 434 og 446 byte tilgjengelig for maskinkoden til en oppstartslaster. Selv om en så liten plass kan være tilstrekkelig for veldig enkle oppstartslastere, er den ikke stor nok til å inneholde en oppstartslaster som støtter komplekse og flere filsystemer , menydrevet valg av oppstartsvalg, etc. Støvelastere med større fotavtrykk er dermed delt inn i stykker, der det minste stykket passer inn i og befinner seg i MBR, mens større brikker lagres andre steder (for eksempel i tomme sektorer mellom MBR og den første partisjonen) og påkalles av oppstartslasterens MBR -kode.

Operativsystem kjerne bilder er i de fleste tilfeller filer som ligger på egnede filsystemer, men begrepet et filsystem er ukjent for BIOS. I BIOS-baserte systemer er plikten til en oppstartslaster derfor å få tilgang til innholdet i disse filene, slik at den kan lastes inn i RAM og kjøres.

En mulig tilnærming for oppstartsladere til å laste inn kjernebilder er ved direkte tilgang til harddisksektorer uten å forstå det underliggende filsystemet. Vanligvis er det nødvendig med et ekstra indirekte nivå , i form av kart eller kartfiler  - tilleggsfiler som inneholder en liste over fysiske sektorer okkupert av kjernebilder. Slike kart må oppdateres hver gang et kjernebilde endrer sin fysiske plassering på disken, på grunn av installering av nye kjernebilder, defragmentering av filsystem osv. Også hvis kartene endrer sin fysiske plassering, må plasseringene oppdateres i boot loader's MBR -kode, slik at sektorens indirekte mekanisme fortsetter å fungere. Dette er ikke bare tungvint, men det etterlater også systemet med behov for manuelle reparasjoner hvis noe skulle gå galt under systemoppdateringer.

En annen tilnærming er å gjøre en oppstartslaster oppmerksom på de underliggende filsystemene, slik at kjernebilder konfigureres og åpnes ved hjelp av de faktiske filbanene . Det krever at en oppstartslaster inneholder en driver for hvert av de støttede filsystemene, slik at de kan forstås og nås av selve oppstartslasteren. Denne tilnærmingen eliminerer behovet for hardkodede steder for harddisksektorer og eksistensen av kartfiler, og krever ikke MBR -oppdateringer etter at kjernebildene er lagt til eller flyttet rundt. Konfigurasjon av en oppstartslaster er lagret i en vanlig fil, som også er tilgjengelig på en filsystembevisst måte for å få oppstartskonfigurasjoner før selve oppstart av noen kjernebilder. Som et resultat er muligheten for at ting går galt under forskjellige systemoppdateringer betydelig redusert. Som en ulempe har slike støvelastere økt intern kompleksitet og enda større fotavtrykk.

GNU GRUB bruker den andre tilnærmingen ved å forstå de underliggende filsystemene. Selve oppstartslasteren er delt inn i flere trinn , slik at den kan passe inn i MBR -oppstartsprogrammet.

To hovedversjoner av GRUB er i vanlig bruk: GRUB versjon 1, kalt GRUB legacy, er bare utbredt i eldre versjoner av Linux -distribusjoner. GRUB 2 ble skrevet fra bunnen av og hadde til hensikt å erstatte forgjengeren, og brukes nå av et flertall av Linux -distribusjoner.

Versjon 0 (GRUB Legacy)

GRUB v1 -meny (kjører som en del av Ubuntu 8.04 -installasjonen)

GRUB 0.x følger en to-trinns tilnærming. Master boot -posten (MBR) inneholder vanligvis GRUB -trinn 1, eller kan inneholde en standard MBR -implementering som kjederlaster GRUB -trinn 1 fra den aktive partisjonens boot -sektor . Gitt den lille størrelsen på en oppstartssektor (512 byte), kan trinn 1 gjøre lite mer enn å laste inn neste trinn i GRUB ved å laste inn noen få disksektorer fra et fast sted nær starten av disken (innenfor de første 1024 sylindrene).

Trinn 1 kan laste trinn 2 direkte, men det er normalt satt opp for å laste trinn 1.5. , som ligger i den første 30 KiB harddisken umiddelbart etter MBR og før den første partisjonen. Hvis denne plassen ikke er tilgjengelig (uvanlig partisjonstabell, spesielle diskdrivere, GPT eller LVM -disk ) vil installasjonen av trinn 1.5 mislykkes. Den scene 1,5 bilde inneholder filsystemdrivere, slik at det direkte laste trinn 2 fra enhver kjent sted i filsystemet, for eksempel fra /boot/grub. Trinn 2 laster deretter standard konfigurasjonsfil og eventuelle andre moduler som trengs.

Versjon 2 (GRUB 2)

GRUB 2 - MBR vs. GPT -partisjonering og oppstartssekvens visualisert (systemer som bruker BIOS -fastvare).

Oppstart på systemer som bruker BIOS -fastvare

  • Se illustrasjon i siste bilde til høyre.
  • boot.img( trinn 1 ) skrives til de første 440 byte i Master Boot Record (MBR -oppstartskode i sektor 0), eller eventuelt i en partisjonsstart -sektor (PBR). Den adresserer diskboot.imgmed en 64-biters LBA-adresse. Det faktiske sektornummeret er skrevet av grub-install. diskboot.imger den første sektoren core.imgmed det eneste formålet å laste resten av core.imgidentifisert av LBA -sektornumre også skrevet av grub-install.
  • På MBR -partisjonerte disker lagres core.img( trinn 1.5 ) i de tomme sektorene (hvis tilgjengelig) mellom MBR og den første partisjonen. Nylige operativsystemer foreslår et 1 MiB -gap her for justering (2047*512 byte eller 255*4KiB sektorer). Dette gapet var tidligere 62 sektorer (31 KiB) som en påminnelse om sektorantallgrensen for Cylinder-Head-Sector (C/H/S) adressering som ble brukt av BIOS før 1996, og core.imger derfor designet til å være mindre enn 32 KiB.
  • På GPT-partisjonerte disker: primære partisjoner er ikke begrenset til 4, og core.imger derfor skrevet til sin egen lille (1 MiB), filsystemfrie BIOS-oppstartspartisjon.
  • trinn 2: core.img laster /boot/grub/i386-pc/normal.modfra partisjonen konfigurert av grub-install. Hvis partisjonsindeksen har endret seg, vil GRUB ikke kunne finne normal.mod, og presenterer brukeren GRUB Rescue -ledeteksten.
  • Avhengig av hvordan GRUB2 ble installert, er den /boot/grub/enten i rotpartisjonen til Linux -distribusjonen, eller i den separate /oppstartspartisjonen .
  • etter normal.mod lastet: normal.mod analyserer /boot/grub/grub.cfgeventuelt laster moduler og viser meny (for eksempel for grafisk brukergrensesnitt og filsystem støtte.).

Oppstart på systemer som bruker UEFI -fastvare

  • /efi/<distro>/grubx64.efi(for x64 UEFI -systemer) installeres som en fil i EFI -systempartisjonen , og startes opp av fastvaren direkte, uten en boot.imgi MBR -sektor 0. Denne filen som stage1 og stage1.5.
  • /boot/grub/kan installeres på EFI -systempartisjonen eller den separate /oppstartspartisjonen .
  • For x64 UEFI -systemer er stage2 /boot/grub/x86_64-efi/normal.modfilen og andre /boot/grub/filer.

Etter oppstart

GRUB presenterer en meny der brukeren kan velge mellom operativsystemer (OS) funnet av grub-install. GRUB kan konfigureres til automatisk å laste inn et spesifisert operativsystem etter en brukerdefinert timeout. Hvis tidsavbruddet er satt til null sekunder, ⇧ Shiftkan du få tilgang til oppstartsmenyen ved å trykke og holde mens datamaskinen starter.

I valgmenyen for operativsystemet godtar GRUB et par kommandoer:

  • Ved å trykke eer det mulig å redigere kjerneparametere for det valgte menyelementet før operativsystemet startes . Årsaken til å gjøre dette i GRUB (dvs. ikke redigere parameterne i et allerede oppstartet system) kan være et nødstilfelle: systemet har ikke startet. Ved hjelp av kjerneparameterlinjen er det blant annet mulig å angi en modul som skal deaktiveres (svartelistet) for kjernen. Dette kan være nødvendig hvis den spesifikke kjernemodulen er ødelagt og dermed forhindrer oppstart. For eksempel, for å svarteliste kjernemodulen nvidia-current, kan man legge modprobe.blacklist=nvidia-currenttil på slutten av kjerneparameterne.
  • Ved å trykke c, går brukeren inn på GRUB -kommandolinjen. GRUB-kommandolinjen er ikke et vanlig Linux-skall, som f.eks. Bash , og godtar bare visse GRUB-spesifikke kommandoer, dokumentert av forskjellige Linux-distribusjoner.

Når oppstartsalternativene er valgt, laster GRUB den valgte kjernen i minnet og overfører kontrollen til kjernen. Alternativt kan GRUB overføre kontrollen over oppstartsprosessen til en annen oppstartslaster ved hjelp av kjettingbelastning . Dette er metoden som brukes til å laste inn operativsystemer som ikke støtter Multiboot -spesifikasjonen eller ikke støttes direkte av GRUB.

Historie

GRUB ble opprinnelig utviklet av Erich Boleyn som en del av arbeidet med å starte operativsystemet GNU / Hurd , utviklet av Free Software Foundation . I 1999 gjorde Gordon Matzigkeit og Yoshinori K. Okuji GRUB til en offisiell programvarepakke for GNU -prosjektet og åpnet utviklingsprosessen for publikum. Fra 2014 har flertallet av Linux -distribusjoner tatt i bruk GNU GRUB 2, i tillegg til andre systemer som Sonys PlayStation 4 .

Utvikling

GRUB versjon 1 (også kjent som "GRUB Legacy") er ikke lenger under utvikling og fases ut. GNU GRUB -utviklerne har byttet fokus til GRUB 2, en komplett omskriving med mål som inkluderer å gjøre GNU GRUB renere, mer robust, mer bærbar og kraftigere. GRUB 2 startet under navnet PUPA . PUPA ble støttet av Information Technology Promotion Agency (IPA) i Japan. PUPA ble integrert i GRUB 2 -utviklingen rundt 2002, da GRUB versjon 0.9x ble omdøpt til GRUB Legacy.

Noen av målene for GRUB 2-prosjektet inkluderer støtte for plattformer som ikke er x86 , internasjonalisering og lokalisering , ikke-ASCII-tegn, dynamiske moduler, minnestyring , et skript mini-språk , migrerende plattformspesifikk (x86) kode til plattformspesifikke moduler, og et objektorientert rammeverk. GNU GRUB versjon 2.00 ble offisielt utgitt 26. juni 2012.

Tre av de mest brukte Linux -distribusjonene bruker GRUB 2 som sin vanlige oppstartslaster. Ubuntu adopterte den som standard oppstartslaster i sin 9.10 -versjon av oktober 2009. Fedora fulgte etter med Fedora 16 utgitt i november 2011. OpenSUSE adopterte GRUB 2 som standard oppstartslaster med sin 12.2 -utgivelse i september 2012. Solaris adopterte også GRUB 2 på x86 -plattformen i Solaris 11.1 -utgivelsen.

I slutten av 2015 ble utnyttelsen av å trykke backspace 28 ganger for å omgå innloggingspassordet funnet og raskt løst.

Varianter

GNU GRUB er gratis og åpen kildekode-programvare , så flere varianter har blitt opprettet. Noen bemerkelsesverdige, som ikke har blitt slått sammen til GRUB -hovedlinjen:

  • OpenSolaris inkluderer en modifisert GRUB Legacy som støtter Solaris VTOC-skiver, automatisk 64-biters kjernevalg og oppstart fra ZFS (med komprimering og flere oppstartsmiljøer).
  • Google Summer of Code 2008 hadde et prosjekt for å støtte GRUB -eldre for oppstart fra ext4 -formaterte partisjoner.
  • Den stavelse prosjektet laget en modifisert versjon av GRUB å laste systemet fra atheos File System .
  • TrustedGRUB utvider GRUB ved å implementere verifikasjon av systemintegriteten og oppstartsprosessikkerheten ved hjelp av Trusted Platform Module (TPM).
  • Intel BIOS Implementation Test Suite (BITS) gir et GRUB -miljø for testing av BIOSer og spesielt initialisering av Intel -prosessorer, maskinvare og teknologier. BITS støtter skripting via Python, og inkluderer Python APIer for å få tilgang til forskjellige funksjoner på lavt nivå på maskinvareplattformen, inkludert ACPI-, CPU- og brikkesettregistre, PCI og PCI Express.
  • GRUB4DOS er en eldre GRUB -gaffel som forbedrer installasjonsopplevelsen på DOS og Microsoft Windows ved å legge alt i tillegg til GRLDR -konfigurasjonen i en bildefil. Den kan lastes direkte fra DOS, eller av NTLDR eller Windows Boot Manager . GRUB4DOS er under aktiv utvikling og støtter UEFI fra 2021.

Verktøy

GRUB konfigurasjonsverktøy

StartUp-Manager , et program som brukes til å konfigurere GRUB

Oppsettsverktøyene som brukes av forskjellige distribusjoner, inkluderer ofte moduler for å sette opp GRUB. For eksempel YaST2SUSE Linux og openSUSE -distribusjoner og AnacondaFedora / RHEL -distribusjoner. StartUp-Manager og GRUB Customizer er grafiske konfigurasjonsredaktører for Debian-baserte distribusjoner. Utviklingen av StartUp-Manager stoppet 6. mai 2011 etter at hovedutvikleren angav personlige årsaker til ikke aktivt å utvikle programmet. GRUB Customizer er også tilgjengelig for Arch-baserte distribusjoner.

For GRUB 2 er det KDE -kontrollmoduler.

GRLDR ICE er et lite verktøy for å endre standardkonfigurasjonen av grldr -filen for GRUB4DOS.

Verktøy for reparasjon av støvel

Boot-Repair er et enkelt grafisk verktøy for å gjenopprette fra vanlige oppstartrelaterte problemer med GRUB og Microsoft Windows bootloader. Denne applikasjonen er tilgjengelig under GNU GPL -lisens . Boot-Repair kan reparere GRUB på flere Linux-distribusjoner, inkludert, men ikke begrenset til, Debian, Ubuntu, Mint , Fedora, openSUSE og Arch Linux .

GRUB Customizer

Installasjonsprogram for Windows

Grub2Win er en Windows-programvare med åpen kildekode. Det lar GNU GRUB starte fra en Windows -katalog. Oppsettsprogrammet installerer GNU GRUB versjon 2.06 til en NTFS -partisjon. Et Windows GUI -program brukes deretter til å tilpasse GRUB -oppstartsmenyen, temaer, UEFI -oppstartsrekkefølge, skript etc. Alle GNU GRUB -skript og kommandoer støttes for både UEFI- og eldre systemer. Grub2Win kan konfigurere GRUB for multiboot av Windows, Ubuntu, openSuse, Fedora og mange andre Linux -distribusjoner. Det er fritt tilgjengelig under GNU GPL -lisensSourceForge .

Alternative boot-managere

Styrken til GRUB er det brede utvalget av støttede plattformer, filsystemer og operativsystemer, noe som gjør det til standardvalget for distribusjoner og innebygde systemer.

Imidlertid er det boot-managere rettet mot sluttbrukeren som gir en mer brukervennlig brukeropplevelse, grafisk OS-velger og enklere konfigurasjon:

  • rEFInd -grafisk oppstartbehandling i Macintosh-stil, bare for UEFI-baserte datamaskiner (BIOS støttes ikke).
  • CloverEFI -Grafisk oppstartsbehandling i Macintosh-stil for BIOS og UEFI-baserte datamaskiner. Emulerer UEFI med en sterkt modifisert DUET fra TianoCore -prosjektet. Krever en FAT -formatert partisjon, selv på BIOS -systemer. Som en fordel har den en grunnleggende filsystemdriver i partisjonens oppstartssektor, og unngår sprøheten i GRUB 2., 3. trinn og den beryktede GRUB Rescue -ledeteksten. Brukergrensesnittet ligner på rEFInd: begge arver fra den forlatte boot-manager rEFIt .

Ikke-grafiske alternativer:

  • systemd-boot -Lett, UEFI-bare boot-manager med tekstbasert OS-valgmeny.

Eksterne linker

How-Tos og feilsøking

Distribusjonswiki har mange løsninger på vanlige problemer og tilpassede oppsett som kan hjelpe deg:

Dokumentasjon

Innledende artikler

Tekniske detaljer

Se også

Referanser