如何从 Linux 运行引导加载程序?

Ber*_*ITS 7 linux boot-loader

我想从 Linux 重新启动到另一个系统(满足我当前需要的可启动 CD)。
我不想修改当前的引导加载程序,也不想修改 BIOS 设置。

某些 Linux CD 可以从 Windows 运行(Windows 停止,而 Linux 从 CD 运行)。
我怎样才能从 Linux 做同样的事情?

小智 8

您可以grub4dos使用kexec

    kexec -l grub.exe
    kexec -e
Run Code Online (Sandbox Code Playgroud)

然后 Grub4dos 可以从 CD 启动:

    cdrom --init
    cdrom --hook
    chainloader (cd0)
    boot
Run Code Online (Sandbox Code Playgroud)

片段来自Grub4dos 教程


Law*_*ceC 7

您也许可以使用kexec.

是的,kexec旨在引导内核,但没有什么能阻止您kexec访问任何您想要的二进制文件(一个“静态链接”二进制文件,它不依赖于库或现有的运行操作系统,旨在在预启动条件下运行),无论引导加载程序甚至 memtest86 - 该页面讨论了您可能陷入的一些陷阱。例如,如果它是文本模式引导加载程序,您应该在发出kexec.

如果您使用的是 Debian kexec-tools,那么在发出kexec命令之前,它会执行所有正常的关闭步骤,包括切换回文本模式。

什么kexec也不会做的是引导磁盘或磁盘映像,但你可以从CD中提取引导程序,并把它传递给KEXEC。如果启动 CD 在驱动器中,我不明白为什么它不起作用,但我还没有尝试过。

在 RAM 中解压 .iso 并让 .iso 的引导加载程序从中运行,而引导加载程序不知道这种情况在技术上是可行的,但非常困难。我不知道有任何实用程序能够做到这一点,也不相信任何实用程序存在。

  • `kexec` 旨在加载 Linux 内核。我不相信它能够加载任何其他东西。 (2认同)