+## 编译与构建
+
+构建该项目需要满足以下条件:
+
++ gcc (目标平台: i686-elf)
++ binutils
++ make
++ xorriso
++ grub-mkrescue
+
+**注意:gcc不能是本机自带的,必须要从源码编译,并配置目标平台为:`i686-elf`,以进行交叉编译。配置过程可参考[附录二:编译gcc作为交叉编译器](#appendix2)。**
+
+假若条件满足,那么可以直接执行`make all`进行构建,完成后可在生成的`build`目录下找到可引导的iso。
+
+本项目支持的make命令:
+| 命令 | 用途 |
+|---|---|
+| `make all` | 构建镜像(`-O2`) |
+| `make all-debug` | 构建适合调试用的镜像(`-Og`) |
+| `make run` | 使用QEMU运行build目录下的镜像|
+| `make debug-qemu` | 构建并使用QEMU进行调试 |
+| `make debug-bochs` | 构建并使用Bochs进行调试 |
+| `make debug-qemu-vscode` | 用于vscode整合 |
+| `make clean` | 删除build目录 |
+
+## 运行以及Issue
+
+运行该操作系统需要一个虚拟磁盘镜像,可以使用如下命令快速创建一个:
+
+```bash
+qemu-img create -f vdi machine/disk1.vdi 128M
+```
+
+如果你想要使用别的磁盘镜像,需要修改`configs/make-debug-tool`
+
+找到这一行:
+```
+-drive id=disk,file="machine/disk0.vdi",if=none \
+```
+
+然后把`machine/disk0.vdi`替换成你的磁盘路径。
+
+有很多办法去创建一个虚拟磁盘,比如[qemu-img](https://qemu-project.gitlab.io/qemu/system/images.html)。
+
+在大多数情况下,我都会尽量保证本机运行无误后,push到仓库中。同时,该系统是经过本机测试,能够在Bochs,QEMU (`= 7.0`),VirtualBox下正常的运行(暂时没试过真机)。如果发现在使用`make all`之后,虚拟机中运行报错,则一般是编译器优化问题。这个问题笔者一般很快就会修复,如果你使用别的版本的gcc(笔者版本11.2),出现了此问题,欢迎提issue。请参考[附录3:Issue的提交](#appendix3)
+
+下面列出一些可能会出现的问题。
+
+#### 问题#1: QEMU下8042控制器提示找不到。
+
+这是QEMU配置ACPI时的一个bug,在7.0.0版中修复了。
+
+#### 问题#2:多进程运行时,偶尔会出现General Protection错误。
+
+这很大概率是出现了竞态条件。虽然是相当不可能的。但如果出现了,还是请提issue。
+
+#### 问题#3:Bochs运行时,提示找不到AHCI控制器
+
+正常,**因为Bochs不支持SATA**。请使用QEMU或VirtualBox。
+
+#### 问题#4:键盘的上下方向键(用于滚屏)在VirtualBox下有时不好使
+
+可以试试`Shift+<方向键>`,这个问题的解决需要重写键盘驱动的状态机。我会找时间去做,毕竟这不是燃眉之急。
+