我知道这个问题以前被问过很多次,但是我想这有点不同。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 224G 5.2G 208G 3% /
udev 1.9G 4.0K 1.9G 1% /dev
tmpfs 777M 260K 777M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.9G 0 1.9G 0% /run/shm
/dev/sda2 90M 88M 0 100% /boot
/dev/sda6 1.9G 514M 1.3G 29% /tmp
Run Code Online (Sandbox Code Playgroud)
我的启动分区已满。
当前内核:
# uname -r
3.2.0-35-generic
Run Code Online (Sandbox Code Playgroud)
所有内核:
# dpkg --list | grep linux-image
ii linux-image-3.2.0-32-generic 3.2.0-32.51 Linux kernel image for version 3.2.0 on 64 bit x86 SMP …Run Code Online (Sandbox Code Playgroud) 我经常使用 Synaptic 删除旧内核,只留下最新的两个条目。
我正在使用精确。但是,在我的 Grub“以前的 Linux 版本”菜单中,有很多条目标记为 2.6.8。我在 Synaptic 中找不到这些 linux 映像。
dpkg -l | grep linux-image
Run Code Online (Sandbox Code Playgroud)
给出:
rc linux-image-3.0.0-17-generic 3.0.0-17.30
Linux kernel image for version 3.0.0 on x86/x86_64
ii linux-image-3.2.0-27-generic 3.2.0-27.43
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii linux-image-3.2.0-29-generic 3.2.0-29.46
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii linux-image-3.4.0-030400-generic 3.4.0-030400.201205210521
Linux kernel image for version 3.4.0 on 32 bit x86 SMP
ii linux-image-generic 3.2.0.29.31
Generic Linux kernel image
Run Code Online (Sandbox Code Playgroud)
Sudo update-grub …
可能的重复:
有没有办法删除/隐藏旧的内核版本?
当我的系统启动时,除了 Windows 操作系统选项之外,还会显示大约 6 个选项的大列表。
他们就像:
Ubuntu 10.04- linux kernel 2.6.32-25
Ubuntu 10.04- linux kernel 2.6.32-25 (recovery)
Ubuntu 10.04- linux kernel 2.6.32-26
Ubuntu 10.04- linux kernel 2.6.32-26 (recovery)
...etc
Memory Test..
Windows XP Professional
Run Code Online (Sandbox Code Playgroud)
如何从此列表中删除不需要的条目?
我已经看到很多关于如何在 /boot 分区上释放空间的主题,这也是我的目标。但是,我只对删除旧内核感兴趣,而不是删除每个内核,而是删除当前内核。
我需要解决方案是单行的,因为我将从 Puppet 运行脚本并且我不想有额外的文件。到目前为止,我得到了以下信息:
dpkg -l linux-* | awk '/^ii/{print $2}' | egrep [0-9] | sort -t- -k3,4 --version-sort -r | sed -e "1,/$(uname -r | cut -f1,2 -d"-")/d" | grep -v -e `uname -r | cut -f1,2 -d"-"` | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
更准确地说,它目前的作用如下:
这行得通,但我确信该解决方案可以更优雅,并且对于生产环境来说是安全的,因为我们至少有 20 台服务器运行 Ubuntu。
谢谢你的时间,亚历杭德罗。
我知道手动删除旧内核版本的多种方法。有没有办法自动删除旧的内核版本?自动地,从某种意义上说,每次内核更新时我都不必做同样的事情。
我有一个 2G 的主分区,/lib/modules 占用的空间超过 1.5G。我得到了 12 个以内核 2.6.32 版本命名的目录,每个目录占用 119k。为什么我有这一切?我需要所有这些吗?如果没有,删除我不需要的东西的干净方法是什么?
谢谢
在网上浏览 Ubuntu 文章时,我遇到了这个命令:
sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
作者说这是一个单行命令,它将删除所有以前版本的Linux,只保留当前版本!
我实际上正在寻找这样的命令,但我不太确定这有多安全。我想知道:
当我试图自己推论时,我变得非常困惑和沮丧。它包含了这是如何指挥工作众多/,|,\,*,和^字符,这是很难为谷歌。
我正在寻找此命令的分步翻译和解释,但我无法在互联网上找到!
假设我最近通过以下方式安装了无人值守升级:
sudo apt-get install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades -y
Run Code Online (Sandbox Code Playgroud)
无人值守升级是否还包括apt-get autoremove?
或者我应该在无人值守升级层上添加每周一次的 cronjob 以确保删除的包的依赖项也被删除,通过crontab -e然后:
0 0 * * 0 apt-get autoremove -y
Run Code Online (Sandbox Code Playgroud)
注意:如果需要,请随意提及除 autoremove 之外的类似 apt 概念。
可能的重复:
有没有办法删除/隐藏旧的内核版本?
我使用 CD 将我的 Ubuntu 11.10 系统升级到 12.04。升级后,我尝试使用 Synaptic Package Manager 删除出现在 grub 启动菜单中的旧版本内核。但是旧的内核包(例如linux-image 3.0.0-16-generic:)不会出现在 Synaptic 中。当我尝试更新 GRUB 时,我看到了那里的内核。如何正确删除它们?
当计算机启动时,GRUB 会显示一长串以前的内核以及通常的东西,例如
Ubuntu 10.10, kernel 2.6.35-23-generic
Ubuntu 10.10, kernel 2.6.35-23-generic (recovery mode)
Ubuntu 10.10, kernel 2.6.35-22-generic
Ubuntu 10.10, kernel 2.6.35-22-generic (recovery mode)
[6 more similar]
Ubuntu 10.10, memtest86+
Other operating systems:
Dell Utility Partition
Windows Vista (loader)
Run Code Online (Sandbox Code Playgroud)
从 中删除那些额外的“Ubuntu 10.10,内核”行是否安全/etc/grub/menu.lst?目前我已经注释掉了从第三个到(不包括)memtest86。但我想知道是否出于特定原因需要它们?