重新启动 Windows 8 并从 USB 闪存驱动器启动的代码

Posted

技术标签:

【中文标题】重新启动 Windows 8 并从 USB 闪存驱动器启动的代码【英文标题】:Code to restart Windows 8 and boot from USB flashdrive 【发布时间】:2015-07-27 15:52:48 【问题描述】:

我正在开发一个在实时 USB Linux 上运行的系统。为了方便用户使用,我们需要开发一个 Windows 可执行文件。执行时,此可执行文件应在 Windows 上检测到我们的 USB 记忆棒并做好准备,以便下次启动时计算机将从它启动。

我们想用这种行为重现这个过程 (https://askleo.com/how_do_i_boot_from_cddvdusb_in_windows_8/):

但我们不想强制用户重新按 shift 键并选择“使用设备”,而是希望自动执行此操作。

我进行了很多搜索,发现了有关 BCDedit 的信息。里面有一个命令 /bootsequence (https://technet.microsoft.com/en-us/magazine/ff700231.aspx) 说明:

BCD 编辑使用 /bootsequence 命令可以轻松完成此操作。

在提升的命令提示符下,输入以下命令: bcdedit /bootsequence 975a8204-9658-11dd-993e-9aea7965e9da

只需将标识符(在本例中为 975a8204-9658-11dd-993e-9aea7965e9da)更改为您要在重新启动计算机时启动的操作系统的标识符。

但是,我没有发现如何检测 Linux 上的引导分区(/boot 位于闪存驱动器内的 ext2 分区中)并使用 /bootsequence 从它引导。

关于如何做到这一点的任何想法/API 或指南?

我真的很想找到并解决这个问题。

问候,

【问题讨论】:

【参考方案1】:

您将很难从 Windows 引导加载程序引导 Linux。当 Bios 选择引导加载程序时,Linux USB 驱动器将最容易启动。您可以通过以编程方式修改 BIOS 来实现您正在尝试的目标。挑战在于您必须为每个 BIOS 制造商提供代码,而且并非所有制造商都支持从其菜单之外进行编辑。

【讨论】:

以上是关于重新启动 Windows 8 并从 USB 闪存驱动器启动的代码的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu无法开机

Rufus——启动盘创建工具(usb启动盘)

USB闪存驱动器制造商序列号

在 USB 上自动启动应用程序(通过自动运行?)

小米笔记本怎样重装原装系统

带有自定义 Grub 或自定义加载程序的多启动闪存驱动器(制作程序)