用Rust写一个支持UEFI的操作系统 (2)

所有的代码都可以从我的GitHub repo获得

什么是操作系统

在现代语境下,OS这个单词可能代表很多东西。

OS可以用来命名一个内核,例如Linux,Mach(macOS的内核)等。OS也可以用来命名一个内核和一组用户空间程序,例如GNU/Linux,macOS等。

在本系列文章中,我们主要关注OS内核的部分。那么OS的内核主要做什么呢?

OS内核的主要作用是提供硬件资源的虚拟化抽象,并为用户空间程序提供一组API来使用这些资源。

在这个定义中,OS内核应该:

  1. 管理计算(CPU,GPU,应用程序特定加速器)和存储资源(内存,磁盘等),并将它们分配给用户空间程序。
  2. 提供一个统一的接口来操作外设(键盘,鼠标,网络等)。

所以,在这篇文章中,我们会尝试通过UEFI接口检测设备的核心硬件资源:

  1. CPU
  2. 内存布局
  3. 图形

用Rust写一个支持UEFI的操作系统 (1)

所有的代码都可以从我的GitHub repo获得

该用UEFI写操作系统教程了

有很多操作系统教程和 YouTube 视频。然而,它们中的大多数都是为 BIOS 模式启动编写的。

然而,现在已经2023年了,离Intel开源UEFI的实现已经整整19年了。同时,Intel正在抛弃传统的x86_64架构,转向只支持64位的x86_64s. 当然,它只支持UEFI(UEFI CSM将被删除)。

UEFI是一个更安全、更强大的引导系统。几乎所有现代操作系统都是通过UEFI引导的。似乎没有理由继续为BIOS编写操作系统教程。我们不再需要关心如何切换到长模式,或者启用分页之类的烦人细节。

我在Google上搜索后发现,关于在UEFI中编写操作系统的信息非常有限。这些信息分散在不同的地方,很难找到完整的教程。因此,我决定写一系列关于在UEFI中编写操作系统的教程。

Hello, world

几年前的时候,我自己在一个VPS主机上部署了一个Wordpress的实例,用来写博客。

最近,我决定重新开始技术写作,一直在物色合适的博客平台。最后,我决定使用静态网站生成器来做这件事情,在本文中,我会说一下原因。