新旧世界固件的主要区别是在内存的寻址上,新固件直接用物理地址,老固件要做地址转换。外在的表现在“引导服务”不兼容,导致在装载OS加载器的时候,比如grub或者efi-stub上,要做相应的适配。但这期间固件提供的“运行服务”所保存的各类ACPI信息表格,变化不大。os加载器把参数传给内核,内核能获取ACPI信息表格的地址,内核能正确访问这些表格信息,就可以运行起来。
linux上游,有段时间在磨efi-stub,用这个linux自带的os加载器引导上游内核,同时grub也在适配新固件。旧世界的发行版,一般都使用grub这个os加载器,所以只要grub升级,就可以解决新旧内核的加载问题。
内核运行,从”loongarch群“反馈看,在解析ACPI表格上,旧世界新内核和新固件是兼容的,具体改了哪,没代码参考,不好说是改了什么。
7A2000 EVB板新固件,看消息说,提供了”传统模式“,想来在”固件运行时服务“上,内置了转换,可以兼容较早版本的旧世界内核。