当/ boot已满时,如何删除旧内核/安装新内核?

我知道这个问题之前已被问过很多次了,不过对我而言,我猜它只是有点不同。

# 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 

我的启动分区已满。

当前内核:

 # uname -r 3.2.0-35-generic 

所有内核:

 # 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 ii linux-image-3.2.0-34-generic 3.2.0-34.53 Linux kernel image for version 3.2.0 on 64 bit x86 SMP ii linux-image-3.2.0-35-generic 3.2.0-35.55 Linux kernel image for version 3.2.0 on 64 bit x86 SMP iF linux-image-3.2.0-37-generic 3.2.0-37.58 Linux kernel image for version 3.2.0 on 64 bit x86 SMP iF linux-image-3.2.0-38-generic 3.2.0-38.60 Linux kernel image for version 3.2.0 on 64 bit x86 SMP iU linux-image-generic 3.2.0.37.45 Generic Linux kernel image 

所以我想用以下方法删除3.2.0.32通用内核:

 # sudo apt-get purge linux-image-3.2.0-32-generic Reading package lists... Done Building dependency tree Reading state information... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: linux-generic : Depends: linux-headers-generic (= 3.2.0.37.45) but 3.2.0.38.46 is to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution). 

没有成功。

当我尝试apt-get -f install它也会失败:

 # apt-get -f install Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following packages were automatically installed and are no longer required: linux-headers-3.2.0-34 linux-headers-3.2.0-35 linux-headers-3.2.0-34-generic linux-headers-3.2.0-35-generic Use 'apt-get autoremove' to remove them. The following extra packages will be installed: linux-generic linux-image-generic The following packages will be upgraded: linux-generic linux-image-generic 2 upgraded, 0 newly installed, 0 to remove and 9 not upgraded. 5 not fully installed or removed. Need to get 0 B/4,334 B of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue [Y/n]? y Setting up initramfs-tools (0.99ubuntu13.1) ... update-initramfs: deferring update (trigger activated) Setting up linux-image-3.2.0-37-generic (3.2.0-37.58) ... Running depmod. update-initramfs: deferring update (hook will be called later) The link /initrd.img is a dangling linkto /boot/initrd.img-3.2.0-38-generic Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-37-generic /boot/vmlinuz-3.2.0-37-generic update-initramfs: Generating /boot/initrd.img-3.2.0-37-generic gzip: stdout: No space left on device E: mkinitramfs failure cpio 141 gzip 1 update-initramfs: failed for /boot/initrd.img-3.2.0-37-generic with 1. run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1 Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-37-generic.postinst line 1010. dpkg: error processing linux-image-3.2.0-37-generic (--configure): subprocess installed post-installation script returned error exit status 2 Setting up linux-image-3.2.0-38-generic (3.2.0-38.60) ... Running depmod. update-initramfs: deferring update (hook will be called later) The link /initrd.img is a dangling linkto /boot/initrd.img-3.2.0-37-generic Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-38-generic /boot/vmlinuz-3.2.0-38-generic update-initramfs: Generating /boot/initrd.img-3.2.0-38-generic gzip: stdout: No space left on device E: mkinitramfs failure cpio 141 gzip 1 update-initramfs: failed for /boot/initrd.img-3.2.0-38-generic with 1. run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1 Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-38-generic.postinst line 1010. dpkg: error processing linux-image-3.2.0-38-generic (--configure): subprocess installed post-installation script returned error exit status 2 dpkg: dependency problems prevent configuration of linux-image-generic: linux-image-generic depends on linux-image-3.2.0-37-generic; however: Package linux-image-3.2.0-37-generic is not configured yet. dpkg: error processing linux-image-generic (--configure): dependency problems - leaving unconfigured dpkg: dependency problems prevent configuration of linux-generic: linux-generic depends on linux-image-generic (= 3.2.0.37.45); however: Package linux-image-generic is not configured yet. linux-generic depends on linux-headers-generic (= 3.2.0.37.45); however: Version of linux-headers-generic on system is 3.2.0.38.46. dpkg: error processing linux-generic (--configure): dependency problems - leaving unconfigured Processing triggers for initramfs-tools ... No apport report written because the error message indicates its a followup error from a previous failure. No apport report written because MaxReports is reached already update-initramfs: Generating /boot/initrd.img-3.2.0-35-generic gzip: stdout: No space left on device E: mkinitramfs failure cpio 141 gzip 1 update-initramfs: failed for /boot/initrd.img-3.2.0-35-generic with 1. dpkg: error processing initramfs-tools (--configure): subprocess installed post-installation script returned error exit status 1 No apport report written because MaxReports is reached already Errors were encountered while processing: linux-image-3.2.0-37-generic linux-image-3.2.0-38-generic linux-image-generic linux-generic initramfs-tools E: Sub-process /usr/bin/dpkg returned an error code (1) 

真的很感激任何帮助。

更新:我做了:

 sudo rm /boot/*-3.2.0-32-generic /boot/*-3.2.0-34-generic 

之后apt-get -f install出现以下问题:

 root@localhost:/# apt-get -f install Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following extra packages will be installed: linux-generic The following packages will be upgraded: linux-generic 1 upgraded, 0 newly installed, 0 to remove and 9 not upgraded. 1 not fully installed or removed. Need to get 0 B/1,722 B of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue [Y/n]? y dpkg: dependency problems prevent configuration of linux-generic: linux-generic depends on linux-image-generic (= 3.2.0.37.45); however: Version of linux-image-generic on system is 3.2.0.38.46. linux-generic depends on linux-headers-generic (= 3.2.0.37.45); however: Version of linux-headers-generic on system is 3.2.0.38.46. dpkg: error processing linux-generic (--configure): dependency problems - leaving unconfigured No apport report written because the error message indicates its a followup error from a previous failure. Errors were encountered while processing: linux-generic E: Sub-process /usr/bin/dpkg returned an error code (1) 

当内核过时时,你不能使用apt-get。

 cd /boot sudo rm *-2.6.35-6.9-generic sudo rm *-3.16.0-23-generic 

使用ls查看文件夹中的内容然后删除最旧的一两个

 sudo apt-get -f install 

然后你就像在里面那样使用apt-get purge

 sudo apt-get purge linux-image-3.2.0-32-generic linux-image-3.2.0-34-generic 

或者继续使用rm。

当你受到影响时,你也应该sudo update-grub

显然,这有效:

 sudo apt-get autoremove 

根据apt-get man-page:

autoremove用于删除自动安装的包以满足其他包的依赖关系,现在不再需要。

3.16.0-39是我试图安装的,但因为/ boot已满而失败。 3.16.0-38是我目前的版本。 你可以看到-38被跳过了。

 server:~$ uname -r 3.16.0-38-generic server:~$ sudo apt-get autoremove [sudo] password for mikeb: Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic linux-headers-3.16.0-31 linux-headers-3.16.0-31-generic linux-headers-3.16.0-33 linux-headers-3.16.0-33-generic linux-headers-3.16.0-34 linux-headers-3.16.0-34-generic linux-headers-3.16.0-36 linux-headers-3.16.0-36-generic linux-headers-3.16.0-39 linux-headers-3.16.0-39-generic linux-image-3.16.0-30-generic linux-image-3.16.0-31-generic linux-image-3.16.0-33-generic linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic linux-image-3.16.0-39-generic linux-image-extra-3.16.0-30-generic linux-image-extra-3.16.0-31-generic linux-image-extra-3.16.0-33-generic linux-image-extra-3.16.0-34-generic linux-image-extra-3.16.0-36-generic linux-image-extra-3.16.0-39-generic 0 upgraded, 0 newly installed, 24 to remove and 0 not upgraded. 

在终端中,执行以下命令:

 dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get purge 

此命令列出所有当前安装的Linux内核,然后选择当前未使用的所有内核并将其删除。

 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 

如果在没有“sudo apt-get -y purge”的情况下运行上面的命令与你的linux-libc-dev:amd64匹配,你可以在正则表达式中添加一个分号,不包括它:

 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”

对于Ubuntu 12.04试试这个sudo apt-get purge linux-image-[kernel version]

这将删除任何内核版本。 如果您的启动文件夹有许多内核,请不要忘记更新grub并重新启动系统

恩。 sudo apt-get purge linux-image-3.11.6 *

我希望这可以帮助:

我通常使用ubuntu-tweak janitor删除旧内核,很好的GUI和简单的:)

点击’system’,会有旧内核列表,只需点击它并清理即可

你需要先修复你的依赖问题。 我的妈妈12.04 LTS盒子也遇到了同样的问题。 她正在进行更新,并且在孩子进程(apt-get或dpkg,我猜)完成之前,她关掉了她的电脑。 我刚刚在askubuntu上找到了这个链接,它解决了这个问题。 然后我就像你要去的那样删除了一些旧内核。 我希望这可以帮助你。 🙂

我喜欢Ubuntu,(当然还有Debian GNU / Linux :)但我不是apt或dpkg黑客,但我希望有办法让所有更新成为primefaces。 像PostgreSQL,MySQL等中的ACID …(主要是Atomicity)我正在学习这是一项正在进行中的工作……

linux-generic的未满足依赖项