是否可以选择使用硬件开关加载哪个操作系统?

gri*_*tin 6 boot fan grub multi-boot

我正在寻找一种比使用 grub 提供的菜单更优雅的方式来选择要启动的操作系统,而且我认为在具有两种状态(例如 Ubuntu 和 Windows)的情况下进行切换会很巧妙,这决定了哪个将加载操作系统。我一直在思考,在我看来,您应该能够通过将开关连接到 PWM 发电机并将发电机连接到风扇速度输入引脚来解决它。然后从 grub 读取风扇速度,并进行条件测试以确定要加载的操作系统。

在伪代码中:

if (fan.speed > threshold) then
  load Windows;
else
  load Ubuntu;
end
Run Code Online (Sandbox Code Playgroud)

因此,我的两个问题是:

  1. 您如何使用 grub 测试来确定要启动哪个操作系统?
  2. 如何在启动期间从 grub 读取风扇速度?

当然也欢迎其他解决方案和想法:)

Mah*_*dsi 4

您将需要编写自己的 grub2 模块,与 BIOS 交互以获取原始风扇速度信息,并使用它来解释和处理结果。显然,GRUB 不知道也不关心您的风扇速度,如果不编写一些代码,您将无法在本地完成此操作。

更好的解决方案是将引导加载程序(只是引导加载程序,仅此而已)安装到 USB 记忆棒上。您可以使用 GRUB2 或 BOOTMGR - 这并不重要。

然后将 PC 配置为首先从 USB 加载,当该 U 盘插入 PC 时,它将启动至 Ubuntu;而本地磁盘配置为引导至 Windows。即 USB 的存在与否将决定您的 PC 启动到哪个操作系统。

此时,只需使用一根经过修改的 USB 电缆,并在其中一条 VCC 线路上安装一个开关即可。如果它处于活动状态,USB 记忆棒将出现在 BIOS 中,并且将从 USB 的 GRUB 副本引导到 Ubuntu。如果开关关闭,PC 将从本地磁盘“正常”加载,启动进入 Windows。

当然,您可以随意将 USB 记忆棒、修改后的 USB 电缆和盒子内的 VCC 开关伪装成单个独立单元。它比您的 PWM 想法酷得多,因为您只需将其插入 USB 端口即可开始使用。