在 U 盘上安装 UEFI 的 Debian 在被删除一次后不想启动

在 U 盘上安装 UEFI 的 Debian 在被删除一次后不想启动

我曾经在这里读到,直接在随身碟上安装 Debian 9(嗯,在我的例子中是 SDCard 适配器)可以工作,而且确实如此。然而,当我从计算机上拔下适配器后,问题就出现了;当我想启动到 Linux 时,我所要做的就是在 BIOS 设置中选择标有“UEFI:debian”的启动设备,但是一旦我删除了适配器,该选项就消失了。

我不想丢失 Debian 安装,我希望它能够再次运行。我需要让它再次启动。

答案1

闻起来像BIOS 问题。你的问题中遗漏了一些信息,所以我将假设以下几点:

  • UEFI: debian安装后出现在 BIOS 菜单中(不是 grub 菜单)
  • 当您拔下并重新插入 USB 驱动器时,BIOS 不再显示UEFI: debian 即使重新启动后
  • 您的主硬盘使用 EFI 来启动您的其他操作系统(Windows?)

如果不了解有关 BIOS 的更多信息,就很难给出直接的解决方案。然而,问题可能与您有两个 EFI 分区有关;一份位于内置 HDD 上,一份位于 USB 磁盘上。

当您重新插入时,也许可以手动提醒 BIOS 有关 USB EFI 条目的信息,但我无法告诉您如何操作。

一种可能的解决方法是将 EFI 条目从 USB 驱动器复制到内部硬盘驱动器上。从 Debian 中这会更容易(如果你能回到它),但是它可以在Windows上完成

EFI 条目基本上只是 EFI 分区目录中的几个文件。因此,您需要做的就是安装内部 HDD 的 EFI 分区并从 USB 驱动器复制该分区(通常安装到/boot/efi/EFI/debian

答案2

我的猜测是根文件系统(Debian操作系统)已损坏。

这可能会发生

  • 如果在操作系统完全关闭之前拔掉驱动器或

  • 如果在另一个操作系统正在运行时连接,则您无需卸载驱动器上的所有分区即可将其拔出。


您可以将驱动器连接到运行 Linux 的计算机并尝试修复文件系统。

  • 确保SD卡上的所有分区都已卸载

  • 修复SD卡上的根文件系统(以及其他文件系统,例如属于Debian的文件系统),如果有单独的主分区。

  • 对每个文件系统运行以下命令行(我这里假设是ext4,如果使用其他文件系统请修改),

    sudo e2fsck -f /dev/sdxn
    

    其中 x 是 SD 卡的设备盘符,n 是分区号,例如/dev/sdb2


也有可能是 Windows 通过 USB 损坏了 SD 卡的启动系统。如果连接了卡、启动 Windows 或 Windows 运行某些更新/升级过程时,可能会发生这种情况。

如果是这种情况,您可以通过互联网找到“修复 grub”或“修复启动”的方法。我知道方法对于 Ubuntu,我认为但不确定同样的方法是否适用于 Debian。


请注意,关于损坏的文件系统的第一部分和关于 Windows 损坏启动系统的第二部分描述的是独立的问题。我对您的具体问题了解不够,无法判断哪些问题影响了 SD 卡上的 Debian 系统。

答案3

好吧,我从来没有找到确切的什么我的设置出了问题,但似乎使用 rEFInd (首先在https://wiki.debian.org/GrubEFI重新安装)将解决该问题。 BIOS 无法找到 pendrive 内核,但 rEFInd 启动它没有问题。

我不认为这是一个解决办法,但它作为一种解决方法效果很好。

答案4

您的 Debian 安装程序基本上将您的 SDCard 适配器视为固定磁盘,并将 UEFI 引导加载程序安装在 ESP 分区上。之后,它又做了一件事:它使用efibootmgr命令将引导加载程序注册到 UEFI NVRAM 引导变量中

在拔下适配器之前,一切正常:SDCard 磁盘及其上的引导加载程序已按照 UEFI 引导顺序注册。但显然你的系统的 UEFI 固件有一个功能:启动时,如果它检测到 NVRAM 启动变量条目引用了不存在的磁盘,它会假定不再需要这些条目并将其删除。如果没有 NVRAM 引导变量,UEFI 固件将不再知道/EFI/debian/grubx64.efi在 SDCard 的 ESP 分区上查找。

其他人建议将 UEFI 引导加载程序复制到硬盘。这可以工作,并且允许您从 SDCard 启动...但仅限于该特定系统。

还有另一种解决方案:将 SDCard 插入任何可以访问 GPT 分区磁盘上的 FAT32 分区的系统。您应该能够使用该系统访问 SDCard 上的 ESP 分区,找到EFI该分区根目录中的目录、debian其中的子目录以及grubx64.efi其中的文件。

然后在该目录中创建一个新的子目录EFI,名为boot.然后将子目录grubx64.efi中的文件复制debianboot子目录中。在boot子目录中,将名称更改grubx64.efibootx64.efi

当 64 位 UEFI PC 在可移动磁盘上寻找 UEFI 样式引导加载程序时,/EFI/boot/bootx64.efiFAT32 分区上的这条路径就是它要寻找的路径。当该文件存在时,UEFI BIOS 应将 SDCard 检测为可以 UEFI 样式启动。由于操作系统名称是 UEFI NVRAM 注册的一部分,因此它不会再显示UEFI:debian,但可能会显示为UEFI:<model of the SDcard>或类似的名称。现在,您的 SD 卡应该可以再次启动,不仅可以在一台特定的计算机上启动,还可以在任何允许从可移动媒体进行 UEFI 式启动的计算机上启动。

相关内容