OS实验xv6 6.S081 开坑
终于把xv6 2019 6.S081做完了,网络部分没有写,因为有计网实验了。怎么说呢,xv6的坑有点多,能做完多亏了:和我同学ljj交流,参考RedemptionC老哥的博客(他写的非常详细,遗憾的是,他好像没有写mmap),再者就是参考这位老哥的做法(没有源码,写得不是特别详细,不过有借鉴作用,mmap就是借鉴了他的思想)……废话不多说了,直接开始。
实验指导
- 首推RedemptionC的博客
- 这位老哥的个人博客
- xv6 6.S081官网(后面的实验都要参考官网,他会给你一些Hints)
实验建议
为了提高成就感,一定要先阅读xv6官方的实验指导!!!不要畏惧英文。xv6给的Hints是非常重要的。 另外,为了提高检索速度,推荐科学上网。
实验环境配置说明
-
安装VMware
-
安装Ubuntu,我安装的是Ubuntu20.04,不过都无所谓了。首先下载一个Ubuntu20.04镜像文件,然后跟着百度百科走吧
-
下载VMware-Tools,增加使用体验。一般来说,安装完Ubuntu后VMware会自动提示你。如果想重新安装,则点击下图所示的地方即可。下载完毕后,跟着这位大哥做吧。(安装之后,即可拖拽文件了)
-
配置xv6。右键桌面打开terminal,键入如下命令(以下步骤也可参考xv6官方文档)
#获取工具链 git clone --recursive https://github.com/riscv/riscv-gnu-toolchain #安装必要依赖 sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev #编译工具链 cd riscv-gnu-toolchain ./configure --prefix=/usr/local sudo make -j$(nproc) cd .. #下载并解压qemu wget https://download.qemu.org/qemu-4.1.0.tar.xz tar xf qemu-4.1.0.tar.xz #编译qemu cd qemu-4.1.0 ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu" make -j$(nproc) sudo make install cd ..
接下来,检查是否安装成功:
$ riscv64-unknown-elf-gcc --version > riscv64-unknown-elf-gcc (GCC) 10.1.0 $ qemu-system-riscv64 --version > QEMU emulator version 4.1.0
安装成功后,即可下载XV6源码
#下载xv6源码(不一定从HITSZ这里获取) git clone https://github.com/HITSZ-SYSTEMS/xv6-riscv-fall19.git cd xv6-riscv-fall19 make qemu
或
#下载xv6源码 git clone git://github.com/mit-pdos/xv6-riscv-fall19.git cd xv6-riscv-fall19 make qemu
当看到init:start sh时,你便配置成功了
-
配置VSCode,以便远程连接Ubuntu。
#在Ubuntu上安装必要依赖 sudo apt-install openssh-server
5.1 在VSCode上安装Remote-SSH插件
5.2 识别Ubuntu的ip和host,用一种很简单的方法即可,首先查看你的ternimal前缀,例如我的是deadpool@deadpool-virtual-machine。
5.3 利用VSCode连接
键入回车即可 -
进入xv6-riscv-fall19根目录,在VSCode的terminal上运行make qemu,运行成功
注意,按ctrl+a后过一段时间再按x即可退出qemu,这个时间不长也不短,自己把控
结束
配环境是老大难的问题。万事开头难,有了这样一段经历后,便能基本入门linux了。