主要观点:通过一系列 KVM API 和相关设置,让 hypervisor 引导 Linux 内核进入包含虚拟init
的基本用户空间,涵盖长模式、分页、Linux 引导协议等主题,包括设置各种寄存器、页表等,还构建了一个简单的内核并进行测试,后续将覆盖 VirtIO 设备等内容。
关键信息:
- 详细介绍了 Linux 引导协议中内存布局等内容。
- 阐述了分页的基本设置,包括页表结构、地址转换等。
- 说明了段寄存器和长模式的设置要求及代码实现。
- 编写了 64 位的 hello world 程序进行测试。
- 实现了加载内核镜像的相关操作,包括修改设置头字段等。
- 构建了用于测试的 tiny 内核,并添加了虚拟
init
程序。
重要细节: - 内核可从实模式、保护模式、长模式或直接从 UEFI 启动,文中选择长模式。
- 分页设置中通过身份映射页满足内核需求,且提到不同层次页表的结构和作用。
- 段寄存器设置包括代码段和数据段的相关属性及编码方式。
- 加载内核镜像时需处理设置头字段,如 initramfs 地址等。
- 构建 tiny 内核时需启用特定配置选项,且通过虚拟 initramfs 来执行 init 程序。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。