Kako sigurno promijeniti verziju Linux kernela u GRUB2

Posljednje ažuriranje: 31/03/2026
Autor: Isaac
  • GRUB2 vam omogućava fleksibilan izbor verzije kernela za pokretanje po defaultu, koristeći indekse menija ili tačno ime unosa.
  • Život s linux-generic, HWE i edge granama zahtijeva kontrolu GRUB-a kako bi se izbjegle nestabilnosti prilikom instaliranja novijih kernela.
  • Uređivanje /etc/default/grub i regeneriranje konfiguracije pomoću update-grub naredbe je osnova za popravljanje ili vraćanje zadanog kernela.
  • Deinstaliranje konfliktnih kernela i održavanje barem jedne stabilne grane osigurava da sistem ostane pokretački i siguran.

Promjena verzije Linux kernela u GRUB2

Odabir verzije kernela koja se podešava kao podrazumevana u Linuxu Nije to samo hir pedantnih administratora: u mnogim slučajevima, to je razlika između stabilnog sistema i patnje zbog rušenja sistema, nekompatibilnosti s grafičkim drajverima ili kvarova u novijem hardveru. Ovo posebno važi za Ubuntu i druge distribucije zasnovane na Debianu, gdje generičke grane, HWE i druge distribucije koegzistiraju. eksperimentalne verzijeKontroliranje GRUB2 je gotovo obavezno.

Kada instalirate više jezgara paralelno, GRUB2 uvijek pokušava pokrenuti najmoderniji dostupni kernel.To je u redu većinu vremena, ali ako ste bili prisiljeni vratiti se na prethodnu verziju zbog greške ili neispravnog upravljačkog programa, morat ćete reći GRUB-u koji unos da koristi kao zadani. U ovom članku ćemo detaljno i bez previše detalja pogledati kako to učiniti sigurno i trajno, koje nijanse trebate znati s novim HWE granama i kako to kombinirati s drugim korisnim trikovima vezanim za GRUB2.

Koje verzije kernela Ubuntu podržava i zašto ste zainteresirani za njihovu promjenu?

Ubuntu održava nekoliko linija kernela paralelnodizajniran za različite scenarije. Razumijevanje onoga što ste instalirali je prvi korak prije nego što dirate bilo šta u GRUB2, jer će to odrediti koje unose vidite u meniju za pokretanje i koje želite koristiti kao zadane.

S jedne strane postoji klasična grana linux-generičkiOvo je kernel koji obično dolazi unaprijed instaliran na serverima i sistemima gdje je stabilnost najvažnija. To su dugotrajni, temeljito testirani kerneli, a u LTS verzijama poput Ubuntu 22.04, obično odgovaraju serijama kao što je 5.15.x. Njihova filozofija je jasna: manje iznenađenja, manje kvarova nakon ažuriranja.

Ubuntu desktop računari također nude HWE (Omogućavanje hardvera) kerneliOve grane se instaliraju, na primjer, pomoću naredbi poput sudo apt install linux-generic-hwe-22.04 i ciljaju novije verzije kernela, kao što je serija 6.5.x u slučaju Ubuntu 22.04 LTS, s ciljem podrške modernom hardveru koji nije postojao kada je originalni LTS objavljen.

Ako trebate ići korak dalje, postoji i varijanta hwe-edge, dizajniran kao ogranak "avangarde" o ivica koja krvariInstalira se pomoću naredbi poput sudo apt install linux-generic-hwe-22.04-edge Često uključuje čak i novije kernele (na primjer, 6.7.x u samom Ubuntu 22.04). Nudi podršku za vrlo novi hardver, ali po cijenu povećanja vjerovatnoće nailaženja na greške, nestabilnosti ili čudno ponašanje.

Iako sistem pokreće samo jedno jezgro istovremeno.Slike drevnih jezgara su sačuvane u /boot To je kao polisa životnog osiguranja. Ako ažuriranje učini vaš računar neupotrebljivim, mogućnost pokretanja starije verzije može spasiti stvar. Problem je što kada instalirate noviji kernel, Ubuntu će se svaki put pokretati s njim, a deinstalacija bez mogućnosti pokretanja drugog kernela može biti prava muka.

Napredne opcije GRUB2

Privremeno odaberite drugu kernel iz GRUB2 menija

Prije nego što počnemo s uređivanjem datoteka, vrijedi zapamtiti da GRUB2 već omogućava ručni odabir drugog kernela prilikom pokretanja.Ako imate fizički pristup računaru i povezanu tastaturu, često vam ne treba ništa drugo da biste isprobali probnu verziju.

U Ubuntuu, prilikom uključivanja mašine, GRUB2 meni možete prikazati držanjem pritisnute tipke Shift. tokom početne faze pokretanja. U tradicionalnim BIOS sistemima to dobro funkcioniše; u UEFI-ju je obično dovoljno da GRUB prikaže zadani meni, ali ideja je ista: vidjeti listu sistema i opcija.

U tom meniju ćete obično vidjeti prvi unos tipa Ubuntu, koji pokreće posljednji instalirani kernel, nakon čega slijedi podmeni pod nazivom Napredne opcije za Ubuntu (Napredne opcije). U ovom podmeniju su navedene sve dostupne verzije kernela, svaka sa svojim normalnim načinom rada i načinom oporavka.

  Kako koristiti računar kao Windows 10 ruter: lako i jednostavno

Ako imate problema s najnovijim kernelom, Uobičajeno je da odete u "Napredne opcije za Ubuntu". i odaberite stariju verziju (na primjer, Ubuntu, with Linux 5.15.0-94-generic) umjesto najnovije verzije 6.x. Nakon što se uspješno pokrene s tom verzijom, možete deinstalirati konfliktne kernele i regenerirati konfiguraciju s sudo update-grub.

Naravno, ovo ručno rješenje ima jednu kvaku: Radi samo ako možete komunicirati s GRUB-om.Na serverima bez tastature, udaljenim mašinama ili okruženjima gdje ne vidite konzolu za pokretanje, potrebna vam je perzistentna metoda koja GRUB-u govori koji ulaz da uvijek koristi, bez da vas pita pri svakom pokretanju.

Navedite sva jezgra koja GRUB2 poznaje

Da bi se pouzdano postavilo zadano jezgro, Prvo morate znati koje stavke menija GRUB2 zapravo ima konfigurisaneNije dovoljno samo pogledati instalirane pakete, jer se pozicije u meniju mogu promijeniti kada se kerneli dodaju ili uklanjaju.

GRUB2 generiše svoj glavni meni u datoteci /boot/grub/grub.cfgIako se ne preporučuje ručno uređivanje (prepisuje se kada pokrenete update-grubDa, možete ga pročitati da biste izvukli informacije. Vrlo praktična naredba za listanje unosa je:

grep -Ei 'podmeni|unos menija' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»

Ova naredba Vratit će listu svih unosa i podmenija. koje se pojavljuju pri pokretanju, nešto slično:

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)

Prvi unos je obično "Ubuntu" sa najnovijim kernelomA unutar podmenija "Napredne opcije" prikazuju se sve instalirane verzije, poredane od najnovije do najstarije. U našem primjeru, ako želite uvijek pokrenuti sistem sa Ubuntu, with Linux 5.15.0-94-genericTaj unos bi bio u naprednom podmeniju, a ne u glavnom meniju.

Spisak GRUB2 unosa

Postavljanje određenog kernela prema poziciji u meniju (GRUB_DEFAULT indeksi)

Klasičan oblik odredite koje jezgro GRUB2 želi pokrenuti po zadanim postavkama To uključuje navođenje indeksa (pozicije) unosa ili čak kombinacije "podmeni > unos" kada se željena verzija nalazi unutar "Naprednih opcija za Ubuntu".

Datoteka koja ovo kontroliše je / etc / default / grubPrije bilo kakvih promjena, toplo se preporučuje da napravite brzu sigurnosnu kopiju u slučaju da vam je potrebno da se lako vratite na prethodno stanje. To možete učiniti na sljedeći način:

sudo cp /etc/default/grub /etc/default/grub.bak

Zatim ga uredite svojim omiljenim editorom, na primjer s Nano:

sudo nano / etc / default / grub

Unutra ćete vidjeti liniju poput ove GRUB_DEFAULT=0, što označava da će se koristiti prvi unos u glavnom meniju (indeks nula). Ako se željeni kernel nalazi unutar podmenija "Napredne opcije"Možete reći GRUB-u da uđe u taj podmeni i odabere određenu poziciju koristeći notaciju submenú>entrada.

Slijedeći prethodni primjer, ako bi "Napredne opcije za Ubuntu" bile opcija 1 u glavnom meniju, a unutar tog podmenija "Ubuntu, sa Linuxom 5.15.0-94-generic" bila treća opcija (brojeći od nule i preskačući načine oporavka), mogli biste napisati nešto poput:

GRUB_DEFAULT="1>3"

Logika je jednostavna, ali morate obratiti pažnju na indekse.Prvi nivo se odnosi na poziciju podmenija u glavnom meniju, a drugi na poziciju unosa unutar tog podmenija. Također, imajte na umu da su unosi u "režimu oporavka" obično raspoređeni, tako da normalne opcije koriste neparne brojeve, a opcije oporavka parne brojeve.

Nakon što se promijeniš GRUB_DEFAULT, sačuvajte datoteku (u Nano formatu, Ctrl + O a zatim Ctrl + X) i primjenjuje promjene regeneriranjem GRUB konfiguracije pomoću:

sudo update-grub

Iza ovoga, ponovo pokrenite sistem sa sudo reboot i, nakon što se pokrene, provjerava koji je kernel učitan:

uname -a

Rezultat bi vam trebao pokazati, na primjer, Linux ... 5.15.0-94-generic ... što ukazuje da sada koristite verziju koju ste postavili pomoću indeksa u GRUB_DEFAULT.

Koristite naziv stavke menija umjesto indeksa ("sačuvani" način rada)

Metoda indeksiranja ima jedan veliki problem: Pozicije se mijenjaju kada instalirate ili deinstalirate kerneleTo znači da ažuriranje kernela može učiniti vaš 1>3 Prestanite ciljati na ispravan kernel, što je upravo ono što želite izbjeći ako tražite dugoročnu stabilnost.

  PikaOS, Linux distribucija koja olakšava igranje igrica

GRUB2 nudi mnogo robusniju alternativu: Koristite tačan naziv stavke menija kao podrazumevanu stavkuNa ovaj način, sve dok taj unos postoji u grub.cfgI dalje će biti odabran čak i ako se nove verzije dodaju iznad ili ispod njega na listi.

Opšta ideja je sledeća: prvo Pronađite puni naziv stavke menija koju želite, kao što se pojavljuje u /boot/grub/grub.cfg (na primjer Ubuntu, with Linux 6.8.0-60-generic), a zatim konfigurirate GRUB da ga koristi kao sačuvani_unos zadani.

Da biste pronašli tačno ime, možete otvoriti konfiguracijsku datoteku pomoću editora ili preglednika, na primjer:

sudo nano /boot/grub/grub.cfg

Kad uđete unutra, Koristite Ctrl+W u Nano-u da biste pretražili string koji odgovara verziji kernela. što vas zanima (na primjer, "6.8.0-60-generičko"). U skladu s menuentry Vidjet ćete puni naslov, nešto poput:

menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...

Sada, umjesto igranja s indeksima, Možete reći GRUB-u da koristi to ime kao sačuvani izbor.Tipična procedura uključuje izvršavanje naredbi kao što su sljedeće:

sudo grub-set-default «Ubuntu, sa Linuxom 6.8.0-60-generic»

Ova naredba definira navedeni unos kao onaj koji će se smatrati "sačuvanim zadanim". Da biste potvrdili da je ispravno primijenjen, možete provjeriti GRUB datoteku okruženja:

sudo grub-editenv lista

Trebali biste vidjeti liniju poput ove:

saved_entry=Ubuntu, with Linux 6.8.0-60-generic

Također je moguće da, ovisno o prethodnoj konfiguraciji, Koristi se opcija GRUB_DEFAULT=saved en /etc/default/grubšto govori GRUB-u da uvijek koristi posljednji sačuvani_unos uspostavljeno. U svakom slučaju, dok je saved_entry Ako se podudara sa željenim kernelom, nastavit ćete automatski pokretati tu verziju.

Nakon primjene ovih promjena, regenerirajte konfiguracijsku datoteku sa sudo update-grubPonovo pokrenite sistem i ponovo potvrdite sa uname -a koju ste započeli s verzijom definiranom kao zadana.

Konfigurišite GRUB2 sa sačuvanim kernelom

Promjena kernela u Ubuntuu na određenu verziju (instaliranje i snižavanje verzije)

U mnogim slučajevima ne želite samo odabrati unaprijed instalirano jezgro, već prebacite se sa trenutne verzije na određenuTo je ili zato što vaša aplikacija to zahtijeva, zato što upravljački program podržava samo određenu seriju ili zato što je nedavno ažuriranje uništilo pola vašeg sistema.

Prvi korak uvijek treba biti znate koji kernel trenutno koristiteDa biste to uradili, možete koristiti komande kao što su:

uname -r

O dobro:

uname -a

što će vratiti nešto ovako:

Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux

Kada znate gdje se nalazite, sljedeći korak je pogledajte koja su kernela dostupna u repozitorijimaU Ubuntu/Debian okruženjima, ovo se obično radi upitima paketima linux-image iz repozitorija, filtrirajući po verziji koja vas zanima. Nakon što pronađete određenu verziju, možete je instalirati direktno pomoću naredbe apt ili je sami kompajlirati (pogledajte Kako pretražiti konfiguracije u `make menuconfig`), kako vam više odgovara.

Na primjer, ako želite sići sa 6.8.0-85-generički a 6.8.0-60-generičkiOdgovarajući paket biste instalirali odgovarajućom naredbom, potvrđujući sa "S" kada pogodan Pitat će vas želite li nastaviti s instalacijom. Nakon što je proces završen, Tada ćete imati tu verziju kernela dostupnu za pokretanje sistema.Međutim, GRUB će nastaviti birati najnoviji sve dok ne promijenite postavke kao što je objašnjeno.

Nakon instaliranja željenog kernela, ponovo pokrenite računar da biste ga mogli dodijeliti kao zadanog koristeći jednu od gore navedenih metoda (po indeksu ili po imenu), ovisno o tome koja je praktičnija i robusnija za vaš slučaj.

Postavite određeni kernel iz podmenija "Napredne opcije" kao zadani

U distribucijama poput Ubuntu 22 i 24, kada se doda verzija kernela niža od trenutne, Ta verzija nije postavljena kao glavni unos.ali se dodaje u podmeni Napredne opcije za UbuntuStoga, čak i ako instalirate verziju 6.8.0-60 stariju od 6.8.0-85, nakon ponovnog pokretanja i dalje ćete pokrenuti verziju 85.

Tako GRUB2 automatski bira željenu verziju iz podmenijaMorate znati njegovu tačnu poziciju. Ponovo, komanda koja navodi menuentry y submenu Pomaže vam da vidite strukturu i numerički redoslijed koji će GRUB koristiti.

  Trenutni tržišni udio Windowsa, macOS-a i Linuxa: Analiza i trendovi

Zamislite da nakon pokretanja komande listing otkrijete da se vaš ciljni kernel (na primjer, "Ubuntu, sa Linuxom 6.8.0-60-generic") pojavljuje na četvrtoj poziciji podmenija "Napredne opcije" i da je taj podmeni prvi nakon glavnog unosa. U tom slučaju, kombinacija indeksa, počevši od nule, bila bi 1> 2 (podmeni na poziciji 1, unos na poziciji 2 unutar tog podmenija).

U datoteci /etc/default/grubZatim biste promijenili liniju:

GRUB_DEFAULT=0

od:

GRUB_DEFAULT="1>2"

Nakon spremanja promjena i pokretanja sudo update-grub, Sljedeći put kada pokrenete sistem, taj određeni kernel će biti automatski odabran. unutar "Naprednih opcija", bez potrebe da svaki put ručno ulazite u podmeni.

Nakon ponovnog pokretanja možete provjeriti da li je sve prošlo u redu sa uname -r o uname -a, provjeravajući da li je aktivna verzija kernela ona koju ste postavili putem GRUB_DEFAULT.

Uređivanje konfiguracije GRUB2

Deinstalirajte HWE i edge kernele i vratite se na stabilnu granu

Jednom kad dobiješ Pokrenite sistem sa stabilnim kernelom iz linux-generic grane (na primjer, serija 5.15.x na Ubuntu 22.04 LTS), sljedeći logičan korak ako su vam HWE ili edge kerneli uzrokovali probleme je čišćenje tih grana sistema.

Za deinstalaciju HWE metapaketa, možete koristiti apt purge sa džokerom koji pokriva cijelu granu, nešto poput:

sudo apt purge linux-generic-hwe-22.04*

Nakon uklanjanja tih metapaketa, vjerovatno ćete htjeti Također obrišite slike modernih kernela koje vam više nisu potrebne.Ako, na primjer, želite ukloniti sve kernele starije od 6.x u korist serije 5.x, možete koristiti naredbu poput ove:

sudo apt purge linux-image-6*

Ova vrsta čišćenja uklanja pakete slika kernela čija imena počinju sa "linux-image-6", stoga je preporučljivo pažljivo pregledati šta ćete deinstalirati prije potvrde. Ne zaboravite da Morate održavati barem jednu stabilnu, funkcionalnu granu, obično linux-generičkijer bi bez njega sistemu moglo ponestati bootabilnih kernela.

Nakon bilo kakvog čišćenja kernela, neophodno je Ažurirajte GRUB konfiguraciju kako biste prestali referencirati unose koji više ne postoje.U suprotnom, možete naići na opcije menija koje ukazuju na izbrisane kernele. Za regeneraciju konfiguracijske datoteke koristite:

sudo update-grub

Ako želite osigurati da generička grana ostane instalirana, možete je prisilno instalirati pomoću:

sudo apt instaliraj linux-generic

U većini slučajeva će vam reći da je već instaliran, ali na ovaj način potvrđujete da metapaket postoji i da ćete nastaviti primati sigurnosna ažuriranja i ispravke za tu stabilnu seriju.

Kao posljednji korak, ako ste se promijenili GRUB_DEFAULT na indeks ili određeno ime kako bi se prevazišli problemi sa HWE/edge-om, Možete ga vratiti na zadanu vrijednost (obično 0) ponovo uređujem /etc/default/grub:

sudo nano / etc / default / grub

I ostavljajući liniju kao:

GRUB_DEFAULT="0"

Zatim sačuvajte, pokrenite sudo update-grub i ponovo pokrenite sa sudo reboot tako da se sistem normalno pokreće s najnovijim kernelom iz grane linux-generički koju ste instalirali.

Konačno, kontrola pokretanja kernela pomoću GRUB2 postaje osnovni alat za svakog korisnika Ubuntua, Debiana ili derivata koji ne želi biti prepušten na milost i nemilost najnovijeg ažuriranja. Kombinacijom instalacije specifičnih verzija, korištenjem "Naprednih opcija", odabirom po indeksu ili po nazivu menija i čišćenjem problematičnih granaMožete prilagoditi jezgro sistema vašim stvarnim potrebama: izuzetno stabilna stabilnost na serverima, maksimalna kompatibilnost na modernoj opremi ili proračunata kombinacija oba u desktop okruženjima gdje ne želite riskirati svakodnevnu upotrebu eksperimentalnog kernela.

Ne prikazuje GRUB meni prilikom promjene GRUB_TIMEOUT=
Vezani članak:
GRUB ne prikazuje meni nakon promjene GRUB_TIMEOUT: uzroci i konačno rješenje