- Met GRUB2 kunt u flexibel kiezen welke kernelversie standaard moet worden opgestart, door gebruik te maken van menu-indexen of de exacte naam van het item.
- Bij het werken met linux-generic, HWE en edge branches is het belangrijk om GRUB goed te beheren om instabiliteit te voorkomen bij het installeren van nieuwere kernels.
- Het bewerken van /etc/default/grub en het opnieuw genereren van de configuratie met update-grub vormt de basis voor het herstellen of repareren van de standaardkernel.
- Door conflicterende kernels te verwijderen en ten minste één stabiele versie te behouden, wordt ervoor gezorgd dat het systeem opstartbaar en veilig blijft.

De keuze voor de standaard opstartkernelversie in Linux. Het is niet zomaar een eigenaardigheid van nauwgezette beheerders: in veel gevallen is het het verschil tussen een stabiel systeem en crashes, incompatibiliteit met grafische stuurprogramma's of defecten aan recente hardware. Dit geldt met name voor Ubuntu en andere op Debian gebaseerde distributies, waar generieke branches, HWE en andere distributies naast elkaar bestaan. experimentele versiesHet beheren van GRUB2 is vrijwel verplicht.
Wanneer u meerdere cores parallel installeert, GRUB2 probeert altijd de meest recente beschikbare kernel op te starten.Dat is meestal prima, maar als je door een bug of een defecte driver gedwongen bent terug te keren naar een eerdere versie, moet je GRUB vertellen welke versie als standaard moet worden gebruikt. In dit artikel gaan we gedetailleerd en zonder omhaal bekijken hoe je dit veilig en permanent kunt doen, met welke nuances je rekening moet houden bij de nieuwe HWE-branches en hoe je dit kunt combineren met andere handige GRUB2-trucs.
Welke kernelversies ondersteunt Ubuntu en waarom bent u geïnteresseerd in het wijzigen ervan?
Ubuntu onderhoudt meerdere kernelversies parallel.Ontworpen voor verschillende scenario's. Inzicht in wat je hebt geïnstalleerd is de eerste stap voordat je iets in GRUB2 aanraakt, omdat dit bepaalt welke opties je in het opstartmenu ziet en welke je als standaard wilt gebruiken.
Enerzijds is er de klassieke tak. linux-generiekDit is de kernel die doorgaans vooraf is geïnstalleerd op servers en systemen waar stabiliteit van het grootste belang is. Het zijn kernels met een lange levensduur, die grondig zijn getest, en in LTS-versies zoals Ubuntu 22.04 komen ze meestal overeen met series zoals 5.15.x. Hun filosofie is duidelijk: minder verrassingen, minder problemen na een update.
Ubuntu-desktopcomputers bieden ook de volgende mogelijkheden: HWE (Hardware Enablement) kernelsDeze branches worden bijvoorbeeld geïnstalleerd met commando's zoals sudo apt install linux-generic-hwe-22.04 Ze richten zich op nieuwere kernelversies, zoals de 6.5.x-serie in het geval van Ubuntu 22.04 LTS, met als doel moderne hardware te ondersteunen die nog niet bestond toen de oorspronkelijke LTS-versie werd uitgebracht.
Als je nog een stap verder wilt gaan, is er ook nog de variant. hwe-edge, ontworpen als "voorhoede" tak o bloedenHet wordt geïnstalleerd met commando's zoals sudo apt install linux-generic-hwe-22.04-edge Het bevat vaak zelfs nieuwere kernels (bijvoorbeeld 6.7.x in Ubuntu 22.04 zelf). Het biedt ondersteuning voor zeer recente hardware, maar dit gaat ten koste van een verhoogde kans op bugs, instabiliteit of vreemd gedrag.
Hoewel het systeem slechts één kernel tegelijk uitvoert.Afbeeldingen van oude kernen zijn bewaard gebleven in /boot Het is als een levensverzekering. Als een update je computer onbruikbaar maakt, kan de mogelijkheid om op te starten met een oudere versie je redden. Het probleem is dat Ubuntu, zodra je een nieuwere kernel installeert, daar standaard mee opstart. Het verwijderen ervan zonder de mogelijkheid om met een andere kernel op te starten kan dan erg lastig zijn.
Selecteer tijdelijk een andere kernel in het GRUB2-menu.
Voordat we bestanden gaan bewerken, is het goed om te onthouden dat GRUB2 biedt al de mogelijkheid om handmatig een andere kernel te kiezen tijdens het opstarten.Als je fysiek toegang hebt tot de computer en een aangesloten toetsenbord, heb je vaak niets anders nodig om een previewversie uit te proberen.
In Ubuntu, wanneer je de machine aanzet, Je kunt het GRUB2-menu weergeven door de Shift-toets ingedrukt te houden. Tijdens de eerste opstartfase. In traditionele BIOS-systemen werkt dit prima; in UEFI is het meestal voldoende dat GRUB het standaardmenu weergeeft, maar het idee is hetzelfde: de lijst met systemen en opties bekijken.
In dat menu ziet u meestal een eerste item van het type Ubuntu, wat het proces is dat de laatst geïnstalleerde kernel opstart, gevolgd door een submenu genaamd Geavanceerde opties voor Ubuntu (Geavanceerde opties). In dit submenu worden alle beschikbare kernelversies weergegeven, elk met de bijbehorende normale modus en herstelmodus.
Als je problemen ondervindt met de nieuwste kernel, De gebruikelijke procedure is om naar "Geavanceerde opties voor Ubuntu" te gaan. en kies een oudere versie (bijvoorbeeld, Ubuntu, with Linux 5.15.0-94-generic) in plaats van de nieuwste 6.x. Zodra het systeem succesvol is opgestart met die versie, kunt u de conflicterende kernels verwijderen en de configuratie opnieuw genereren met sudo update-grub.
Deze handmatige oplossing heeft uiteraard een nadeel: Het werkt alleen als je met GRUB kunt communiceren.Op servers zonder toetsenbord, externe machines of in omgevingen waar je de opstartconsole niet ziet, heb je een permanente methode nodig die GRUB vertelt welke invoer altijd gebruikt moet worden, zonder dat je bij elke opstart opnieuw gevraagd wordt.
Geef een lijst van alle kernels die GRUB2 kent.
Om op betrouwbare wijze een standaardkernel in te stellen, Allereerst moet je weten welke menu-items GRUB2 daadwerkelijk heeft geconfigureerd.Het is niet voldoende om alleen naar de geïnstalleerde pakketten te kijken, omdat de posities in het menu kunnen veranderen wanneer kernels worden toegevoegd of verwijderd.
GRUB2 genereert zijn hoofdmenu in het bestand /boot/grub/grub.cfgHoewel het niet aan te raden is om het handmatig te bewerken (het wordt overschreven wanneer je het uitvoert), is het wel belangrijk om te weten dat het niet werkt. groep bijwerkenJa, je kunt het lezen om informatie te extraheren. Een erg handig commando om de items weer te geven is:
grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»
Dit commando Het geeft een lijst terug van alle items en submenu's. die bij het opstarten verschijnen, iets vergelijkbaars als:
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)
De eerste vermelding is meestal "Ubuntu" met de meest recente kernel.En in het submenu "Geavanceerde opties" worden alle geïnstalleerde versies weergegeven, gesorteerd van nieuwste naar oudste. In ons voorbeeld, als u altijd wilt opstarten met Ubuntu, with Linux 5.15.0-94-genericDie optie zou in het geavanceerde submenu staan, niet in het hoofdmenu.
Stel een specifieke kernel in via de positie in het menu (GRUB_DEFAULT-indexen).
Een klassieke vorm van Geef aan welke kernel GRUB2 standaard wil opstarten. Het houdt in dat de index (positie) van het item wordt aangegeven, of zelfs een combinatie van "submenu > item" wanneer de gewenste versie zich in "Geavanceerde opties voor Ubuntu" bevindt.
Het bestand dat dit regelt is / Etc / default / grubVoordat u wijzigingen aanbrengt, is het ten zeerste aan te raden een snelle back-up te maken voor het geval u gemakkelijk naar een eerdere staat wilt terugkeren. U kunt dit doen met:
sudo cp / etc / default / grub /etc/default/grub.bak
Bewerk het vervolgens met je favoriete editor, bijvoorbeeld met Nano:
sudo nano / etc / default / grub
Binnenin zie je een lijn zoals deze. GRUB_DEFAULT=0Dit geeft aan dat de eerste optie in het hoofdmenu (index nul) zal worden gebruikt. Als de gewenste kernel zich in het submenu "Geavanceerde opties" bevindt, kunt u dit doen.Je kunt GRUB opdracht geven om dat submenu te openen en een specifieke positie te selecteren met behulp van de notatie. submenú>entrada.
Als we het vorige voorbeeld volgen, en "Geavanceerde opties voor Ubuntu" optie 1 in het hoofdmenu is, en binnen dat submenu "Ubuntu, met Linux 5.15.0-94-generic" de derde optie (geteld vanaf nul en herstelmodi overslaand), dan zou je zoiets kunnen schrijven als:
GRUB_DEFAULT="1>3"
De logica is eenvoudig, maar je moet wel op de indexen letten.Het eerste niveau verwijst naar de positie van het submenu in het hoofdmenu, en het tweede naar de positie van de optie binnen dat submenu. Houd er ook rekening mee dat opties voor de "herstelmodus" meestal verspringend zijn genummerd, dus normale opties gebruiken oneven nummers en herstelopties gebruiken even nummers.
Zodra je gewijzigd hebt GRUB_DEFAULT, sla het bestand op (in Nano, Ctrl + A y luego Ctrl + X) en past de wijzigingen toe door de GRUB-configuratie opnieuw te genereren met:
sudo update-grub
Hierachter, herstart het systeem met herstart sudo En zodra het systeem is opgestart, controleert het welke kernel is geladen met:
uname -a
Het resultaat zou u bijvoorbeeld het volgende moeten laten zien: Linux ... 5.15.0-94-generic ... Dit geeft aan dat u nu de versie gebruikt die u hebt ingesteld met behulp van de indexen in GRUB_DEFAULT.
Gebruik de menunaam in plaats van indexen (modus "opgeslagen").
De indexeringsmethode kent een groot probleem: De posities veranderen wanneer je kernels installeert of verwijdert.Dat betekent dat een kernelupdate uw systeem kan beschadigen. 1>3 Stop met het targeten van de juiste kernel, wat precies is wat je wilt vermijden als je streeft naar stabiliteit op de lange termijn.
GRUB2 biedt een veel robuuster alternatief: Gebruik de exacte naam van het menu-item als standaarditem.Op deze manier, zolang die vermelding bestaat in grub.cfgHet blijft geselecteerd, zelfs als er nieuwe versies boven of onder het in de lijst worden toegevoegd.
Het algemene idee is als volgt: eerst Je zoekt de volledige naam van het menu-item dat je wilt., zoals het verschijnt in /boot/grub/grub.cfg (bijvoorbeeld Ubuntu, with Linux 6.8.0-60-generic), en vervolgens configureer je GRUB om het als te gebruiken. opgeslagen_invoer standaard.
Om de exacte naam te vinden, kunt u het configuratiebestand openen met een editor of viewer, bijvoorbeeld:
sudo nano /boot/grub/grub.cfg
Eenmaal binnen, Gebruik Ctrl+W in Nano om te zoeken naar de tekenreeks die overeenkomt met de kernelversie. dat u interesseert (bijvoorbeeld "6.8.0-60-generic"). In de trant van menuentry Je ziet dan de volledige titel, zoiets als:
menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...
In plaats van nu met indexen te spelen, Je kunt GRUB opdracht geven om die naam als opgeslagen selectie te gebruiken.De gebruikelijke procedure omvat het uitvoeren van commando's zoals de volgende:
sudo grub-set-default «Ubuntu, met Linux 6.8.0-60-generic»
Met dit commando wordt de opgegeven waarde gedefinieerd als de "opgeslagen standaardwaarde". Om te controleren of dit correct is toegepast, kunt u het GRUB-omgevingsbestand raadplegen:
sudo grub-editenv list
Je zou een lijn zoals deze moeten zien:
saved_entry=Ubuntu, with Linux 6.8.0-60-generic
Het is ook mogelijk dat, afhankelijk van de vorige configuratie, De optie GRUB_DEFAULT=saved wordt gebruikt. en /etc/default/grubwaardoor GRUB altijd de laatste gebruikt. opgeslagen_invoer vastgesteld. In ieder geval, terwijl de saved_entry Als het overeenkomt met de door u gewenste kernel, wordt die versie automatisch opgestart.
Na het toepassen van deze wijzigingen, genereer het configuratiebestand opnieuw met sudo update-grubStart het systeem opnieuw op en bevestig nogmaals met uname -a dat u bent begonnen met de versie die als standaard is ingesteld.
De kernel in Ubuntu wijzigen naar een specifieke versie (installeren en downgraden)
In veel gevallen wilt u niet zomaar een vooraf geïnstalleerde kernel kiezen, maar overschakelen van uw huidige versie naar een specifieke versieDit kan komen doordat uw applicatie dit vereist, doordat een driver slechts een bepaalde serie ondersteunt, of doordat een recente update de helft van uw systeem heeft ontregeld.
De eerste stap moet altijd zijn: Weet welke kernel je momenteel gebruikt.Hiervoor kunt u commando's gebruiken zoals:
uname -r
O goed:
uname -a
dat zal zoiets opleveren:
Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux
Als je eenmaal weet waar je bent, is de volgende stap... Bekijk welke kernels beschikbaar zijn in de repositories.In Ubuntu/Debian-omgevingen gebeurt dit meestal door de pakketten op te vragen. linux-image vanuit de repository, filterend op de versie waarin je geïnteresseerd bent. Zodra je de specifieke versie hebt gevonden, kun je deze direct installeren met apt of zelf compileren (zie Hoe zoek ik naar configuraties in `make menuconfig`), zoals u dat wenst.
Als je bijvoorbeeld vanaf naar beneden wilt gaan 6.8.0-85-generic a 6.8.0-60-genericJe installeert het bijbehorende pakket met het juiste commando en bevestigt dit met "S" wanneer geneigd U wordt gevraagd of u wilt doorgaan met de installatie. Nadat het proces is voltooid, U beschikt dan over die kernelversie om op te starten.GRUB zal echter de nieuwste versie blijven kiezen totdat u de instellingen wijzigt zoals uitgelegd.
Na het installeren van de gewenste kernel, herstart de computer Om het als standaard toe te wijzen met behulp van een van de bovenstaande methoden (op index of op naam), welke methode in uw geval het meest handig en robuust is.
Stel een specifieke kernel in als standaard via het submenu "Geavanceerde opties".
In distributies zoals Ubuntu 22 en 24, wanneer een kernelversie lager dan de huidige wordt toegevoegd, Die versie is niet als hoofdingang ingesteld.maar wordt toegevoegd aan het submenu Geavanceerde opties voor UbuntuZelfs als je versie 6.8.0-60 installeert die lager is dan 6.8.0-85, zul je na het opnieuw opstarten nog steeds opstarten met versie 85.
voor GRUB2 selecteert automatisch de gewenste versie uit het submenu.Je moet de exacte positie weten. Nogmaals, het commando dat de locatie weergeeft... menuentry y submenu Het helpt je de structuur en numerieke volgorde te zien die GRUB zal gebruiken.
Stel je voor dat je na het uitvoeren van het listing-commando ontdekt dat je doelkernel (bijvoorbeeld "Ubuntu, met Linux 6.8.0-60-generic") op de vierde positie in het submenu "Geavanceerde opties" staat, en dat dit submenu het eerste is na de hoofdoptie. In dat geval zou de indexcombinatie, beginnend bij nul, de volgende zijn: 1> 2 (submenu op positie 1, item op positie 2 binnen dat submenu).
In het bestand /etc/default/grubJe zou dan de regel wijzigen:
GRUB_DEFAULT=0
door:
GRUB_DEFAULT="1>2"
Na het opslaan van de wijzigingen en het uitvoeren van de opdracht sudo update-grub, De volgende keer dat je opstart, wordt die specifieke kernel automatisch geselecteerd. binnen "Geavanceerde opties", zonder dat u elke keer handmatig het submenu hoeft te openen.
Na de herstart kunt u controleren of alles goed is gegaan. uname -r o uname -awaarbij wordt gecontroleerd of de actieve kernelversie overeenkomt met de versie die u hebt ingesteld via GRUB_DEFAULT.
Verwijder de HWE- en edge-kernels en ga terug naar de stabiele branch.
Als je eenmaal hebt bereikt Start het systeem op met een stabiele kernel uit de linux-generic-tak. (bijvoorbeeld een 5.15.x-serie op Ubuntu 22.04 LTS), is de volgende logische stap, als de HWE- of edge-kernels problemen hebben veroorzaakt, het opschonen van die takken van het systeem.
Om HWE-metapakketten te verwijderen, kunt u het volgende gebruiken: geschikte zuivering met een jokerteken dat de hele tak omvat, zoiets als:
sudo apt purge linux-generic-hwe-22.04*
Nadat je die metapakketten hebt verwijderd, wil je waarschijnlijk het volgende doen: Verwijder ook de afbeeldingen van moderne kernels die u niet meer nodig hebt.Als je bijvoorbeeld alle kernels hoger dan 6.x wilt verwijderen en in plaats daarvan de 5.x-serie wilt gebruiken, kun je een commando als dit gebruiken:
sudo apt purge linux-image-6*
Dit type opschoning verwijdert kernelimagepakketten waarvan de naam begint met "linux-image-6". Het is daarom raadzaam om zorgvuldig te controleren wat u wilt verwijderen voordat u de verwijdering bevestigt. Vergeet niet dat U moet ten minste één stabiele, functionele tak onderhouden., normaal linux-generiekwant zonder dat zou het systeem zonder opstartbare kernels kunnen komen te zitten.
Na elke kernelopschoning is het essentieel Werk de GRUB-configuratie bij om te voorkomen dat er nog naar vermeldingen wordt verwezen die niet langer bestaan.Anders kunt u menuopties tegenkomen die verwijzen naar verwijderde kernels. Om het configuratiebestand opnieuw te genereren, gebruikt u:
sudo update-grub
Als u er zeker van wilt zijn dat de generieke tak geïnstalleerd blijft, kunt u de installatie ervan afdwingen met:
sudo apt install linux-generic
In de meeste gevallen zal het aangeven dat het al geïnstalleerd is, maar op deze manier kunt u controleren of het metapakket bestaat en of u beveiligingsupdates en -patches voor die stabiele serie blijft ontvangen.
Als laatste stap, als je iets had veranderd GRUB_DEFAULT naar een index of een specifieke naam om de problemen met HWE/edge te overleven. Je kunt het terugzetten naar de standaardwaarde. (meestal 0) opnieuw bewerken /etc/default/grub:
sudo nano / etc / default / grub
En de regel blijft als volgt:
GRUB_DEFAULT="0"
Sla vervolgens op en voer het programma uit. sudo update-grub en opnieuw beginnen met herstart sudo zodat het systeem normaal opstart met de nieuwste kernel van de branch linux-generiek die je hebt geïnstalleerd.
Uiteindelijk wordt het beheren van de opstartkernel met GRUB2 een essentieel hulpmiddel voor elke Ubuntu-, Debian- of afgeleide gebruiker die niet afhankelijk wil zijn van de nieuwste update. Door de installatie van specifieke versies te combineren met het gebruik van "Geavanceerde opties", selectie op index of menunaam, en het opschonen van problematische vertakkingen.Je kunt de systeemkern aanpassen aan je werkelijke behoeften: ijzersterke stabiliteit op servers, maximale compatibiliteit met moderne apparatuur, of een weloverwogen mix van beide in desktopomgevingen waar je je dagelijkse gebruik niet wilt riskeren met een experimentele kernel.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.




