Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Ubuntu 內核升級與切換啟動內核完整指南:apt 搜索、安裝、GRUB 配置、驗證

編輯:Linux 系統常見問題解答

Ubuntu 內核升級可修復硬件兼容性、安全漏洞、性能問題,但新內核可能引發驅動不兼容。本文詳細記錄:搜索可用內核、安裝指定版本、GRUB 配置切換啟動內核、驗證生效、回滾策略,保障生產環境安全變更。

1. 搜索可用內核版本

apt-cache search linux-image | grep -E '^linux-image-[0-9]+'
# 或更精準
apt list 'linux-image-*-generic' --installed=false | grep -v '^listing'

輸出示例:linux-image-5.15.0-91-generic、linux-image-6.2.0-26-generic。

2. 安裝目標內核

# 安裝內核映像 + 頭文件(編譯外掛模塊如 NVIDIA/VMware 需頭文件)
sudo apt-get install linux-image-6.2.0-26-generic linux-headers-6.2.0-26-generic

安裝過程會自動執行 update-grub、update-initramfs,重啟後默認啟動最新內核。

3. 切換啟動內核(GRUB 配置法)

若新內核有問題,需切回舊內核或指定版本啟動。

步驟 1:查看 GRUB 菜單條目順序

grep menuentry /boot/grub/grub.cfg

輸出示例(行號從 0 開始):

menuentry 'Ubuntu, with Linux 6.2.0-26-generic' ...
menuentry 'Ubuntu, with Linux 6.2.0-26-generic (recovery mode)' ...
menuentry 'Ubuntu, with Linux 5.15.0-91-generic' ...
menuentry 'Ubuntu, with Linux 5.15.0-91-generic (recovery mode)' ...
menuentry 'Memory test (memtest86+)' ...

假設要啟動 5.15.0-91-generic,對應第 4 條目(索引 2,每個內核佔 2 行:正常+恢復)。

步驟 2:修改 GRUB 默認啟動項

sudo vim /etc/default/grub

修改 GRUB_DEFAULT:

  • GRUB_DEFAULT=0:默認第一項(最新內核)
  • GRUB_DEFAULT=2:第三項(索引 2,即 5.15.0 正常模式)
  • GRUB_DEFAULT="1>2":子菜單語法(高級用法)
  • GRUB_DEFAULT=saved:配合 grub-reboot / grub-set-default 動態切換

步驟 3:生效配置並重啟

sudo update-grub
sudo reboot

步驟 4:驗證當前運行內核

uname -a
# 或
uname -r

輸出應顯示目標版本:5.15.0-91-generic。

4. 進階:grub-reboot 一次性切換(不改默認)

# 下次重啟啟動索引 2 的內核,之後恢復默認
sudo grub-reboot 2
sudo reboot

5. 回滾/清理舊內核

# 列出已安裝內核
dpkg --list 'linux-image-*'

# 刪除指定舊內核(保留當前運行 + 至少一個備用)
sudo apt-get purge linux-image-5.15.0-88-generic linux-headers-5.15.0-88-generic

# 自動清理(保留最新 2 個)
sudo apt-get autoremove --purge

6. 關鍵注意事項(避坑指南)

  1. 外掛模塊重編譯:NVIDIA 驅動、VMware、VirtualBox、DKMS 模塊需對應 linux-headers 重編譯,否則新內核下失效。
  2. 內核命令行參數:/etc/default/grub 中 GRUB_CMDLINE_LINUX_DEFAULT 參數(如 nomodeset、pci=nomsi)升級後自動繼承,但需 update-grub 生效。
  3. 雙系統/多內核共存:每個內核獨立模塊目錄 /lib/modules/版本/,互不干擾。
  4. 啟動失敗急救:GRUB 菜單選「Advanced options for Ubuntu」→ 選舊內核啟動 → 進入系統後 sudo update-grub 修復。
  5. HWE 內核:LTS 版本可安裝 linux-generic-hwe-22.04 獲取更新的內核支援新硬件。

7. 一鍵腳本化(生產環境變更建議)

#!/bin/bash
# switch_kernel.sh 
# 例:./switch_kernel.sh 5.15.0-91-generic
TARGET=$1
grep -n "menuentry.*${TARGET}" /boot/grub/grub.cfg | head -1 | cut -d: -f1
# 計算索引並修改 GRUB_DEFAULT,然後 update-grub
Copyright © Windows教程網 All Rights Reserved