为什么我可以在 64 位 ubuntu 中运行 grubinst.exe

为什么我可以在 64 位 ubuntu 中运行 grubinst.exe

grubinst.exe 是一个控制台模式程序,用于将 GRUB4DOS 启动代码安装到 MBR 或分区启动扇区。

我从GRUB4DOS 项目页面grubinst_1.0.1_bin_win.zip,我认为它适用于 32 位 Windows。

但我可以在 64 位 ubuntu 中运行它

$ ./grubinst.exe --version
grubinst version : 1.0.1

答案1

Linux 上有所谓的binfmt支持,允许将任意二进制文件(例如 Windows 可执行文件)执行传递给某些知道如何处理它的 Linux 应用程序(例如 wine)。

此外,bootlace.com 是一个特殊格式的二进制文件,它具有 ELF 标头以及 Linux 和 DOS 代码:ELF(Linux 可执行文件)标头必须放在文件的开头,而 DOS 代码必须从位置 0x100 开始(请记住,COM 不是 PE、NE 或 MZ 可执行文件,它只是一段代码),因此 ELF 标头将 Linux 文件加载器重定向到位于 DOS 之后的 Linux 代码。

答案2

您是否安装了 wine(或类似的东西)?那么就可以正常工作。尝试

sudo update-binfmts --display

答案3

也许是因为你已经安装了 wine。

Wine 运行后台守护程序,以允许 Windows .exe 文件以与普通 Linux 程序相同的方式运行。

然而,您可能会发现该程序仍然无法写入 MBR,这仅仅是因为 wine 没有实现这种功能。

相关内容