![在 U 盘上安装 UEFI 的 Debian 在被删除一次后不想启动](https://linux22.com/image/149750/%E5%9C%A8%20U%20%E7%9B%98%E4%B8%8A%E5%AE%89%E8%A3%85%20UEFI%20%E7%9A%84%20Debian%20%E5%9C%A8%E8%A2%AB%E5%88%A0%E9%99%A4%E4%B8%80%E6%AC%A1%E5%90%8E%E4%B8%8D%E6%83%B3%E5%90%AF%E5%8A%A8.png)
我曾经在这里读到,直接在随身碟上安装 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
中的文件复制debian
到boot
子目录中。在boot
子目录中,将名称更改grubx64.efi
为bootx64.efi
。
当 64 位 UEFI PC 在可移动磁盘上寻找 UEFI 样式引导加载程序时,/EFI/boot/bootx64.efi
FAT32 分区上的这条路径就是它要寻找的路径。当该文件存在时,UEFI BIOS 应将 SDCard 检测为可以 UEFI 样式启动。由于操作系统名称是 UEFI NVRAM 注册的一部分,因此它不会再显示UEFI:debian
,但可能会显示为UEFI:<model of the SDcard>
或类似的名称。现在,您的 SD 卡应该可以再次启动,不仅可以在一台特定的计算机上启动,还可以在任何允许从可移动媒体进行 UEFI 式启动的计算机上启动。