++ Linux Manual - 用于查询*nix API的一些具体行为。
+
+
+## 附录1:支持的系统调用<a id="appendix1"></a>
+
+### Unix/Linux/POSIX
+1. `sleep(3)`
+1. `wait(2)`
+1. `waitpid(2)`
+1. `fork(2)`
+1. `getpid(2)`
+1. `getppid(2)`
+1. `getpgid(2)`
+1. `setpgid(2)`
+1. `brk(2)`
+1. `sbrk(2)`
+1. `_exit(2)`
+1. `sigreturn(2)`
+1. `sigprocmask(2)`
+1. `signal(2)`
+1. `kill(2)`
+1. `sigpending(2)`
+1. `sigsuspend(2)`
+2. `read(2)`
+2. `write(2)`
+2. `open(2)`
+2. `close(2)`
+2. `mkdir(2)`
+2. `lseek(2)`
+2. `readdir(2)`
+2. `readlink(2)`
+2. `readlinkat(2)`
+2. `rmdir(2)`
+2. `unlink(2)`
+2. `unlinkat(2)`
+2. `link(2)`
+2. `fsync(2)`
+2. `dup(2)`
+2. `dup2(2)`
+2. `symlink(2)`
+2. `chdir(2)`
+2. `fchdir(2)`
+2. `getcwd(2)`
+
+### LunaixOS自有
+
+1. `yield`
+2. `geterrno`
+3. `realpathat`
+
+## 附录2:编译gcc作为交叉编译器<a id="appendix2"></a>
+
+注意,gcc需要从源码构建,并配置为交叉编译器,即目标平台为`i686-elf`。你可以使用本项目提供的[自动化脚本](slides/c0-workspace/gcc-build.sh),这将会涵盖gcc和binutils源码的下载,配置和编译(没什么时间去打磨脚本,目前只知道在笔者的Ubuntu系统上可以运行)。
+
+**推荐**手动编译。以下编译步骤搬运自:https://wiki.osdev.org/GCC_Cross-Compiler
+
+**首先安装构建依赖项:**
+```bash
+sudo apt update &&\
+ apt install -y \
+ build-essential \
+ bison\
+ flex\
+ libgmp3-dev\
+ libmpc-dev\
+ libmpfr-dev\
+ texinfo
+```
+
+**开始编译:**
+1. 获取[gcc](https://ftp.gnu.org/gnu/gcc/)和[binutils](https://ftp.gnu.org/gnu/binutils)源码
+2. 解压,并在同级目录为gcc和binutil新建专门的build文件夹
+
+现在假设你的目录结构如下:
+```
++ folder
+ + gcc-src
+ + binutils-src
+ + gcc-build
+ + binutils-build
+```
+
+3. 确定gcc和binutil安装的位置,并设置环境变量:`export PREFIX=<安装路径>` 然后设置PATH: `export PATH="$PREFIX/bin:$PATH"`
+4. 设置目标平台:`export TARGET=i686-elf`
+5. 进入`binutils-build`进行配置
+```bash
+../binutils-src/configure --target="$TARGET" --prefix="$PREFIX" \
+ --with-sysroot --disable-nls --disable-werror
+```
+然后 `make && make install`
+
+6. 确保上述的`binutils`已经正常安装:执行:`which i686-elf-as`,应该会给出一个位于你安装目录下的路径。
+6. 进入`gcc-build`进行配置
+```bash
+../gcc-src/configure --target="$TARGET" --prefix="$PREFIX" \
+ --disable-nls --enable-languages=c,c++ --without-headers
+```
+然后编译安装(取决性能,大约10~20分钟):
+```bash
+make all-gcc &&\
+ make all-target-libgcc &&\
+ make install-gcc &&\
+ make install-target-libgcc
+```
+8. 验证安装:执行`i686-elf-gcc -dumpmachine`,输出应该为:`i686-elf`
+
+**将新编译好的GCC永久添加到`PATH`环境变量**
+
+虽然这是一个常识性的操作,但考虑到许多人都会忽略这一个额外的步骤,在这里特此做出提示。
+
+要想实现这一点,只需要在shell的配置文件的末尾添加:`export PATH="<上述的安装路径>/bin:$PATH"`。
+
+这个配置文件是取决于你使用的shell,如zsh就是`${HOME}/.zshrc`,bash则是`${HOME}/.bashrc`;或者你嫌麻烦的,懒得区分,你也可以直接修改全局的`/etc/profile`文件,一劳永逸(但不推荐这样做)。
+
+至于其他的情况,由于这个步骤其实在网上是随处可查的,所以就不在这里赘述了。
+
+## 附录3:Issue的提交<a id="appendix3"></a>
+
+由于目前LunaixOS没有一个完善强大的内核追踪功能。假若Lunaix的运行出现任何问题,还请按照以下的描述,在Issue里面提供详细的信息。
+
+最好提供:
++ 可用于复现问题的描述和指引(如Lunaix运行平台的软硬件配置)
++ 错误症状描述
++ (如可能)运行截图
++ 错误消息(如果给出)
++ 寄存器状态的dump
++ (如可能)提供错误发生时,EIP附近的指令(精确到函数)。如果使用`make all-debug`,会提供`build/kdump.txt`,你可以在这里面定位。或者也可以直接`objdump`
++ (如可能)虚拟内存映射信息(QEMU下可使用`info mem`查看)。
\ No newline at end of file