看起来我的目录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-generic
,initrd.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
之后您可能需要手动运行。