Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux /boot 分區空間不足?三步驟清理舊核心釋放空間完整教學

編輯:Linux 教學

許多 Linux 發行版安裝時會將 /boot 獨立分區(常見 500 MB~1 GB),隨著核心更新累積,舊版 vmlinuz、initrd.img、System.map 等檔案會佔滿空間,導致 apt upgrade 或 dnf update 失敗。本文以 Ubuntu/Debian 為例,示範如何安全移除舊核心並自動更新 GRUB 選單。

現況診斷

# 1. 查看 /boot 使用量
df -h /boot

# 2. 列出 /boot 內容
ls -lh /boot

# 3. 確認目前運行核心(絕勿移除)
uname -r
# 輸出範例:5.15.0-91-generic

查詢已安裝核心套件

# Debian/Ubuntu
dpkg -l 'linux-image-[0-9]*' | grep ^ii

# RHEL/CentOS/Fedora
rpm -qa kernel-core | sort -V

輸出範例(Ubuntu):

ii  linux-image-5.15.0-88-generic  5.15.0-88.98  amd64  Linux kernel 5.15.0 on x86_64
ii  linux-image-5.15.0-91-generic  5.15.0-91.101 amd64  Linux kernel 5.15.0 on x86_64
ii  linux-image-generic            5.15.0.91.96  amd64  Generic Linux kernel image

安全移除舊核心(保留當前 + 1~2 個備用)

# 假設當前為 5.15.0-91,決定保留 91 與 88,移除 86、87 等更舊版本
sudo apt-get purge linux-image-5.15.0-86-generic linux-image-5.15.0-87-generic
# 或一次移除多個(謹慎使用)
# sudo apt-get purge linux-image-5.15.0-{86,87}-generic

purge 會同時移除 /boot 對應檔案並觸發 update-grub 重建選單。

自動化清理指令(單行指令,適合腳本化)

# 保留當前核心 + 最新 2 個,其餘全刪(Ubuntu/Debian)
current=$(uname -r | sed 's/-generic//')
dpkg -l 'linux-image-[0-9]*' | awk '/^ii/{print $2}' | grep -vE "$current|linux-image-generic" | sort -V | head -n -2 | xargs -r sudo apt-get -y purge

解析:
sort -V 版本號排序 → head -n -2 取倒數第三行以前(即保留最新兩個) → xargs -r 無輸入不執行。

清理後驗證

df -h /boot          # 確認可用空間增加
dpkg -l 'linux-image-[0-9]*' | grep ^ii   # 僅剩預期版本
ls /boot/            # 檔案列表精簡

常見問題與注意事項

情況處理方式
誤刪當前核心立即重開機前先 sudo apt-get install --reinstall linux-image-$(uname -r);若已重開機進入 GRUB 救援模式,從 Live USB 掛載根分區 chroot 修復
套件狀態顯示 rc (residual config)執行 dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg --purge 清理殘留設定檔
GRUB 選單未更新手動執行 sudo update-grub 或 grub2-mkconfig -o /boot/grub2/grub.cfg (RHEL系)
使用 LVM/加密 /boot操作相同,但確保 /boot 掛載後再執行

預防措施:調整 APT 自動清理策略

# /etc/apt/apt.conf.d/01autoremove-kernels
APT::NeverAutoRemove {
    // 保留當前與最新 2 個核心
    "^linux-image-[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+-generic$";
};
APT::VersionedKernelPackages "linux-image linux-headers linux-modules";

搭配 sudo apt-get autoremove --purge 即可定期自動清理。

跨發布版快速參考

發布版核心套件前綴清理指令GRUB 更新
Ubuntu/Debianlinux-image-*apt-get purge linux-image-xxxupdate-grub
RHEL/CentOS 7kernel-*yum remove kernel-xxxgrub2-mkconfig -o /boot/grub2/grub.cfg
Fedora/RHEL 8+kernel-core-*dnf remove kernel-core-xxxgrub2-mkconfig -o /boot/grub2/grub.cfg
Arch Linuxlinux*pacman -R linuxxxxgrub-mkconfig -o /boot/grub/grub.cfg

定期清理 /boot 舊核心,配合 APT 自動移除策略,能徹底避免分區滿載導致系統無法更新,維持 Linux 系統長期穩定運行。

Copyright © Windows教程網 All Rights Reserved