删除 /boot 并移除内核

删除 /boot 并移除内核

我碰巧删除了/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
    

相关内容