1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-26 01:43:29 +04:00
rCore/docs/x86_64.md
Runji Wang c2a80c54f9 x86_64: switch from legacy BIOS to UEFI. use rboot as new bootloader
- remove dependencies: rust-osdev/{bootloader, bootimage}
- remove kernel stack segment
- find a bug: IDT should be initialized after GDT
2019-09-04 10:37:31 +08:00

41 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# x86_64
## 运行
### QEMU
```
make run arch=x86_64 LOG=info
```
使用开源 UEFI 固件实现 [OVMF](https://github.com/tianocore/tianocore.github.io/wiki/OVMF),预编译镜像已包含在 rboot 项目中。
### 真机
```
make build arch=x86_64 LOG=error board=pc graphic=console
```
需要一个支持 UEFI 的启动 U 盘,可使用“老毛桃”“大白菜”等工具制作。
完成后将 `target/release/esp/EFI `文件夹复制到启动 U盘 的 EFI 系统分区ESP中。注意备份
将 U 盘插入电脑,进入 BIOS 设置,关闭安全启动,从 U 盘启动即可。
注:目前真机模式与 QEMU 的区别:
* 文本输出到图形显示,而不是串口
* 用户程序镜像直接链接在内核中,而不是从 AHCI 磁盘读取
## Boot
rCore x86_64 基于 UEFI 标准,使用自己编写的 rBoot 作为 Bootloader。
[rBoot](https://github.com/rcore-os/rboot) 是一个标准的 UEFI OS Loader 程序。它完成以下主要工作:
* 加载 kernel ELF 文件到内存,建立虚拟内存映射。
* 设置图形显示模式
* 启动多核处理器
* 跳转到 ELF 入口点,并传递 BootInfo 信息
更多参考:[uefi-rs 文档](https://github.com/rust-osdev/uefi-rs/blob/master/BUILDING.md)