也许有人会需要这个:)
基本上,前段时间我在研究 initramfs 压缩模式,并创建了一个只更新当前 initramfs 映像的单行代码。经过反复尝试,我成功了。但是,由于我对 bash 一窍不通,所以我遇到了一个问题。
尝试更新所有 initrd 映像时的终端输出:
root@OMEN:/boot# update-initramfs -k all -c
update-initramfs: Generating /boot/initrd.img-{uname
WARNING: missing /lib/modules/{uname
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: Bad version passed {uname
dpkg: įspėjimas: version '{uname' has bad syntax: version number does not start with digit
dpkg: įspėjimas: version '{uname' has bad syntax: version number does not start with digit
depmod: ERROR: Bad version passed {uname
update-initramfs: Generating /boot/initrd.img--r}
update-initramfs: Generating /boot/initrd.img-(uname
WARNING: missing /lib/modules/(uname
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: Bad version passed (uname
dpkg: įspėjimas: version '(uname' has bad syntax: version number does not start with digit
dpkg: įspėjimas: version '(uname' has bad syntax: version number does not start with digit
depmod: ERROR: Bad version passed (uname
update-initramfs: Generating /boot/initrd.img--r)
我怎样才能摆脱所有这些错误?
答案1
问题是 update-initramfs 工具如何知道这些“版本”(它如何设法“生成”这些版本又是另一个问题 :D)?找到...
cd
(转至)目录:lukas@OMEN:/etc/initramfs-tools$ cd /var/lib/initramfs-tools
ls
(列出)当前目录中的文件:lukas@OMEN:/var/lib/initramfs-tools$ ls '-r)' -r} '(uname' {uname '(uname -r)' '{uname -r}'
在这里我们可以看到这些文件。如果您发现可能需要其他文件,请逐个删除它们,或者直接删除它们:
lukas@OMEN:~$ sudo rm /var/lib/initramfs-tools/*
现在,删除...中的垃圾文件/boot
首先,检查有哪些文件:
lukas@OMEN:~$ ls /boot
boot initrd.img-5.7.10-xanmod2 System.map-5.4.0-42-generic
config-5.3.0-62-generic initrd.img-5.7.11-xanmod1 System.map-5.7.10-xanmod2
config-5.4.0-42-generic initrd.img-{uname System.map-5.7.11-xanmod1
config-5.7.10-xanmod2 'initrd.img-{uname -r}' vmlinuz-5.3.0-62-generic
config-5.7.11-xanmod1 lost+found vmlinuz-5.4.0-42-generic
efi memtest86+.bin vmlinuz-5.7.10-xanmod2
grub memtest86+.elf vmlinuz-5.7.11-xanmod1
initrd.img-5.3.0-62-generic memtest86+_multiboot.bin
initrd.img-5.4.0-42-generic System.map-5.3.0-62-generic
然后删除您认为是垃圾的文件(当心,删除错误的文件可能会导致你的系统无法启动):
lukas@OMEN:~$ sudo rm "/boot/initrd.img-{uname -r}"
如果文件有空格符号或一些奇怪的符号,请将参数放在rm
引号中(和都'
有效"
)
如果你不小心删除了需要的图像,不要重新启动计算机,首先执行以下操作:
- 在终端中输入
uname -r
,然后sudo ls /boot
检查正在运行的内核是否仍然具有 initrd 映像(应该是initrd.img-VERSION
,VERSION
输出来自uname -r
)。如果有这样的文件,您将能够重新启动 PC 进入 GNU/Linux。不过,仍然建议执行以下步骤。 - 打开 Synaptic 或 Muon(如果均未安装,
sudo apt install synaptic
),然后从仪表板或应用程序菜单启动。 - 搜索已安装的
linux-image
软件包(将引号中的内容放入搜索框,等待应用程序加载软件包列表,然后按“已安装版本”或“状态”对软件包进行排序)。 - 重新安装显示“已安装版本”或下面状态为“已安装”的所有内容。
- 再次检查
/boot
目录ls /boot
,如果您再次拥有 initrd 映像,那么您就可以放松并做您想做的事情,包括成功重启。