Ima*_*ots 735 cleanup grub2 kernel
每次我安装一个新的 Linux 内核时,它都会留在 grub_config 中,每次都会使引导菜单变长。
我知道我可以手动搜索已安装的软件包并删除它们。
Ubuntu 是否提供了更简单的方法来清理它们或防止它们显示在引导列表中?
fos*_*dom 626
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
此命令删除为解决依赖关系而自动安装但现在不再依赖的包。这包括旧版本linux-headers-*和linux-image-*。(这个过程也很聪明,留下一个备用版本的内核作为后备!)
Ubuntu 中安装的最新版本的Grub2 会自动显示最新的内核并隐藏您可能已安装的旧内核。

如果你没有看到你的grub - 然后记得Shift在启动时按下。
如您所见,只显示最新的内核。
如果您选择显示的选项(按Enter),则所有旧内核都将变为可见并可用于引导。
首先使用最新的可用内核启动。
有多种方法可以删除旧内核。就我个人而言,我不会碰Computer Janitor,因为这被认为会用它的建议破坏你的计算机。
突触的
另一种选择是Synaptic ( sudo apt install synaptic)
搜索linux-image,右键单击内核并选择完全删除,最后单击应用按钮删除内核。

重复搜索,但这次是针对linux-header - 您可以删除之前选择的内核映像的相关头文件。
尽管Synaptic不会尝试验证您要删除的内容……您可能会无意中删除最新的内核 - 甚至通过此工具删除所有内核,从而导致Ubuntu无法启动!
请记住检查您正在使用的内核类型:
uname -r
Run Code Online (Sandbox Code Playgroud)
结果将类似于:

记住结果和数字 - 确保您没有删除相应的图像或标题。
我的建议是保留至少两个或最好三个内核,包括最新的。推荐的原因是您将至少有一个/两个其他内核可以启动,如果由于某种原因您无法使用最新的内核启动或引入了退化的功能,例如无线中断。
pen*_*rns 405
首先,重新启动系统以确保它使用最新的内核。然后打开终端并检查您当前的内核:
uname -r
Run Code Online (Sandbox Code Playgroud)
不要移除这个内核!
接下来,键入以下命令以查看/列出系统上所有已安装的内核。
dpkg --list 'linux-image-*'
Run Code Online (Sandbox Code Playgroud)
找到所有低于当前内核的内核。当您知道要删除哪个内核时,请继续执行以下操作以将其删除。运行以下命令以删除您选择的内核。
sudo apt-get purge linux-image-x.x.x-x-generic
Run Code Online (Sandbox Code Playgroud)
最后,运行以下命令来更新 grub2
sudo update-grub2
Run Code Online (Sandbox Code Playgroud)
重新启动系统。
小智 296
我的单行删除旧内核(这也释放了磁盘空间)
dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
说明(记住,|使用上一条命令的输出作为下一条命令的输入)
dpkg --list 列出所有已安装的包grep linux-image 查找已安装的 linux 映像awk '{ print $2 }' 只输出第二列(即包名)sort -V 按版本号排列项目sed -n '/'`uname -r`'/q;p' 打印当前内核之前的行xargs sudo apt-get -y purge 清除找到的内核展开sed调用:
-n说sed要安静`uname -r` 输出当前安装的内核版本 - 我们将其包含在反引号中,以便将输出作为命令的一部分包含在内(您也可能将其视为 $(uname -r) /something/q当您匹配“某物”时说停止(在这种情况下,某物是 的输出uname -r) -/环绕正则表达式p 是印刷品 ;是命令分隔符,所以/something/q;p当你匹配某些东西时说退出,否则打印总之,sed -n '/'`uname -r`'/q;p'是打印行,直到它与当前内核名称匹配。
如果您是偏执狂(像我一样),您可以制作最后一部分,xargs echo sudo apt-get -y purge以便打印清除旧内核的命令,然后您可以在运行之前检查是否包含任何意外内容。
删除标题的修改版本:
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
注意:sed调用被修改。"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"仅提取版本 (例如 "3.2.0-44") ,不提取 "-generic" 或类似的uname -r
删除图像和标题的多合一版本(结合了上述两个版本):
echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
bma*_*pin 62
$ sudo apt autoremove
...
The following packages will be REMOVED:
linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic
Run Code Online (Sandbox Code Playgroud)
我觉得这是最简单快捷的方式。它保留了最新的内核以及另外两个内核:
sudo apt-get install bikeshed
sudo purge-old-kernels
Run Code Online (Sandbox Code Playgroud)
要更改保留的附加内核数:
sudo purge-old-kernels --keep 3
Run Code Online (Sandbox Code Playgroud)
kar*_*k87 44
从 Grub 中删除条目 2 条目应该通过编辑或删除 /etc/grub.d 文件夹中的文件来删除。/boot/grub/grub.cfg 文件是只读的,通常不需要编辑。
内核太多?
如果您不确定当前使用的内核,请在终端中输入uname -r。
通过 APT 删除的内核(Synaptic、“apt-get remove”等)将自动更新 grub.cfg,无需用户操作。
删除内核(和菜单项)的一个很好的工具是 Ubuntu-Tweak,这是一个安全且易于使用的 GUI 应用程序。
安装 ubuntu 调整
Ubuntu-Tweak 将在应用程序 > 系统工具下可用。
删除较旧的内核条目
选择左侧的“Package Cleaner”和右侧面板中的“Clean Kernel”。
按右下角的“解锁”按钮,输入您的密码。
从显示的列表中选择要删除的内核映像和头文件。未列出正在使用的内核。
按右下角的“清理”按钮删除选定的内核映像和标题。
从 Grub 菜单中删除操作系统
一旦以 root 身份运行“update-grub”,其他已从计算机中删除的操作系统也将从菜单中删除。
菜单项由脚本放置在 Grub2 菜单上。如果您不想在菜单中输入其他操作系统,请禁用 /etc/grub.d/30_osprober
运行此命令以停止脚本运行
sudo chmod -x /etc/grub.d/30_os-prober
/etc/default/grub 中的 DISABLE_30_OS-PROBER='true'
从 Grub 菜单中删除 Memtest86+
sudo chmod -x /etc/grub.d/20_memtest86+
注意: 内核更新后,GRUB 菜单中会添加一个新条目。您可以根据需要删除旧条目。但是,大多数有经验的用户会建议您保留至少一个备用条目,以防升级出现问题而您需要启动较旧的内核版本以进行故障排除。
删除内核条目的替代方法(10.04 之前)
对于 GRUB 而不是 GRUB2
您可以在系统>>管理>>下找到它


您在第二个屏幕截图中看到,您可以选择要显示多少个内核?我通常只是将它保持在 1,但是当我进行内核升级时,我总是在重新启动之前将其更改为 2,这样如果新内核的硬件有问题,我就可以选择旧内核。一旦我知道新内核运行良好,我就把它改回 1。
Kee*_*ook 41
纯粹的命令行,这将删除除当前和第二大当前之外的所有内容(通过下面 head 命令中的“-2”):
OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |
awk '{print "linux-image-" $0 " linux-headers-" $0}' )
if [ -n "$OLD" ]; then
apt-get -qy remove --purge $OLD
fi
apt-get -qy autoremove --purge
Run Code Online (Sandbox Code Playgroud)
小智 30
您可以按照使用“无人参与升级”包款的自动安全更新在Ubuntu维基文章来执行此。
您需要在/etc/apt/apt.conf.d/50unattended-upgrades文件中更改以下行;
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
Run Code Online (Sandbox Code Playgroud)
和
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Run Code Online (Sandbox Code Playgroud)
自动删除旧包,包括内核。
同时删除或注释该行
"^linux-image.*";
Run Code Online (Sandbox Code Playgroud)
在文件/etc/apt/apt.conf.d/01autoremove的“NeverAutoRemove”部分。
Lui*_*ado 28
Ubuntu 已经附带的最快/更简单的方法(至少从 12.04 开始适用)是apt-get. 如果您希望删除所有未使用的旧内核版本,请执行以下操作(除了前一个您没有使用的内核版本。这是为了确保如果当前内核版本以某种方式失败,您还有一段路要走回到之前的状态)。请执行下列操作:
sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)
这将消除您可能拥有的任何旧文件(包括内核版本)。请注意,如果您有许多旧版本,则需要一段时间,因为它必须确保删除内核版本没有问题。对我来说,删除最后 12 个内核版本大约需要 2 分钟。您还可以执行以下操作:
sudo apt-get clean
Run Code Online (Sandbox Code Playgroud)
这将消除下载并存储在 apt 缓存文件夹中的所有内容。最后你有:
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
这将检查任何未使用的包并在必要时删除它们。这对于安装的任何应用程序不再需要的那些库和依赖包非常有用。
mik*_*ver 27
要弄清楚安装了哪些内核和头文件,请使用
dpkg -l | grep linux-image
dpkg -l | grep linux-headers
Run Code Online (Sandbox Code Playgroud)
然后您可以将它们一个一个或一起删除,只需确保保留最新的。
还有一些方便的命令和脚本可以自动删除。
http://ubuntuforums.org/showthread.php?t=1658648
以下声称删除所有未使用的内核和头文件:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | grep -v hwe | xargs sudo apt-get purge
Run Code Online (Sandbox Code Playgroud)
(用于apt-get -y毫无疑问地删除)
以下是在 18.04.1 上运行时发生的情况:
~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]
\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs sudo apt-get -y purge
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic
Run Code Online (Sandbox Code Playgroud)
mac*_*aco 26
Computer Janitor 可以清理旧内核,我相信它在 Ubuntu 中默认安装(但不是 Kubuntu)。
GRUB 1,如果你正在使用它,有一个选项/boot/grub/menu.lst来指定它最多应该显示多少内核。据我所知,GRUB 2 没有。
anu*_*ain 17
为了删除较旧的 Linux 映像内核,首先在要保留的内核中启动。
您还可以使用命令检查内核版本uname -r,以免误删除错误的内核版本。
现在转到突触包管理器并搜索linux-image并删除旧版本,但上层命令显示的版本除外。一般来说,我更喜欢使用最新的。
现在,当您重新启动时,您会看到一个更干净的 grub 菜单。
就个人而言,我喜欢使用Synaptic. 这让我对正在发生的事情更有安全感。我使用过的唯一一个可以选择删除旧内核的应用程序是Ubuntu Tweak。
如何删除您不使用的内核:
uname -a在终端中运行这是一个纯粹的命令行解决方案。
首先生成除当前运行的内核之外的所有已安装内核版本的列表:
dpkg-query -W -f='${Package}\n' |
grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
grep -v $(uname -r | cut -d- -f1,2))
Run Code Online (Sandbox Code Playgroud)
或者生成除最后两个之外的所有已安装内核版本的列表:
dpkg-query -W -f='${Package}\n' |
grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
sort -V | head -n -2)
Run Code Online (Sandbox Code Playgroud)
检查清单。确保您要保留的内核版本不在列表中。使用命令uname -r查看当前运行的内核版本。
如果您对结果感到满意,可以使用它apt-get来删除包。
首先是试运行(以第一个生成器为例):
sudo apt-get --dry-run purge $(
dpkg-query -W -f='${Package}\n' |
grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
grep -v $(uname -r | cut -d- -f1,2)))
Run Code Online (Sandbox Code Playgroud)
然后是真正的运行:
sudo apt-get purge $(
dpkg-query -W -f='${Package}\n' |
grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
grep -v $(uname -r | cut -d- -f1,2)))
Run Code Online (Sandbox Code Playgroud)
如果要自动化该过程,请添加--yes参数:
sudo apt-get --yes purge $(
...)
Run Code Online (Sandbox Code Playgroud)
这个答案的优点是使用本机 Ubuntu Bash,无需安装第三方应用程序。未使用apt或dpkg可以更改此 bash 脚本以满足其需要的自定义内核用户。这个答案基于(如何一次有选择地清除旧内核)。
Zenity 为终端提供了一个很好的 GUI 界面来处理列表并使用单选按钮选择项目:
正如标题所示,您使用的当前内核无法删除,也不包含在列表中。报告的大小是将保存在/boot目录中的大小。由于内核二进制文件也位于其他区域,因此磁盘上会保存更多。2017 年 7 月 27 日注意:目录/usr/src/*kernel_version*和/lib/modules/*kernel_version*现在也包括在内。
该修改日期是使用发现stat命令。在我的系统上,每次使用此命令启动内核时都会“触及”该日期(您如何找出上次启动特定内核版本的时间?)cron重启脚本。但是,在您的系统上,日期将是内核发布日期,而不是您上次启动它的时间。
apt-get purge 给你机会中止您将有机会查看将被清除的所有内容并查看将被恢复的总磁盘空间(有些误导):
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
Run Code Online (Sandbox Code Playgroud)
将此代码复制到名为的可执行文件rm-kernels中/usr/local/bin:
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
Run Code Online (Sandbox Code Playgroud)
注意:您需要 sudo 权限才能创建文件,因此请使用:
#!/bin/bash
# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "root access required. Use: sudo rm-kernels"
exit 99
fi
OLDIFS="$IFS"
IFS="|"
choices=()
current_version=$(uname -r)
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
choices=("${choices[@]}" false "$v" "$d" "$s")
done
# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large
choices=(`zenity \
--title "rm-kernels - Total: $t MB excluding: $current_version" \
--list \
--separator="$IFS" \
--checklist --multiple \
--text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
--width=640 \
--height=480 \
--column "Select" \
--column "Kernel Version Number" \
--column "Modified Date" \
--column " Size " \
"${choices[@]}"`)
IFS="$OLDIFS"
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
Run Code Online (Sandbox Code Playgroud)
要使文件可执行,请使用:
gksu gedit /usr/local/bin/rm-kernels
Run Code Online (Sandbox Code Playgroud)
rm-kernels-server是一次有选择地删除内核的服务器版本。使用基于文本的对话框来选择要清除的内核,而不是 GUI(图形)对话框。
在运行脚本之前,您需要使用以下命令安装对话框功能:
sudo apt install dialog
对话框位于默认的 Ubuntu 桌面安装中,但不在 Ubuntu Server 中。
rm-kernels-server bash 代码sudo chmod +x /usr/local/bin/rm-kernels
Run Code Online (Sandbox Code Playgroud)
注意:在对dialog指令的调用中,--ascii-lines通过ssh“+-----+”替换绘制框的画线扩展字符集(不喜欢)。如果您不喜欢这种外观,您可以完全使用--no-linesno box 指令。
每个内核的计算大小取自/boot/*kernel_version*5 个文件,总计约 50 MB。该公式已更改为包括文件/usr/src/*kernel_version*和/lib/modules/*kernel_version*。每个内核的计算大小现在约为 400 MB。上面的rm-kernels和代码rm-kernels-server已经更新。但是,上面的示例屏幕尚未反映这些更改。
默认情况下,估计 linux-headers 的文件大小为 125 MB,linux-image 为 220 MB,因为du除非文件在缓存中,否则速度会非常慢。使用du将任何参数传递给脚本来获取实际大小。
所有内核大小的总和(不包括无法删除的当前运行版本)现在显示在标题栏中。
用于显示每个内核的上次访问日期的对话框。在备份或类似操作期间,此日期可能会被所有内核大量覆盖。该对话框现在显示修改日期。
| 归档时间: |
|
| 查看次数: |
1145368 次 |
| 最近记录: |