- GRUB2 giver dig mulighed for fleksibelt at vælge hvilken kerneversion der skal startes som standard, ved hjælp af menuindekser eller det nøjagtige navn på posten.
- At leve med Linux-generiske, HWE og edge branches kræver kontrol over GRUB for at undgå ustabilitet ved installation af nyere kerner.
- Redigering af /etc/default/grub og regenerering af konfigurationen med update-grub er grundlaget for at rette eller gendanne standardkernen.
- Afinstallation af modstridende kerner og vedligeholdelse af mindst én stabil gren sikrer, at systemet forbliver bootbart og sikkert.
At vælge hvilken kerneversion der starter som standard i Linux er ikke bare en særhed for omhyggelige administratorer: i mange tilfælde er det forskellen mellem et stabilt system og nedbrud, inkompatibilitet med grafikdrivere eller fejl i nyere hardware. Især i Ubuntu og andre Debian-baserede distributioner, hvor generiske grene, HWE og eksperimentelle versioner sameksisterer , er kontrol af GRUB2 praktisk talt obligatorisk.
Når du installerer flere kerner parallelt, forsøger GRUB2 altid at starte den nyeste tilgængelige kerne . Det er fint det meste af tiden, men hvis du har været tvunget til at vende tilbage til en ældre version på grund af en fejl eller en defekt driver, skal du fortælle GRUB, hvilken post der skal bruges som standard. I denne artikel vil vi se detaljeret og uden at spare på, hvordan man gør dette sikkert og konsekvent, hvilke nuancer man skal være opmærksom på med de nye HWE-grene, og hvordan man kombinerer dette med andre nyttige GRUB2-relaterede tricks.
Hvilke kernelversioner understøtter Ubuntu, og hvorfor er du interesseret i at ændre dem?
Ubuntu vedligeholder adskillige kernelinjer parallelt , designet til forskellige scenarier. At forstå, hvad du har installeret, er det første skridt, før du rører ved noget i GRUB2, fordi det vil bestemme, hvilke poster du ser i boot-menuen, og hvilke du vil bruge som standardindstillinger.
På den ene side er der den klassiske Linux-generiske gren , som normalt er standarden på servere og systemer, hvor stabilitet er altafgørende. Disse er langtidsholdbare, grundigt testede kerner, og i LTS-versioner som Ubuntu 22.04 svarer de typisk til serier som 5.15.x. Deres filosofi er klar: færre overraskelser, færre fejl efter en opdatering.
På stationære computere tilbyder Ubuntu også HWE (Hardware Enablement) kerner . Disse grene installeres for eksempel med kommandoer som ` sudo apt install linux-generic-hwe-22.04` og peger på nyere kernelversioner, såsom 6.5.x-serien i tilfældet med Ubuntu 22.04 LTS, med det formål at yde understøttelse af moderne hardware, der ikke eksisterede, da den originale LTS blev udgivet.
Hvis du har brug for at gå et skridt videre, er der også hwe-edge- varianten , designet som en "banebrydende" eller "bleeding-edge " gren . Den installeres med kommandoer som ` sudo apt install linux-generic-hwe-22.04-edge` og inkluderer normalt endnu nyere kerner (for eksempel 6.7.x i selve Ubuntu 22.04). Den tilbyder understøttelse af meget nyere hardware, men på bekostning af at øge sandsynligheden for at støde på fejl, ustabilitet eller usædvanlig adfærd.
Selvom systemet kun kører én kerne ad gangen.Billeder af gamle kerner er bevaret i /boot Det er som en livsforsikring. Hvis en opdatering gør din computer ubrugelig, kan det at kunne starte op i en ældre version redde dagen. Problemet er, at når du installerer en nyere kerne, vil Ubuntu have en tendens til at starte op i den hver gang, og det kan være et stort besvær at afinstallere den uden at kunne starte op i en anden kerne.
Vælg midlertidigt en anden kerne fra GRUB2-menuen
Før vi begynder at redigere filer, er det værd at huske, at GRUB2 allerede lader dig manuelt vælge en anden kerne ved opstart . Hvis du har fysisk adgang til computeren og et tilsluttet tastatur, behøver du ofte ikke andet for at prøve en tidligere version.
I Ubuntu kan du, når du tænder maskinen, få vist GRUB2-menuen ved at holde Shift-tasten nede under den indledende opstartsfase. Dette fungerer godt på traditionelle BIOS-systemer; på UEFI viser GRUB normalt standardmenuen, men ideen er den samme: at se listen over systemer og muligheder.
I den menu vil du normalt se en første indgang som Ubuntu , som starter den senest installerede kerne, efterfulgt af en undermenu kaldet Avancerede indstillinger for Ubuntu . I denne undermenu er alle tilgængelige kerneversioner angivet, hver med sin normale tilstand og gendannelsestilstand.
Hvis du har problemer med den nyeste kernel, Det sædvanlige er at gå ind i "Avancerede indstillinger for Ubuntu". og vælg en ældre version (f.eks. Ubuntu, with Linux 5.15.0-94-generic) i stedet for den seneste 6.x. Når den er startet op med den version, kan du afinstallere de modstridende kerner og regenerere konfigurationen med sudo update-grub.
Denne manuelle løsning har selvfølgelig en hage: den virker kun, hvis du kan interagere med GRUB . På servere uden tastatur, fjernmaskiner eller miljøer, hvor du ikke ser boot-konsollen, har du brug for en persistent metode, der fortæller GRUB, hvilket input der skal bruges hver gang, uden at spørge dig ved hver opstart.
List alle kerner som GRUB2 kender
For pålideligt at indstille en standardkerne, skal du først vide, hvilke GRUB2-menupunkter der rent faktisk er konfigureret . Det er ikke nok blot at se på installerede pakker, fordi menupositioner kan ændre sig, når kerner tilføjes eller fjernes.
GRUB2 genererer sin hovedmenu i filen /boot/grub/grub.cfgSelvom det ikke anbefales at redigere det manuelt (det overskrives, når du kører opdater-grubJa, du kan læse den for at udtrække information. En meget praktisk kommando til at liste posterne er:
grep -Ei 'undermenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»
Denne kommando returnerer en liste over alle de poster og undermenuer , der vises ved opstart, noget i stil med:
menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 6.7.0-15-generic
menuentry Ubuntu, with Linux 6.7.0-15-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-94-generic
menuentry Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-92-generic
menuentry Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry Memory test (memtest86+.elf)
menuentry Memory test (memtest86+.bin, serial console)
menuentry MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)
Den første post er normalt "Ubuntu" med den mest moderne kerneOg i undermenuen "Avancerede indstillinger" vises alle installerede versioner, sorteret fra nyeste til ældste. I vores eksempel, hvis du altid vil starte med Ubuntu, with Linux 5.15.0-94-genericDen post ville være i den avancerede undermenu, ikke i hovedmenuen.
Angiv en specifik kerne efter position i menuen (GRUB_DEFAULT-indekser)
En klassisk måde at indstille, hvilken kerne GRUB2 som standard vil starte, er at angive indekset (positionen) for posten, eller endda en kombination af "undermenu > post", når den ønskede version er inden for "Avancerede indstillinger for Ubuntu".
Filen, der styrer dette, er /etc/default/grub . Før du ændrer den, anbefales det kraftigt at lave en hurtig sikkerhedskopi, hvis du nemt har brug for at vende tilbage til en tidligere tilstand. Du kan gøre dette med:
sudo cp /etc/default/grub /etc/default/grub.bak
Dernæst skal du redigere det med din yndlingseditor, for eksempel med Nano:
sudo nano / etc / default / grub
Indeni vil du se en linje som denne GRUB_DEFAULT=0, hvilket angiver, at den første post i hovedmenuen (indeks nul) vil blive brugt. Hvis din ønskede kerne findes i undermenuen "Avancerede indstillinger"Du kan bede GRUB om at gå ind i den undermenu og vælge en bestemt position ved hjælp af notationen submenú>entrada.
Hvis "Avancerede indstillinger for Ubuntu" var valgmulighed 1 i hovedmenuen, og "Ubuntu, med Linux 5.15.0-94-generic" var den tredje valgmulighed i undermenuen (tælling fra nul og springning af gendannelsestilstande over), kunne du skrive noget i retning af:
GRUB_DEFAULT="1>3"
Logikken er enkel, men vær opmærksom på indekserne : det første niveau refererer til undermenuens placering i hovedmenuen, og det andet til postens placering i den pågældende undermenu. Husk også, at poster i "gendannelsestilstand" normalt er forskudte, så normale indstillinger bruger ulige tal, og gendannelsesindstillinger bruger lige tal.
Når du har ændret dig GRUB_DEFAULT, gem filen (i Nano, Ctrl + A og derefter Ctrl + X) og anvender ændringerne ved at regenerere GRUB-konfigurationen med:
sudo update-grub
Genstart derefter systemet med `sudo reboot` , og når det starter op, tjek hvilken kerne der er blevet indlæst med:
uname -a
Resultatet skal for eksempel vise dig, Linux ... 5.15.0-94-generic ... hvilket angiver, at du nu bruger den version, du har angivet ved hjælp af indekserne i GRUB_DEFAULT.
Brug menupunktets navn i stedet for indeks ("gemt"-tilstand)
Indeksmetoden har et stort problem: Positionerne ændrer sig, når du installerer eller afinstallerer kernerDet betyder, at en kerneopdatering kan gøre din 1>3 Stop med at målrette mod den korrekte kerne, hvilket er præcis det, du vil undgå, hvis du leder efter langsigtet stabilitet.
GRUB2 tilbyder et langt mere robust alternativ: Brug det nøjagtige navn på menupunktet som standardelementPå denne måde, så længe denne post findes i grub.cfgDen vil fortsat være valgt, selvom nye versioner tilføjes over eller under den på listen.
Den overordnede idé er denne: først Du finder det fulde navn på det ønskede menupunkt, som det fremgår af /boot/grub/grub.cfg (f.eks Ubuntu, with Linux 6.8.0-60-generic), og derefter konfigurerer du GRUB til at bruge den som gemt_indtastning Standard.
For at finde det nøjagtige navn kan du åbne konfigurationsfilen med en editor eller fremviser, for eksempel:
sudo nano /boot/grub/grub.cfg
Når du er inde, Brug Ctrl+W i Nano til at søge efter den streng, der svarer til kernelversionen der interesserer dig (for eksempel "6.8.0-60-generisk"). I stil med menuentry Du vil se den fulde titel, noget i retning af:
menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...
I stedet for at rode med indekser kan du nu bede GRUB om at bruge det navn som det gemte valg . Den typiske procedure involverer at køre kommandoer som følgende:
sudo grub-set-default «Ubuntu, med Linux 6.8.0-60-generisk»
Denne kommando definerer den angivne post som den, der skal betragtes som den "gemte standard". For at bekræfte, at den er anvendt korrekt, kan du kontrollere GRUB-miljøfilen:
sudo grub-editenv liste
Du burde se en linje som denne:
saved_entry=Ubuntu, with Linux 6.8.0-60-generic
Det er også muligt, afhængigt af den tidligere konfiguration, GRUB_DEFAULT=saved-indstillingen bruges en /etc/default/grubhvilket fortæller GRUB altid at bruge den sidste gemt_indtastning etableret. Under alle omstændigheder, mens saved_entry Hvis den matcher din ønskede kerne, vil du fortsætte med at starte den version automatisk.
Efter at have implementeret disse ændringer, skal du regenerere konfigurationsfilen med `sudo update-grub` , genstarte systemet og bekræfte igen med `uname -a` , at du har startet op med den version, der er defineret som standard.
Ændring af kernen i Ubuntu til en specifik version (installation og nedgradering)
I mange tilfælde vil du ikke bare vælge en allerede installeret kerne, men skifte fra din nuværende version til en specifik version , enten fordi din applikation kræver det, fordi en driver kun understøtter en bestemt serie, eller fordi en nylig opdatering har ødelagt halvdelen af dit system.
Det første skridt bør altid være at vide, hvilken kerne du kører i øjeblikket . Du kan gøre dette ved hjælp af kommandoer som:
uname -r
O brønd:
uname -a
der vil returnere noget i retning af dette:
Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux
Når du ved, hvor du er, er næste skridt se hvilke kerner der er tilgængelige i arkiverneI Ubuntu/Debian-miljøer gøres dette normalt ved at forespørge pakkerne linux-image fra arkivet, filtrering efter den version, du er interesseret i. Når du har fundet den specifikke version, kan du installere den direkte med apt eller kompilere den selv (se Sådan søger du efter konfigurationer i `make menuconfig`), som du foretrækker.
Hvis du for eksempel vil nedgradere fra 6.8.0-85-generic til 6.8.0-60-generic , skal du installere den tilsvarende pakke med den relevante kommando og bekræfte med "Y", når apt spørger, om du vil fortsætte installationen. Når processen er færdig, vil du have den kerneversion tilgængelig til opstart , selvom GRUB fortsat vil vælge den nyere version, indtil du ændrer konfigurationen som forklaret.
Efter installation af den ønskede kerne skal du genstarte computeren for at angive den som standard ved hjælp af en af metoderne ovenfor (efter indeks eller navn), alt efter hvad der er mest praktisk og robust i dit tilfælde.
Angiv en specifik kerne fra undermenuen "Avancerede indstillinger" som standard
I distributioner som Ubuntu 22 og 24, når du tilføjer en kerneversion, der er ældre end den nuværende, angives den version ikke som hovedindgang , men tilføjes i stedet til undermenuen Avancerede indstillinger for Ubuntu . Derfor, selvom du installerer en version 6.8.0-60, der er ældre end 6.8.0-85, vil du stadig starte op i version 85 ved genstart.
For GRUB2 vælger automatisk den ønskede version fra undermenuenDu skal kende dens nøjagtige position. Igen, kommandoen der viser menuentry y submenu Det hjælper dig med at se strukturen og den numeriske rækkefølge, som GRUB vil bruge.
Forestil dig, at du efter at have kørt listing-kommandoen opdager, at din målkerne (for eksempel "Ubuntu, med Linux 6.8.0-60-generic") vises på fjerde position i undermenuen "Avancerede indstillinger", og at denne undermenu er den første efter hovedindgangen. I så fald ville indekskombinationen, startende fra nul, være 1>2 (undermenu på position 1, indgang på position 2 i den undermenu).
I filen /etc/default/grubSå ville du ændre linjen:
GRUB_DEFAULT=0
ved:
GRUB_DEFAULT="1>2"
Efter at du har gemt ændringerne og kørt sudo update-grub , vil den specifikke kerne automatisk blive valgt i "Avancerede indstillinger" næste gang du starter op , uden at du behøver at åbne undermenuen manuelt hver gang.
Efter genstart kan du kontrollere, at alt er gået godt uname -r o uname -a, og verificerer at den aktive kerneversion er den, du har indstillet GRUB_DEFAULT.
Afinstaller HWE og edge kerner og vend tilbage til den stabile gren
Når du har startet systemet med en stabil kerne fra den Linux-generiske gren (for eksempel en 5.15.x-serie i Ubuntu 22.04 LTS), er det næste logiske skridt, hvis HWE- eller edge-kernerne har givet dig problemer, at rense disse grene fra systemet.
For at afinstallere HWE-metapakker kan du bruge `apt purge` med et jokertegn, der dækker hele grenen, noget i retning af dette:
sudo apt purge linux-generic-hwe-22.04*
Efter at have fjernet disse metapakker, vil du sandsynligvis slette moderne kerneaftryk, som du ikke længere har brug for . Hvis du for eksempel vil slippe af med alle kerner højere end 6.x til fordel for 5.x-serien, kan du bruge en kommando som denne:
sudo apt purge linux-image-6*
Denne type rensning fjerner kernel-imagepakker, hvis navn begynder med "linux-image-6", så gennemgå omhyggeligt, hvad du er ved at afinstallere, før du bekræfter. Husk at beholde mindst én funktionel stabil gren , normalt linux-generic , da systemet uden den kan løbe tør for bootbare kerner.
Efter enhver oprydning af kernen er det afgørende at opdatere GRUB-konfigurationen, så den stopper med at referere til poster, der ikke længere findes . Ellers kan du støde på menupunkter, der peger på slettede kerner. For at regenerere konfigurationsfilen skal du bruge:
sudo update-grub
Hvis du vil sikre dig, at den generiske gren forbliver installeret, kan du fremtvinge dens installation med:
sudo apt install linux-generic
I de fleste tilfælde vil den fortælle dig, at den allerede er installeret, men på denne måde verificerer du, at metapakken findes, og at du fortsat vil modtage sikkerhedsopdateringer og rettelser til den stabile serie.
Som et sidste skridt, hvis du havde ændret dig GRUB_DEFAULT til et indeks eller et specifikt navn for at overleve problemerne med HWE/edge, Du kan sætte den tilbage til standardværdien (som regel 0) redigering igen /etc/default/grub:
sudo nano / etc / default / grub
Og efterlader linjen som følger:
GRUB_DEFAULT="0"
Gem derefter, kør sudo update-grub og genstart med sudo reboot , så systemet starter normalt med den nyeste kerne fra den linux-generic gren , som du har installeret.
I sidste ende bliver det et essentielt værktøj for enhver Ubuntu-, Debian- eller afledt bruger, der ikke ønsker at være prisgivet den seneste opdatering, at kontrollere, hvilken kerne der starter via GRUB2. Ved at kombinere installationen af specifikke versioner, brugen af "Avancerede indstillinger", valg efter indeks- eller menunavn og fjernelse af problematiske grene , kan du skræddersy systemkernen til dine faktiske behov: bundsolid stabilitet på servere, maksimal kompatibilitet på moderne maskiner eller en beregnet blanding af begge dele i desktopmiljøer, hvor du ikke ønsker at gamble med en eksperimentel kerne på daglig basis.
Passioneret forfatter om bytes-verdenen og teknologien generelt. Jeg elsker at dele min viden gennem skrivning, og det er det, jeg vil gøre i denne blog, vise dig alle de mest interessante ting om gadgets, software, hardware, teknologiske trends og mere. Mit mål er at hjælpe dig med at navigere i den digitale verden på en enkel og underholdende måde.




