【MIT 6.S081】实验环境配置
麻省理工学院 PDOS 实验室开设的本科生的操作系统课程,基于 RISC-V 开发了一个教学用操作系统 xv6,前身是 MIT 著名的课程 6.828
资源汇总
2021年秋MIT 6.S081官网:教材与lab都可以查到
linux系统配置
我用的是Windows的子系统WSL,子系统是Ubuntu-20.04,配置可以参考我的博客:WSL激活安装与迁移盘操作,用虚拟机之类的也是可以的,此处省略
XV6lab系统
环境配置
若是刚启动的系统,别忘了进行
1 | sudo apt-get update |
按官网的方法WSL只需一条指令:
1 | sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu |
从Github下载
我clone的是2021版的lab
1 | git clone git://g.csail.mit.edu/xv6-labs-2021 |
切换到文件夹,并切换到lab分支
1 | cd xv6-labs-2021 |
编译qemu
接上面,输入:
1 | make qemu |
结果应是很长的一大段,后面一段意思很明确,这样就算正确启动了:
退出:ctrl a + x
VSCode配置
为了能在WSL中使用VSCode编写代码(远程连接),以及使用VSCode debug(gdb配置)
VSCode远程连接WSL
需要安装VSCode里的一个插件:
安装完成后,目录到在先前的xv6-labs-2021
文件夹,输入code .
,注意点前面有个空格,意思是在这个文件夹启动VSCode,如果是第一次启动会有一些简单的安装,完成后再次输入code .
,便在windows系统下启动了一个VSCode窗口,并在远程资源管理器可以看到成功连接的界面:
如果遇到code指令不存在的问题,指令没输错的话,windows下也是会报这个错的,可以查找网上资料如何解决code
指令不存在,应该是VSCode的旧版本缺一个指令,新版本/旧版本安装指令后,没有添加到环境变量(安装的文件夹下的bin
文件夹)
VSCode配置qemu的gdb调试
普通gdb调试
在目录下执行以下指令:
1 | make qemu-gdb |
另开一个终端,输入以下指令:
1 | gdb-multiarch kernel/kernel |
结果会出现一大段字和gdb的界面,字里有一个warning,我不知道是否需要,但是网友的教程把它修改掉了,执行以下指令(退出qemu和gdb后),其中xxx
是自己文件夹的路径:
1 | echo "add-auto-load-safe-path xxx/xv6-labs-2021/.gdbinit" >> "xxx/.gdbinit" |
配置VSCode
远程启动VSCode后,添加插件:
创建.vscode
文件夹,添加文件launch.json
:
1 | { |
其中miDebuggerServerAddress
一项的内容,在目录下有一个.gdbinit
文件,里面有"target remote …",打开这个文件复制来地址后,将这一行注释掉(添加@REM
):
1 | @REM target remote 127.0.0.1:26000 |
再添加文件tasks.json
:
1 | { |
这样就可以在VSCode里运行qemu的gdb调试了!