Skip to content

Commit

Permalink
wip: cr0 task
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed Jan 27, 2024
1 parent 1446fba commit ce87da3
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions docs/labs/0x01/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ SECTIONS {

### 加载相关文件

1. 加载配置文件:使用配置文件描述内核栈大小、内核栈地址等内容。
1. 加载配置文件:加载配置文件,解析其中的内核栈大小、内核栈地址等内容。
2. 加载内核 ELF:根据配置文件中的信息,加载内核 ELF 文件到内存中,并将其加载为 `ElfFile` 以便进行后续的操作。

为了方便你的实现,在 `pkg/boot/src/fs.rs` 中,提供了一些函数可供调用,对于一个正常的文件读取流程,你可以参考如下代码:
Expand Down Expand Up @@ -149,9 +149,11 @@ unsafe {
}
```

为了进行后续读取并映射内核 ELF 文件的操作,你需要使用 `Cr0` 寄存器禁用根页表的写保护,以便进行后续的内存映射操作。

### 映射内核文件

在成功读取内核 ELF 文件并禁用根页表的写保护后,你需要将内核的代码段、数据段、BSS 段等映射到虚拟地址空间中。你可以参考和使用 `pkg/elf/src/lib.rs` 中的相关函数进行映射工作。
在成功加载内核,并禁用根页表写保护后,需要将内核的代码段、数据段、BSS 段等映射到虚拟地址空间中。你可以参考和使用 `pkg/elf/src/lib.rs` 中的相关函数进行映射工作。

!!! tip "一些提示"

Expand Down

0 comments on commit ce87da3

Please sign in to comment.