我碰巧删除了/boot
系统上的目录,而不是我应该删除的目录。我发现这以便恢复它,但是我遇到了问题,apt --reinstall
所以我决定手动删除并安装软件包。这可能不是最聪明的主意,现在有 2 个损坏的图像,我不知道如何修复。
跑步dpkg --audit
告诉我
The following packages are only half configured, probably due to problems
configuring them the first time. The configuration should be retried using
dpkg --configure <package> or the configure menu option in dselect:
linux-image-4.15.0-42-generic Signed kernel image generic
linux-image-4.15.0-43-generic Signed kernel image generic
跑步dpkg --configure linux-image-4.15.0-42-generic
Setting up linux-image-4.15.0-42-generic (4.15.0-42.45) ...
Processing triggers for linux-image-4.15.0-42-generic (4.15.0-42.45) ...
/etc/kernel/postinst.d/dkms:
run-parts: failed to exec /etc/kernel/postinst.d/dkms: No such file or directory
run-parts: /etc/kernel/postinst.d/dkms exited with return code 1
dpkg: error processing package linux-image-4.15.0-42-generic (--configure):
installed linux-image-4.15.0-42-generic package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
linux-image-4.15.0-42-generic
然而/etc/kernel/postinst.d/dkms
存在
~$ ls -l /etc/kernel/postinst.d/dkms
-rwxr-xr-x 1 root root 1120 авг 31 2016 /etc/kernel/postinst.d/dkms
但是我的机器仍在运行,可以挽救它吗?
编辑:
刚刚尝试dkms
手动运行,发现/bin/bash
缺少了。使用安装它apt install bash
,然后发出命令
dpkg --audit
apt install -f
update-grub
现在一切看起来都很正常,但是重启后 grub 中没有 ubuntu 启动选项。
答案1
- 使用 Live Ubuntu 光盘启动
在 /mnt 上挂载带有 Ubuntu 文件系统的分区
例子
sudo mount /dev/sdxx /mnt sudo mount /dev/sdxy /mnt/boot sudo mount /dev/sdxz /mnt/boot/efi
其中 sdx=disk、sdxx="/" 分区、sdxy="boot" 分区、sdxz="efi" 分区
然后运行
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot mnt
最重要的是,因为您丢失了 /boot/grub/efi 并且可能还有 /boot/grub/efi。
找到您的靴子类型
[ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
如果网络问题。
echo "nameserver 8.8.8.8" >/etc/resolv.conf
或者
cp /mnt/etc/resolv.conf /etc/resolv.conf
对于传统/BIOS 启动
apt install --reinstall grub-pc grub-common
对于 UEFI(efi)启动
apt install --reinstall grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin
和
grub-install /sdx # no apt infront
现在运行
dpkg -S /boot sudo dpkg --audit
找到所需的软件包。安装软件包。
然后
apt --fix-missing install update-initramfs -u update-grub
和
exit for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
卸载已挂载的分区。
例子:
sudo umount /mnt/boot/efi sudo umount /mnt/boot sudo umount /mnt sudo reboot
重启后出现错误。
sudo dpkg --configure -a