注意:请先看完环境配置(下)后再进行操作
配置xv6的运行环境
安装 GCC/binutils
如果没有提前搭建好运行环境,执行 make qemu
就会报错。
Error: Couldn’t find a riscv64 version of GCC/binutils.
根据报错信息,可以知道我们需要 riscv64 版本的 binutils。使用 apt search
命令搜索相关 packages。
1 | apt search binutils |grep binutils-riscv64 |
找到 3 个相关的 packages.
- binutils-riscv64-linux-gnu
- binutils-riscv64-linux-gnu-dbg
- binutils-riscv64-unknown-elf
使用 apt install
命令安装上面三个 packages。
1 | sudo apt install binutils-riscv64-linux-gnu |
安装成功后,执行 make qemu
命令,提示如下报错。
make: riscv64-unknown-elf-gcc: Command not found
riscv64-unknown-elf-gcc
可以当作是 gcc,但是是 riscv64 版本的。
1 | sudo apt install gcc-10-riscv64-linux-gnu |
安装之后得到 riscv64-linux-gnu-gcc-10
文件,进入 /usr/bin 目录,建立软连接。
1 | sudo ln -s riscv64-linux-gnu-gcc-10 riscv64-unknown-elf-gcc |
链接[xv6] xv6 的运行环境搭建 - 知乎 (zhihu.com)
qemu
按官网所说,下载qemu 5.1.0并解压缩
1 | wget https://download.qemu.org/qemu-5.1.0.tar.xz |
执行一系列指令
1 | cd qemu-5.1.0 |
其中最长的那行命令可能出问题,如果报这个错误:
1 | ERROR: glib-2.48 gthread-2.0 is required to compile QEMU |
解决方法为sudo apt install libglib2.0-dev
还可能报这个错误:
1 | ERROR: pixman >= 0.21.8 not present. |
解决方法为sudo apt install libpixman-1-dev
一切正常的话, 输出的最后是
1 | default devices yes |
xv6操作系统源码
直接clone吧,虽然速度慢,好在文件不大
1 | git clone git://g.csail.mit.edu/xv6-labs-2020 |
你可能会发现clone下来的这个文件夹是空的,别担心,git就是这样的,运行这两条指令
1 | cd xv6-labs-2020 |
文件夹里就有东西了,很神奇吧
链接[6.S081] 刷后总结与环境配置 - 知乎 (zhihu.com)
测试
1 | # 按官方指南手册 安装必须的工具链 |
至此, 实验环境设立完成, 我们成功boot了xv6这个简易操作系统.
本实验中, 因为实现的都是用户侧的函数, 所以比较懒惰的我忽略了不少系统调用的错误返回值检查. 希望大家不要学我.