我有一些不使用的旧 Linux 内核版本,因此我尝试删除它们。
已安装内核列表dpkg --list | grep linux-image
linux-image-5.4.0-26-generic (5.4.0-26.30)
linux-image-5.4.0-33-generic (5.4.0-33.37)
linux-image-5.4.0-37-generic (5.4.0-37.41)
答案1
以下是删除未使用的内核的步骤。
检查您当前运行的内核:
uname -a
Linux blackhole 5.6.13-050613-lowlatency #202005141310 SMP PREEMPT Thu May 14 13:17:41 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
我在跑步5.6.13-050613-lowlatency
列出操作系统中所有已安装的内核:
dpkg --list | egrep -i --color 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }'
linux-headers-5.6.11-050611
linux-headers-5.6.11-050611-lowlatency
linux-headers-5.6.13-050613
linux-headers-5.6.13-050613-lowlatency
linux-image-unsigned-5.6.11-050611-lowlatency
linux-image-unsigned-5.6.13-050613-lowlatency
linux-modules-5.6.11-050611-lowlatency
linux-modules-5.6.13-050613-lowlatency
卸载内核您不需要:
sudo apt purge linux-headers-5.6.11-050611 linux-headers-5.6.11-050611-lowlatency linux-image-unsigned-5.6.11-050611-lowlatency linux-modules-5.6.11-050611-lowlatency
答案2
您可以尝试这个脚本
删除旧内核
#!/bin/bash
# Run this script without any param for a dry run
# Run the script with root and with exec param for removing old kernels after checking
# the list printed in the dry run
uname -a
IN_USE=$(uname -a | awk '{ print $3 }')
echo "Your in use kernel is $IN_USE"
OLD_KERNELS=$(
dpkg --list |
grep -v "$IN_USE" |
grep -Ei 'linux-image|linux-headers|linux-modules' |
awk '{ print $2 }'
)
echo "Old Kernels to be removed:"
echo "$OLD_KERNELS"
if [ "$1" == "exec" ]; then
for PACKAGE in $OLD_KERNELS; do
yes | apt purge "$PACKAGE"
done
else
echo "If all looks good, run it again like this: sudo remove_old_kernels.sh exec"
fi
像这样运行一下,进行试运行:
remove_old_kernels.sh
如果一切看起来不错,请像这样再次运行:
sudo remove_old_kernels.sh exec
答案3
只是进一步阐述了 Michal 的回答。我不想每次都输入要删除的内核,所以我决定使用文件。
将您当前拥有的所有内核写入一个文件中。
dpkg --list | egrep -i --color 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }' > kernels.txt
使用 grep 从文件中过滤出当前使用的内核。
grep -v $(uname -r) kernels.txt > kernels_to_delete.txt
验证当前内核不在删除列表中。不要跳过此步骤。确保您不会错误地删除所有内核。
grep $(uname -r) kernels_to_delete.txt
一次性删除所有未使用的内核。
cat kernels_to_delete.txt | xargs sudo apt purge -y
答案4
只需使用这个:
sudo apt-get autoremove --purge