xv6实验学习
缘起,看了网上的操作系统课,大家都推荐xv6操作系统,因此想要使用MIT的xv6实验用来学习操作系统课程。
1 环境安装
环境安装是一个老大难的问题,20230621晚上开始安装 ,一直折腾到接近凌晨1点,仍然没有安装成功,第二天上午通过搜寻多个博客,最终安装成功。 遇到的两个问题比较棘手,一是使用apt install安装qemu失败,换成源码安装;二是安装riscv gdb,为了使用gdb调试。
基础环境准备
我的系统是Ubuntu 18.04
1 qemu(硬件模拟器): 在x86环境下模拟risc指令集
2 riscv-gnu-toolchain 编译器
3 xv6源码
1.1 第一个坑
使用apt install方式安装的qemu,没有qemu-riscv64这个环境 采用的方式,
在知乎搜索专栏,https://zhuanlan.zhihu.com/p/614193704
下载RISC-V工具链,没有下载源码编译,而是别人已经封装好的库
1.2 qemu源码编译
下载的是 qemu-7.2.0
cd qemu-7.2.0
执行下面的源码编译命令
./configure
make -j$(nproc)
sudo make install
编译完成之后qemu 安装包很大
6.7G ./qemu-7.2.0
可以清理qemu生成的build文件夹
cd qemu/build
make clean
1.3 安装xv6
在MIT课程的官网下载 git仓库
https://github.com/mit-pdos/xv6-riscv/blob/riscv/README
2 运行xv6
2.1 运行失败
本来想按照北大自学课程中的2020实验课来的
https://github.com/PKUFlyingPig/MIT6.S081-2020fall
结果,进入运行卡死不动。 通过查阅csdn博客发现,看了评论换了最新的2022版本的git仓库就可以了。
2.2 gdb调试xv6设置
这里安装riscv64-unknown-elf-gdb,也花费了很多一番功夫。
wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
tar -xzvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
mv riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14 riscv64-unknown-elf-toolchain
这一版本的预编译的gdb没有tui,不能使用layout split
可以选择
https://d2pn104n81t9m2.cloudfront.net/products/tools/
接着编辑~/.bashrc,加入下面的环境变变量
export PATH=~/Soft/riscv64-unknown-elf-toolchain/bin:$PATH
3 串联知识
通过这个xv6内核的学习,想要了解
- gdb的调试
- linux操作系统的启动过程
- xv6是如何调用第一个进程的。
学习资料
1 将MIT的课程进行了翻译,https://www.zhihu.com/column/c_1294282919087964160
参考
- https://blog.csdn.net/frost5/article/details/114933307
- [XV6操作系统代码阅读心得] (https://hehao98.github.io/posts/2019/03/xv6-1/)
- https://www.dingmos.com/index.php/category/MIT6-828/
- 安装riscv64-unknown-elf-gdb [https://blog.csdn.net/m0_43422086/article/details/125276723]
- 使用gdb调试xv6代码 [https://blog.csdn.net/yihuajack/article/details/116571913]
- xv6工具[https://1790865014.gitbook.io/ucore-step-by-step/intro/3_startdash]
- riscv预编译包[https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html]
- 实验记录[https://www.515code.com/posts/r1eiw7kt/]
- 哈工大xv6实验课 [http://hitsz-cslab.gitee.io/os-labs/lab4/part1/]