Ubuntu 內核升級可修復硬件兼容性、安全漏洞、性能問題,但新內核可能引發驅動不兼容。本文詳細記錄:搜索可用內核、安裝指定版本、GRUB 配置切換啟動內核、驗證生效、回滾策略,保障生產環境安全變更。
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。
# 安裝內核映像 + 頭文件(編譯外掛模塊如 NVIDIA/VMware 需頭文件)
sudo apt-get install linux-image-6.2.0-26-generic linux-headers-6.2.0-26-generic
安裝過程會自動執行 update-grub、update-initramfs,重啟後默認啟動最新內核。
若新內核有問題,需切回舊內核或指定版本啟動。
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 行:正常+恢復)。
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 動態切換sudo update-grub
sudo reboot
uname -a
# 或
uname -r
輸出應顯示目標版本:5.15.0-91-generic。
grub-reboot 一次性切換(不改默認)# 下次重啟啟動索引 2 的內核,之後恢復默認
sudo grub-reboot 2
sudo reboot
# 列出已安裝內核
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
linux-headers 重編譯,否則新內核下失效。/etc/default/grub 中 GRUB_CMDLINE_LINUX_DEFAULT 參數(如 nomodeset、pci=nomsi)升級後自動繼承,但需 update-grub 生效。/lib/modules/版本/,互不干擾。sudo update-grub 修復。linux-generic-hwe-22.04 獲取更新的內核支援新硬件。#!/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