ArchLinux 搭建 MIT 6.S081 环境
环境搭建
最近打算通过MIT 6.s081深入学习下操作系统,因为我自己本身使用的是ArchLinux,所以就不用通过服务器或者虚拟机的方式搭建环境了,直接在本机终端上运行就行了。其实Arch上环境搭建比较简单,官网就有。
只需要一步就能安装好。
sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-arch-extra
但是好像并不管用,安装完之后,运行make qemu会卡住,具体原因可能是qemu版本太高了吧。这里只需要使用使用pacman安装时不安装qemu-arch-extra就行了。
sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb
然后使用官网的教程安装qemu5.1版本。
下载qemu5.1源码,源码可以随便放。
$ wget https://download.qemu.org/qemu-5.1.0.tar.xz
$ tar xf qemu-5.1.0.tar.xz
编译即可。
$ cd qemu-5.1.0
$ ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
$ make
$ sudo make install
再次进入到xv6项目下运行make qemu应该就行了。
关于项目调试
直接在项目目录下运行make qemu-gdb,然后在开另一个终端进入项目目录运行riscv64-linux-gnu-gdb,不出意外的话应该会有警告。
warning: File "你的项目目录/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
而且想要列出代码也会提示我们没有导入可执行文件

这是因为我们需要连接make qemu-gdb命令运行时所启动的gdbserver,端口号没修改过的话应该是26000。而连接gdbserver的配置文件位于你的项目目录/.gdbinit中,上面的警告就是说由于你的 GDB 配置中 auto-load safe-path 选项的限制,加载被拒绝了,所以就连不上gdbserver。.gdbinit 文件如下:
set confirm off
set architecture riscv:rv64
target remote 127.0.0.1:26000
symbol-file kernel/kernel
set disassemble-next-line auto
解决办法如下:
解决方案一
在
$HOME/.gitinit中添加如下设置(如果没有就创建一个)set auto-load safe-path /home/ce/workspace/xv6-labs-2020 #这里换成你的项目目录解决方案二
直接将你项目目录下的
.gdbinit文件拷贝到$HOME/下:cp /home/ce/workspace/xv6-labs-2020/.gdbinit ~/解决方案三
在运行
riscv64-linux-gnu-gdb命令是指定配置文件riscv64-linux-gnu-gdb -x .gdbinit # 你需要在项目目录执行
再次启动调试make qemu-gdb ,并在另一个终端运行riscv64-linux-gnu-gdb (第三种方法运行riscv64-linux-gnu-gdb -x .gdbinit) 注意上面两个命令都需要在项目目录运行。此时在gdb调试程序中输入l若列出了程序,应该就是成功了。
