如何为Mac系统编写自定义引导程序



我在汇编中写了一个小引导加载程序,它使用了BIOS中断,并且在我的PC上效果很好。我的问题是,是否有可能使其在Mac/Apple系统上使用。我知道苹果在这种意义上不使用BIOS,并且他们将很多事情锁定了。但是,可以在Mac上使用Live Ubuntu Stick,那么可以从Mac上的启动程序运行汇编程序吗?如果是,您知道以前做过什么的起点或参考吗?

非常感谢!

我的问题是,是否有可能使其在Mac/Apple Systems上使用。

总有可能。例如,某人可能会将系统模拟器(例如Bochs,Qemu(移植到UEFI(使其看起来像UEFI应用程序(,能够模拟具有BIOS的完全不同的计算机。

实际上,您需要在UEFI的新启动加载程序上写入。

请注意,您还应该假设UEFI是"遗产行李"方案的第一步(并假设Intel的" 2020年以后没有BIOS,甚至不仅仅是兼容模块"声明,因为Intel计划撕裂芯片组等等"传统行李";这将阻止其他人写的固件继续支持BIOS(。对于一个简单的示例(已经存在(;Apple Machines没有PS/2键盘控制器芯片,也没有"旧版PS/2仿真为USB设备"支持,并且试图访问PS/2键盘控制器芯片可以导致计算机锁定。<<<<<<<<<<

主要是;有一堆假设(例如,关于存储映射,以及诸如A20大门,PIC芯片,PIT芯片,PS/2键盘控制器," BIOS兼容"视频卡ROM,VGA硬件寄存器等的事物的存在(对于UEFI而言是不正确的,或者对UEFI的未来不适合。因此,您还应该审核启动装载机靴子的操作系统,以识别和消除所有(可能是错误的("旧假设"(否则,即使您拥有为UEFI设计的完美良好的启动装载机,引导后可能很快就会失败(。

Mac固件不提供旧的BIOS模式,afaik。

使用UEFI"系统调用"而不是int 0x10,您必须将代码重写为32或64位UEFI应用程序,等等。当然,您仍然可以将其写入汇编,并且它仍将在CPU上本地运行。

组装不仅意味着使用BIOS调用的16位真实模式。

BIOS int-无论哪种接口也已经在PC上已过时,但是PC固件通常具有向后的compat模式,您都可以启用将CPU重新切换到真实模式并提供这些软件接口。(在启动过程中,固件本身可能在启动过程中切换到32或64位模式,然后再从磁盘加载512字节的启动程序。(

这就是您在PC上运行旧版BIOS代码时发生的事情。


根据https://www.ubuntu.com/download/desktop,常规X86-64 Ubuntu Bootable Disk Image在PC和Mac上工作,大概是使用UEFI。


或可能不是,根据http://www.rodsbooks.com/ubuntu-efi/mac上的启动ubuntu,通常会通过Mac firmare 兼容性支持模块(CSM(Mac上的仿真。(显然,对于启动窗口的某些方式也很有用,这就是为什么它首先存在的原因。(但是,该页面似乎已过时;Windows通常在现代PC上带有UEFI的靴子。

最新更新