如何在 Linux 中回滾內核

已發表: 2022-01-29
fatmawati achmad zaenuri/Shutterstock.com

如果您的 Linux PC 在更新系統後突然出現問題,則可能是 Linux 內核更新有問題。 幸運的是,在 Debian、Arch 和 Fedora 系統上回滾或切換到另一個內核相對容易。 就是這樣。

為什麼內核升級會導致問題

內核是 Linux 系統不可或缺的一部分,因此根據您的設備和設置,內核更新可能會給您或您安裝的應用程序帶來問題。 問題的範圍從古怪的圖形行為到完全無法使用的系統。 如果您的情況是後者,那麼您就處於真正的泡菜中。

為了解決這個問題,許多現代發行版都安裝了舊的或不同的內核,您可以在啟動時訪問它們。 這些將讓您測試內核的問題或從破壞系統的內核更新中恢復。

相關:如何檢查 Linux 內核和操作系統版本

如何使用不同的內核啟動

當然,對 Linux 內核以外的系統包的更新可能是問題的真正根源。 排除內核故障的一種快速方法是嘗試使用不同的內核啟動。

您首先需要通過重新啟動 PC 來訪問 GRUB 菜單。 您可能會看到 GRUB 在啟動時出現幾秒鐘,並顯示一些選項,例如“高級選項”,儘管有些發行版會隱藏它,除非您訪問它。 如果它在啟動時沒有出現,請在您的 PC 開始啟動時按住 Shift 鍵,直到您看到類似於下圖的屏幕。

Debian 11 Bullseye 的 GRUB 菜單選項

廣告

使用箭頭鍵導航到“[Your Distro] 的高級選項”,然後按 Enter。

您將獲得可用啟動選項的列表。 您應該看到至少兩個,例​​如“[Your Distro], with Linux 5.10.0.7-amd64”,然後是相同選項的“恢復模式”版本。 您看到列出的不同版本是安裝的不同內核。

在 Debian 11 上的 GRUB 中,兩個具有恢復模式選項的內核被列為引導選項

如果您只有一個標準選項和一個恢復模式選項,那麼不幸的是,這意味著您只安裝了一個內核。 在這種情況下,如果您根本無法使用內核,您可以使用恢復模式嘗試一些修復選項。

如果您有多個版本號,則可以使用另一個內核啟動。 第一個選項將是最新的,也是您的 PC 自動啟動的選項。 通過使用箭頭鍵導航到另一個非恢復模式選項並按 Enter 來嘗試另一個非恢復模式選項。

相關:如何修復無法啟動的 Ubuntu 系統

如何刪除或降級內核

如果引導到另一個內核似乎已經解決了您的問題,那麼您可能希望繼續使用該內核。 但是,您的 PC 默認情況下可能會在每次啟動時嘗試使用有問題的內核。 您可以在每次啟動時手動選擇較舊的內核,也可以在等待下一次更新時刪除有問題的內核。

警告:內核更新可能涉及安全修復。 因此,忽略內核更新會帶來風險。 如果您必須繼續,請確保您的系統在其他方面盡可能安全。

一些發行版允許您以圖形方式執行此操作,它們甚至可以讓您簡單地選擇不同的內核作為默認內核。 例如,Linux Mint 的更新管理器(如下圖所示)具有內核設置功能,除了刪除不需要的內核外,還允許您設置內核首選項。

廣告

嘗試在您的應用程序菜單中搜索“內核”一詞,看看是否出現任何桌面工具。 如果有,您可能能夠以圖形方式執行此操作。 否則,請繼續閱讀以通過命令行刪除內核。

警告:只有在引導到您要使用的內核時才能繼續,而不是您計劃刪除的內核。

在 Debian 和 Ubuntu 上刪除內核

要在 Debian、Ubuntu 或其衍生產品之一上刪除 Linux 內核,您應該首先確定已安裝的內核包。 打開終端並輸入以下命令。

 apt 列表--已安裝 | grep linux 映像

使用 apt 列出 Ubuntu 中已安裝的內核

您可以在結果中的正斜杠 (/) 之前看到每個包名稱中的版本號。 獲得要刪除的內核的名稱後,傳遞以下命令,將kernel-name替換為與上一個命令中出現的內核包名稱完全相同的名稱。

 sudo apt 刪除內核名稱

系統將提示您輸入密碼,然後要求您輸入y並按 Enter 確認刪除。

在 Ubuntu 中使用 apt 刪除已安裝的內核

等待刪除完成,您的 Linux PC 將不再啟動到該內核。 更新系統時請密切注意新內核,並在它們到達時對其進行測試以查看您的問題是否已解決。

相關:如何更新 Ubuntu Linux

刪除或降級 Arch 上的內核

在 Arch Linux 上,您可以輕鬆地獲得幾個替代內核,其名稱如linux-hardenedlinux-zenlinux-lts 。 在 GRUB 中選擇一個選項時,您可能只看到每個已安裝內核的一個可用版本。 與 Debian 上的內核不同,Arch 內核更新不會以新軟件包的形式出現以取代舊軟件包。 相反,每個安裝的內核都會在可用時簡單地更新(或“同步”)到最新版本。

廣告

出於這個原因,最好簡單地使用替代內核啟動,而不是降級您常用的內核。 如果您已經啟動到另一個內核並且知道您不想使用第一個內核,您可以使用 Pacman 在卸載命令中命名該內核。

 sudo pacman -R 內核名稱內核名稱標題

用您選擇的內核替換kernel-name 。 在繼續之前,系統會提示您輸入密碼。 然後,您需要通過鍵入“y”並按 Enter 來確認刪除。

Arch Linux 中使用 pacman 卸載內核

如果您想降級內核包,請知道我們不推薦它。 滾動發布更新通常依賴於最新的其他軟件包,因此回滾任何更新都是有風險的業務,並可能導致操作系統損壞。

但是,如果您確定要這樣做,可以使用以下命令將內核包同步到特定版本。

 sudo pacman -S kernel-name=xxx kernel-name-headers=xxx

kernel-name替換為您要降級的內核,將xxx替換為您想要的版本。 您可以通過在 Arch Package Search 中查找內核並單擊“查看更改”來找到舊版本號。

相關:如何更新 Arch Linux

在 Fedora 上刪除內核

默認情況下,Fedora Linux 會在您的設備上安裝兩個較舊版本的內核以及最新版本。 使用此rpm命令,您可以識別軟件包名稱。

 rpm -qa 內核
廣告

您將在其版本號旁邊看到所有已安裝內核的列表。

在 Fedora 終端中搜索 Linux 內核

使用不同的內核啟動後,使用 dnf 卸載有問題的內核。

 sudo dnf 刪除 kernel-core-xxx-xxx.fcxx.x86_64

您將收到確認卸載的提示。 鍵入 y 並按 enter 確認。

在 Fedora Linux 終端中刪除內核

刪除內核後,您的系統將無法啟動到較新的內核,直到您允許內核更新。 當有新的可用時,請嘗試一下,看看您的問題是否已得到解決。