![如何从 Linux 运行引导加载程序?](https://linux22.com/image/24858/%E5%A6%82%E4%BD%95%E4%BB%8E%20Linux%20%E8%BF%90%E8%A1%8C%E5%BC%95%E5%AF%BC%E5%8A%A0%E8%BD%BD%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我想从 Linux 重新启动到另一个系统(满足我当前需要的可启动 CD)。
我不想修改当前的引导加载程序,也不想修改 BIOS 设置。
某些 Linux CD 可以从 Windows 运行(Windows 停止,Linux 从 CD 运行)。
我怎样才能在 Linux 上做同样的事情?
答案1
您可以grub4dos
使用以下命令运行kexec
:
kexec -l grub.exe
kexec -e
然后 Grub4dos 就可以从 CD 启动:
cdrom --init
cdrom --hook
chainloader (cd0)
boot
片段来自Grub4dos教程。
答案2
你也许可以用 来操纵一些东西kexec
。
是的,kexec
旨在引导内核,但没有什么可以阻止您“kexec
运行”到您想要的任何二进制文件(“静态链接”二进制文件,不依赖于库或现有正在运行的操作系统,并且旨在在预引导条件下运行),无论是引导加载程序或甚至memtest86- 该页面讨论了您可能陷入的一些陷阱。例如,如果它是文本模式引导加载程序,您应该在发出 之前切换回文本模式kexec
。
如果您使用 Debiankexec-tools
或其他几乎执行所有正常关闭步骤的程序,包括在发出命令之前切换回文本模式kexec
。
无法kexec
启动磁盘或磁盘映像,但您可以从 CD 中提取引导加载程序并将其传递给 kexec。如果启动 CD 在驱动器中,我不明白为什么它不起作用,但我还没有尝试过。
在 RAM 中解压 .iso 并让 .iso 的引导加载程序在引导加载程序不知道情况的情况下从中运行在技术上是可行的,但极其困难。我不知道有任何实用程序能够做到这一点,也不相信有任何实用程序存在。