Linuxin parissa työskennellessä, erityisesti kun asennetaan kolmannen osapuolen ajureita tai kokeillaan uusia ohjelmistoja, voi käydä niin, että uusi kernel-versio (eli käyttöjärjestelmän ydin...image) aiheuttaa ongelmia, kuten kernel-paniikin tai estää järjestelmän käynnistymisen normaalisti. Onneksi Linux tarjoaa usein mahdollisuuden käynnistää järjestelmän vanhemmalla, toimivalla kernelillä. Tässä artikkelissa käydään läpi, miten voit poistaa vioittuneen kernelin ja sen header-tiedostot, sekä päivittää GRUB-käynnistysvalikon, jotta saat järjestelmäsi toimimaan taas moitteettomasti.
Miksi kerneli aiheuttaa ongelmia?
Useimmiten kernelin aiheuttamat ongelmat johtuvat yhteensopimattomuudesta laitteiston tai tiettyjen ohjainten, kuten esimerkiksi näytönohjaimen ajureiden, kanssa. Erityisesti jos olet asentanut ajureita suoraan valmistajien sivuilta (kuten minun tapauksessa kun asensin AMD:n ajurit ilman --no-dkms -optiolla), ne eivät välttämättä ole täysin yhteensopivia Ubuntun uusimpien kernel-versioiden kanssa. Kun uusi kerneli päivittyy, se voi yrittää ladata vanhoja tai yhteensopimattomia moduuleja, mikä johtaa järjestelmän kaatumiseen.
Vaihe 1: Tunnista ongelmallinen kerneli
Ennen kuin alat poistaa mitään, on tärkeää varmistaa, että tiedät tarkalleen, mikä kernel-versio aiheuttaa ongelmia. Käynnistä tietokone toimivalla, vanhemmalla kernel-versiolla (valitse se GRUB-käynnistysvalikosta, yleensä kohdasta "Advanced options for Ubuntu").
Miten saat Grub:n esille:
Heti kun näet ensimmäisen käynnistyskuvan (yleensä emolevyn logo), paina Esc- tai Shift-näppäintä toistuvasti päästäksesi GRUB-käynnistysvalikkoon. Grub voi tulla myös automaattisesti esille, etenkin jos näet "kernel panic" ilmoituksen ja se pyytää käynnistämään tietokeneen uudelleen.
Kun olet käynnistänyt järjestelmän, avaa pääte (Terminal) ja tarkista nykyinen kernel-versiosi komennolla:
uname -r
Seuraavaksi listaa kaikki asennetut kernel-versiot järjestelmässäsi:
dpkg -l | grep linux-image
6.5.0-27-generic ja näet listassa 6.11.0-29-generic, ja tiedät tämän aiheuttaneen ongelmia, se on kohde poistolle.Vaihe 2: Poista ongelmalliset kernelit ja niiden headerit
Kun olet tunnistanut ongelmallisen kernelin (tai kernelien) tarkan versionumeron, voit poistaa sen turvallisesti. On tärkeää poistaa sekä linux-image että linux-headers -paketit, jotka liittyvät kyseiseen kerneliin. linux-headers -paketit sisältävät tiedostoja, joita tarvitaan kernelimoduulien (kuten ajurien) rakentamiseen.
Käytä seuraavaa komentoa. Muista korvata [kernelin_versionumero] tunnistamallasi ongelmallisen kernelin tarkalla versionumerolla!
sudo apt purge linux-image-[kernelin_versionumero]* linux-headers-[kernelin_versionumero]*
6.11.0-29-generic, komento olisi:sudo apt purge linux-image-6.11.0-29-generic* linux-headers-6.11.0-29-generic*
Vaihe 3: Päivitä GRUB-käynnistyslataaja
Kun olet poistanut vialliset kernelit, sinun on kerrottava GRUB-käynnistyslataajalle, että nämä kernelit eivät ole enää saatavilla. Tämä poistaa ne käynnistysvalikosta ja varmistaa, että järjestelmä ei yritä käynnistää niillä.
Päivitä GRUB seuraavalla komennolla:
sudo update-grub
Vaihe 4: Käynnistä tietokone uudelleen
Kun kaikki edelliset vaiheet on suoritettu, voit käynnistää tietokoneesi uudelleen:
sudo reboot
Tietokoneesi pitäisi nyt käynnistyä suoraan sillä kernel-versiolla, joka on toimivaksi havaittu, eikä GRUB-valikkoon välttämättä tarvitse enää mennä valitsemaan versiota (jos järjestelmässäsi on vain yksi toimiva kernel).
Voit päivittää pakettilistat ja järjestelmä näin:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
On tärkeää pitää mielessä, että Ubuntun kernelit päivittyvät säännöllisesti. Jos olet aiemmin asentanut kolmannen osapuolen ajureita, saattaa olla, että joudut toistamaan tämän prosessin uusien kernel-päivitysten yhteydessä, kunnes ajurivalmistaja julkaisee uudemmat, paremmin yhteensopivat versiot.
Toivottavasti tämä artikkeli auttaa sinua ja muita Linux-käyttäjiä hallitsemaan kernel-ongelmia paremmin! Jos kohtaat vielä ongelmia tai sinulla on kysyttävää, älä epäröi etsiä lisäapua Linux-yhteisöistä.


