安装 Linux 内核生成"gzip: stdout: No space left on device"错误



我当前的Ubuntu是16.04.1 LTS,我用它来构建最新的linux 4.7内核。所有的构建过程都很顺利,除了在安装时,它会提示以下错误:

# make modules_install install
......
  DEPMOD  4.7.0
sh ./arch/x86/boot/install.sh 4.7.0 arch/x86/boot/bzImage 
        System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.7.0 /boot/vmlinuz-4.7.0
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.7.0 /boot/vmlinuz-4.7.0
update-initramfs: Generating /boot/initrd.img-4.7.0
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.7.0 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
arch/x86/boot/Makefile:191: recipe for target 'install' failed
make[2]: *** [install] Error 1
arch/x86/Makefile:261: recipe for target 'install' failed
make[1]: *** [install] Error 2
Makefile:523: recipe for target '__build_one_by_one' failed
make: *** [__build_one_by_one] Error 2

我发现主机上没有空间,所以我使用"df -h"命令检查:

# df -h
Filesystem                   Size  Used Avail Use% Mounted on
udev                         1.9G     0  1.9G   0% /dev
tmpfs                        390M   11M  379M   3% /run
/dev/mapper/ubuntu--vg-root  454G   25G  407G   6% /
tmpfs                        2.0G     0  2.0G   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda2                    473M  179M  270M  40% /boot
/dev/sda1                    511M  3.5M  508M   1% /boot/efi
tmpfs                        100K     0  100K   0% /run/lxcfs/controllers
tmpfs                        390M     0  390M   0% /run/user/0

似乎只有/dev目录已满,但我不知道这是否是根本原因。有人能就这个问题提供一些线索吗?

正如您在df的执行中所看到的,/boot分区中只剩下几个兆欧。

你可以做的第一件事是检查是否有你不再使用的旧内核:

# uname -r
4.6.0-1-amd64
# dpkg -l linux-image*
Deseado=desconocido(U)/Instalar/eliminaR/Purgar/retener(H)
| Estado=No/Inst/ficheros-Conf/desempaqUetado/medio-conF/medio-inst(H)/espera-disparo(W)/pendienTe-disparo
|/ Err?=(ninguno)/requiere-Reinst (Estado,Err: mayúsc.=malo)
||/ Nombre                                    Versión                   Arquitectura              Descripción
+++-=========================================-=========================-=========================-=======================================================================================
un  linux-image                               <ninguna>                 <ninguna>                 (no hay ninguna descripción disponible)
ii  linux-image-4.5.0-2-amd64                 4.5.5-1                   amd64                     Linux 4.5 for 64-bit PCs
ii  linux-image-4.6.0-1-amd64                 4.6.4-1                   amd64                     Linux 4.6 for 64-bit PCs
ii  linux-image-amd64                         4.6+74                    amd64                     Linux for 64-bit PCs (meta-package)

正如您在我的示例中看到的,我已经安装了当前内核和上一个内核。这是我通常的行为,但在ubuntu中,在某些配置中,可能安装了两个以上的内核。

您可以安全地删除除这两个内核之外安装的任何其他内核,因为您已经测试了当前内核和之前的内核。

如果不是这种情况,您可以尝试扩展/boot分区,这在大多数情况下都很复杂,我看到您在//strong>分区中配置了lvm。您可以尝试使用knoppix启动机器,并调整分区大小,为/boot分区留出一些额外空间。但是你必须避免用lvm添加这个空间,因为我认为你的安装在启动过程中不支持lvm。

最好的选择应该是尝试调整整个lvm分区的大小,并给/boot额外的空间。

相关内容