是否有未使用的“initrd.img”需要删除?

是否有未使用的“initrd.img”需要删除?

看起来我的目录initrd.img中有一个不必要的东西:/boot

$ ls -1s /boot
total 82835
 1439 abi-4.11.0-10-generic
  204 config-4.11.0-10-generic
    1 extlinux
    1 grub
48186 initrd.img-4.11.0-10-generic
10626 initrd.img-4.8.0-34-generic
10626 initrd.img-4.8.0-39-generic
   12 lost+found
  180 memtest86+.bin
  182 memtest86+.elf
  182 memtest86+_multiboot.bin
 3695 System.map-4.11.0-10-generic
 7501 vmlinuz-4.11.0-10-generic

这些是initrd.img-4.8.0-34-genericinitrd.img-4.8.0-39-generic因为我找不到它们的任何踪迹

$ sudo update-grub2
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.11.0-10-generic
Found initrd image: /boot/initrd.img-4.11.0-10-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done

$ dpkg -l *4.8.0*
dpkg-query: no packages found matching *4.8.0*

$ dpkg -l linux-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-===========================================================
ii  linux-base                  4.5ubuntu1         all                Linux image base package
un  linux-doc-4.11.0            <none>             <none>             (no description available)
ii  linux-firmware              1.167              all                Firmware for Linux kernel drivers
ii  linux-generic               4.11.0.10.10       amd64              Complete Generic Linux kernel and headers
un  linux-headers               <none>             <none>             (no description available)
un  linux-headers-3.0           <none>             <none>             (no description available)
ii  linux-headers-4.11.0-10     4.11.0-10.15       all                Header files related to Linux kernel version 4.11.0
ii  linux-headers-4.11.0-10-gen 4.11.0-10.15       amd64              Linux kernel headers for version 4.11.0 on 64 bit x86 SMP
ii  linux-headers-generic       4.11.0.10.10       amd64              Generic Linux kernel headers
un  linux-image                 <none>             <none>             (no description available)
ii  linux-image-4.11.0-10-gener 4.11.0-10.15       amd64              Linux kernel image for version 4.11.0 on 64 bit x86 SMP
ii  linux-image-extra-4.11.0-10 4.11.0-10.15       amd64              Linux kernel extra modules for version 4.11.0 on 64 bit x86
ii  linux-image-generic         4.11.0.10.10       amd64              Generic Linux kernel image
un  linux-initramfs-tool        <none>             <none>             (no description available)
un  linux-kernel-headers        <none>             <none>             (no description available)
un  linux-kernel-log-daemon     <none>             <none>             (no description available)
ii  linux-libc-dev:amd64        4.11.0-10.15       amd64              Linux Kernel Headers for development
ii  linux-libc-dev:i386         4.11.0-10.15       i386               Linux Kernel Headers for development
un  linux-restricted-common     <none>             <none>             (no description available)
ii  linux-sound-base            1.0.25+dfsg-0ubunt all                base package for ALSA and OSS sound systems
un  linux-source-4.11.0         <none>             <none>             (no description available)
un  linux-tools                 <none>             <none>             (no description available)

这两个真的没用吗?如果它们没用,删除它们的正确方法是什么(我读到过,rm严格不推荐用于/boot文件夹)?

编辑1: sudo apt autoremove也帮不上忙。

答案1

每次触发包时都会创建“initrd”映像update-initramfs,因此您不太可能找到与它们相对应的包。

使用:

dpkg -S /boot/initrd.img*

要查看图像是由哪个包放置的,您应该得到:

dpkg-query: no path found matching pattern /boot/initrd.img-4...

这意味着“我找不到与此文件相关的任何包”,正如我所说的。


所以我的建议是,

删除所有“initrd”图像:

sudo rm /boot/initrd.img*

为所有当前安装的内核生成新的“intird”映像:

sudo update-initramfs -c -k all

你完成了。

答案2

就您而言,我认为可以initrd.img手动删除,因为您显然没有linux-image-4.8.0-34-generic

对于遇到此线程并需要摆脱“额外”的人initrd.img,您可能安装了“额外”的 linux 映像,这就是update-initramfs用来生成此“不需要的”initrd.img

因此,在运行之前sudo rm /boot/initrd.img*,请考虑运行:

sudo apt-get remove linux-image-4.8.0-34-generic

现在运行:

sudo update-initramfs -c -k all

我知道你已经解决了你的问题,但我认为其他人可能需要快速指导并且可能不了解你的问题的独特性。

除非您非常确定自己在做什么,否则请不要手动删除系统文件。

sudo update-grub之后您可能需要手动运行。

相关内容