不使用键盘选择启动管理器中的条目

不使用键盘选择启动管理器中的条目

我的目标说起来很简单:我想在我的 Surface Go 2 上以双启动方式安装 Windows 和 Chrome OS,并且能够在启动管理器中选择条目,而无需使用物理键盘或鼠标(因为我经常不带它们)。

由于 Surface Go 2 是一款具有触摸功能的 x86 平板电脑,具有三个内置按钮(两个音量按钮和一个电源按钮),这意味着启动管理器应该让我通过触摸屏或 vol+/vol- 硬件按钮选择启动项。

必须注意的是,Chrome OS(或者更具体地说,早午餐)需要加载 grub(根据 brunch 开发者的建议),因此这个假设的启动管理器需要链式加载 grub(以加载 Chrome OS)和 Windows 启动管理器(以加载 Windows)。

以下是我尝试过的启动管理器列表以及我尝试用它们做什么。不幸的是,没有什么效果。

GRUB:

  • 据我所知,没有配置选项或模块可以为 grub 提供触摸支持。
  • grub 默认忽略硬件按钮。我尝试为 grub 制作自定义键盘布局,将 vol+/vol- 按钮映射到向上/向下键(如所述这里)不幸的是,每当我设置GRUB_TERMINAL_INPUT在键盘,我的 Surface 在启动时无限期地冻结。
  • 显然,在某些 Surface 设备中,有一个固件设置,可以在启动阶段启用触摸式虚拟键盘(相关 reddit 帖子)。遗憾的是,Go 2 的固件中缺少此设置。

重新索引:

  • 我尝试取消注释启用触摸refind.conf 文件中的设置,但 rEFInd 似乎无法加载正确的触摸屏驱动程序。相关 SourceForge 讨论
  • rEFInd 忽略硬件按钮。在 SourceForge 上的讨论中,rEFInd 开发人员建议修改 rEFInd 源代码中的特定 C 函数。我尝试在 switch 语句中添加一个默认部分来处理用户按下的按钮,并使得所选的启动条目在我按下任何键时都会向右滚动。但是,rEFInd 似乎无法识别硬件按钮,这让我相信这是由缺少驱动程序造成的。

Windows Metro 启动管理器 (今后 WBM)

  • 这个看起来最有前途,因为它开箱即用,支持触摸。我尝试使用 bcdedit 命令添加一个空的启动项,确实我成功地用手指点击它来选择它。
  • 因为它显然已经能够加载 Windows,所以我只需要它链式加载 grub 即可加载 Chrome OS。
  • 不幸的是,当 UEFI 模式处于活动状态时,WBM 似乎无法链式加载非 Windows 操作系统(来源)。如果我使用 bcdedit 添加启动项并使其加载 EFI grub 文件,当我选择此项时,启动管理器会抛出错误 0xc000007b。
  • 我没有让启动项加载 EFI grub 文件,而是尝试在传统模式下安装 grub,并让启动项将其作为启动扇区加载(如上所述这里这里)。它仍然会抛出错误 0xc000007b。
  • 在网上搜索,我发现了这个论坛主题。看来 WBM 只能加载类型为 BOOT_APPLICATION 的 EFI 映像,而大多数 EFI 文件(包括 grub)都是 EFI_APPLICATION。在该主题的第二页,有人发布了一个模拟 BOOT_APPLICATION EFI 程序的代码示例,该程序只是将几行打印到串行控制台,据说它可以由 WBM 链式加载。我曾考虑制作一个类似的 EFI 程序,该程序反过来链式加载 EFI grub 文件,但不幸的是,它很快就超出了我的技术和编码知识范围,我甚至不确定这在技术上是否可行。
  • 最后,我注意到我可以从 WBM 访问 Windows 恢复映像。这将有效地使我能够通过触摸屏从 EFI 启动管理器(而不是 WBM)的条目启动。但是,我发现这种方法非常笨拙,而且由于只有当至少有两个启动条目时 WBM 才会出现,所以我必须保留一个损坏的 WBM 条目。我宁愿找到一种更优雅的方法。

我还应该尝试其他什么吗,或者我所尝试实现的目标是否不可能实现?

相关内容