grub 可以将驱动器/分区列入白名单或黑名单吗?
使用案例:主驱动器有缺陷,安装(实时 USB)发行版至第二个驱动器。
现在我想配置 grub 来从第二个驱动器中的分区启动。
问题是grub-install
读取有缺陷的第一个驱动器时会持续挂起。我需要告诉 grub 忽略第一个驱动器,只对第二个驱动器(以及任何其他驱动器)进行 os-probe。
因此,简单地禁用 os-probe 并不是有效的补救措施。
由于各种原因,我不想移除第一个驱动器,包括笔记本电脑的保修和这种救援情况下的时间限制。
社论:尽管我在 Google 上搜索了几天,但我还是找不到如何做到这一点。我认为驱动器故障是一种相当常见的情况——足以使无法将分区列入黑名单成为一个错误。
顺便说一句,解决方法是持续监控终端中的进程及其参数中pkill
的任何作业/dev/sda
。这很快就变得令人厌烦,在 1TB 驱动器上有 20 个分区的情况下花了一个多小时。新驱动器是 2TB,将有几十个分区。
答案1
我可以想到几种方法来实现您想要的结果,但并不完全符合您的预期。具体来说:
- 手动配置 GRUB 2——您可以手动维护其配置文件,而不必依赖 GRUB 2 的配置脚本。这篇文章是我在 2010 年写的(在我了解配置脚本的范围之前)涵盖了基础知识。这个 Arch Linux 页面还提供了一些您可以纳入手动 GRUB 2 配置文件中的示例。
- 使用另一个引导加载程序-- GRUB 2 不是 Linux 的唯一引导加载程序。如果您在 BIOS/CSM/legacy 模式下启动,则可以使用 GRUB Legacy、LILO 或 SYSLINUX。如果您在 EFI/UEFI 模式下启动,则可以使用经过大量修补的 GRUB Legacy、ELILO、SYSLINUX、EFI 存根加载程序、rEFInd 或 gummiboot/systemd-boot。(参见我的这个页面有关 EFI 选项的更多信息。)配置细节在不同的引导加载程序之间差别很大,但大多数都需要一定程度的手动配置,因此没有 GRUB 2 的复杂配置脚本。需要注意的是:如果您使用非 Linux 操作系统进行双引导,ELILO、SYSLINUX 和 EFI 存根加载程序不太可能完成可接受的工作,至少不能单独完成。
当然,大多数这些选项都需要进行比使用原版 GRUB 2 及其配置脚本所需的更多手动配置。例外是 rEFInd,它会在启动时自动扫描磁盘。根据主磁盘问题的性质,rEFInd 可能会或可能不会受到 GRUB 2 问题的影响。当然,rEFInd 需要 EFI 固件,因此如果您的计算机只有 BIOS,那么它不是一个可行的解决方案。
由于 GRUB 2 是开源的,您几乎肯定可以破解其配置脚本以忽略问题磁盘;但恐怕我不知道该怎么做——至少,如果不花很长时间研究相关源代码的话。不过,如果您有足够的动力,这可能是另一种选择。