Canonical 為 Ubuntu 18.04 系統提供定期更新,包括內核更新以盡可能最好地管理系統資源。 本文將為您提供一些不同的方法來從 Ubuntu 18.04 的啟動菜單中刪除舊內核。 當您安裝新內核時,舊內核不會被刪除,因為如果您在新內核上出錯或出於其他原因,它可以幫助您啟動。 請注意,舊內核消耗了一些空間,這些空間可能對其他東西有用。 我們有時需要更新內核以獲得兼容性,因為它負責連接所有應用程序。
檢查舊內核
為了避免 Ubuntu 18.04 系統當前引導內核出現任何錯誤,請務必檢查其版本
# uname -r
4.15.0-23-generic
在嘗試刪除舊內核之前,您必須首先檢查系統中是否存在舊內核。 為此,您可以在系統啟動時查看 grub
您可以選擇“Ubuntu 的高級選項”。 您可以在列表頂部看到當前內核,舊內核緊跟在 4.15.0.13-generic 之後
還有另一種方法可以在命令行中檢查舊內核。 這將幫助您列出舊內核而不是當前內核
# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
ii linux-image-4.15.0-13-generic 4.15.0-13.14 amd64 Linux kernel image for version 4.15.0 on 64 bit x86 SMP
你可以看到你有效地安裝了一個標有 ii 的舊內核。 如果您進行了一些升級或手動安裝,您可以看到更多舊內核。 檢查內核時有一些狀態
- ii: 表示內核/軟件包已安裝並且可以刪除。
- 遙控: 表示內核已經被移除。
- IU: 就像一個警告告訴不要刪除。 這意味著未安裝但在 apt 中排隊等待安裝。
確保在執行任何操作之前查看狀態。 現在我們已經發現安裝了一些內核,現在讓我們看看刪除每個內核或全部內核的不同方法。
1) 在命令行中刪除舊內核
無論您是手動安裝還是直接通過系統更新安裝,都有一些有用的命令可以刪除舊內核。 通常您通過常規系統更新安裝它,但由於某些原因,您可以決定進行手動安裝。
a) apt 命令
apt 命令幫助卸載包,包括您在 Ubuntu 18.04 系統中不需要的舊內核。 您可以檢查自動安裝的如下
# apt-mark showauto 'linux-image-.*'
linux-image-4.15.0-13-generic
linux-image-4.15.0-23-generic
linux-image-extra-4.15.0-13-generic
linux-image-generic
你可以檢查那些手動安裝的,如下所示
# apt-mark showmanual 'linux-image-.*'
如您所見,我們沒有手動安裝任何內核。 您可以使用 remove 參數刪除所有舊內核,如下所示:
# apt remove linux-image-4.15.0-13-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-image-4.15.0-13-generic* linux-image-extra-4.15.0-13-generic
....
....
you may need to re-run your boot loader[grub]
刪除內核時,請確保更新 grub 以查看生成 grub 時是否發生任何錯誤
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
現在您可以再次檢查它是否已被刪除
# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
rc linux-image-4.15.0-13-generic 4.15.0-13.14 amd64 Linux kernel image for version 4.15.0 on 64 bit x86 SMP
可以看到狀態 遙控 這表明它已被刪除。 您還可以檢查啟動菜單,看到只有當前的啟動內核出現
您還可以使用 apt autoremove
命令,但您應該注意到該命令用於刪除自動安裝的軟件包以滿足其他軟件包的依賴關係,並且不再需要作為依賴關係。 因此,請檢查要刪除的軟件包列表中是否沒有您需要的軟件包
# apt autoremove --purge
b) dpkg 命令
您還可以使用 dpkg 命令刪除 Ubuntu 18.04 系統上的特定內核。 這次你需要指明包和額外的依賴項
# dpkg --purge linux-image-4.15.0-13-generic linux-image-extra-4.15.0-13-generic
(Reading database ... 165680 files and directories currently installed.)
...
...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
...
您可以再次檢查跟踪,但您會看到已完全刪除,因為您不會有顯示已刪除的輸出 (rc)
# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
你也可以看看grub
c) 使用腳本
我們發現了一個有趣的 Github 上 Kivisade 的交互式腳本 這可以幫助您刪除舊內核。 它使用 dpkg 命令,但有趣的是它列出了要刪除的內核並詢問您的意見。 首先安裝git
# apt install git
現在克隆項目
# git clone https://github.com/kivisade/kernel-purge.git
Cloning into 'kernel-purge'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Unpacking objects: 100% (3/3), done.
進入文件夾並授予權限
# cd kernel-purge && chmod +x kernel-purge.sh
現在運行腳本
# ./kernel-purge.sh
Running kernel version is: 4.15.0-23
The following (unused) KERNEL packages will be removed:
linux-headers-4.15.0-13
linux-headers-4.15.0-13-generic
linux-image-4.15.0-13-generic
linux-image-extra-4.15.0-13-generic
Do you want to continue [yN]? y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-4.15.0-13* linux-headers-4.15.0-13-generic*
linux-image-4.15.0-13-generic* linux-image-extra-4.15.0-13-generic*
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 335 MB disk space will be freed.
(Reading database ... 168812 files and directories currently installed.)
...
...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
...
...
現在您可以檢查內核是否已被有效刪除。 您將沒有輸出,因此舊內核已被刪除
# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
2) 使用圖形工具刪除舊內核
您也可以使用圖形工具卸載內核包。 該工具將在此過程中詢問您的密碼,因為您需要具有管理權限。
a) Ubuntu 清潔器
Ubuntu Cleaner 是一個用戶友好的系統實用程序,旨在清理瀏覽器緩存、刪除不需要的應用程序並捕獲舊內核。 如果您想刪除,Ubuntu 可能會有所幫助:
- 應用程序緩存,包括大多數主要瀏覽器
- 緩存
- 舊內核
- 不需要的包
默認情況下,官方存儲庫中不存在該包,因此我們需要添加 PPA。 請記住,在 Ubuntu 18.04 上,您無需在添加 PPA 後更新包緩存,因為它會自動啟動。 所以添加PPA如下
~# add-apt-repository ppa:gerardpuig/ppa
Official Ubuntu Cleaner stable repository
More info: https://launchpad.net/~gerardpuig/+archive/ubuntu/ppa
Press [ENTER] to continue or Ctrl-c to cancel adding it.
Hit:1 https://cm.archive.ubuntu.com/ubuntu bionic InRelease
Get:2 https://cm.archive.ubuntu.com/ubuntu bionic-updates InRelease [83.2 kB]
Get:3 https://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Get:4 https://cm.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 https://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [204 B]
...
...
現在您可以安裝該工具
# apt install ubuntu-cleaner
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpython-stdlib python python-apt python-aptdaemon
...
...
然後啟動軟件
然後選擇舊內核部分並選擇要刪除的內核
您將被要求輸入密碼,然後該過程將開始
現在您可以檢查內核是否仍然存在。 您可以看到表明它已被刪除的狀態
# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
rc linux-image-4.15.0-13-generic 4.15.0-13.14 amd64 Linux kernel image for version 4.15.0 on 64 bit x86 SMP
b) 突觸
Synaptic 是基於 Debian 的系統用於處理軟件包/軟件安裝的高級打包工具 (APT) 的圖形界面。 它不是一個用戶友好的工具,因此使用起來可能會非常混亂,這就是您必須非常小心的原因。
# apt install synaptic
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
docbook-xml libept1.5.0 libgtk2-perl libpango-perl librarian0 rarian-compat
sgml-base sgml-data xml-core
現在啟動應用程序
現在轉到 Section -> Kernel and Modules,選擇要刪除的內核並標記為完全刪除。 確保在列表中選擇正確的內核
它會要求您確認
可以看到它自動標記了依賴項。 申請去核
它會要求確認。 申請
您可以看到一個顯示該過程的窗口。 仔細看,最後會發現grub已經生成,舊內核沒有了。
結論
現在您知道如何從 Ubuntu 18.04 的啟動中刪除舊內核。 您應該注意到建議刪除所有舊內核,因為如果您由於某種原因無法使用當前內核啟動。 所以建議至少保留兩個或最好三個內核,包括最新的。 推薦的原因是您將至少有一個或兩個其他內核可以啟動。
另請閱讀
- 如何使用 BCC 內核跟踪工具進行 Linux 性能分析
- 如何在 Ubuntu 18.04 上刪除和添加 PPA
- 清除 Linux 終端的 6 個命令