UEFI-rs:用Rust编写UEFI应用程序

2020-10-27 00:57:29

UEFI是BIOS的继任者。它为加载程序、虚拟机管理程序和其他低级应用程序提供早期引导环境。虽然它最初是特定于x86的,但已经在其他平台上采用,比如ARM。

其目标是为UEFI接口提供安全和高性能的包装器,并允许开发人员编写惯用的Rust代码。

UEFI(TOP DIRECTORY):定义标准的UEFI表/接口,目标是保持非离子化并安全地包装大多数接口。

EXTS:为常见模式提供实用功能的扩展。需要分配板条箱(启用分配可选功能或您自己的自定义分配器)。

此机箱使您可以轻松地开始使用UEFI构建简单的应用程序。但是,您应该了解一些限制:

全局记录器/分配器只能在每个二进制文件中设置一次。这在刚开始时很有用,但是如果您正在构建一个真实的操作系统,您将需要编写您自己的特定内核记录器和内存分配器。

为了支持高级特性,如高半内核和链接器脚本,您需要将内核构建为ELF二进制文件。

换句话说,使用这个机箱的最好方法是创建一个包装实际内核的小二进制文件,然后使用UEFI';方便的函数从磁盘加载和引导它。

这类似于Linux内核的EFI存根所做的事情:压缩内核是ELF二进制文件,它几乎不知道它是如何引导的,引导加载程序使用UEFI为它设置环境。

这个板条箱的文档是相当简单的,我们鼓励您参考UEFI规范以获取详细信息。

我们欢迎问题和拉请求!有关如何设置开发环境和如何添加新协议的说明,请查看CONTRIBUTING.md。

此存储库中的代码受Mozilla Public License 2许可。该许可允许您在专有程序中使用机箱,但对文件的任何修改都必须是开源的。