ubuntu下快速配置xv6基本环境2023.12.6更新可用

Author:师傅+Editor:Vite

经过无数次尝试和重装,耗时近40个小时,终于探索出一条用vscode调试xv6的可行性道路

1.重装虚拟机

按照上一个说明的流程,安装一个新的虚拟机并记住它的名字。记住账户名在下文统一用username指代账户名

一、更换/etc/apt/sources.list文件里的源

1. 备份源列表

Ubuntu配置的默认源并不是国内的服务器,下载更新软件都比较慢。首先备份源列表文件sources.list

# 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

2. 打开sources.list文件修改

选择合适的源,替换原文件的内容,保存编辑好的文件, 以阿里云更新服务器为例(可以分别测试阿里云、清华、中科大、163源的速度,选择最快的):

# 打开sources.list文件
sudo gedit /etc/apt/sources.list

编辑/etc/apt/sources.list文件, 在文件最前面添加阿里云镜像源:

#  阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

3. 刷新列表

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential

下载速度瞬间就起飞了。

2.配置riscv+qemu+clone的快速方法

​
//下载必要组件并解压
$sudo apt install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu libglib2.0-dev libpixman-1-dev gcc-riscv64-unknown-elf
$wget https://download.qemu.org/qemu-5.1.0.tar.xz
$tar xvf qemu-5.1.0.tar.xz
$cd qemu-5.1.0

接下来运行这条命令

$./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"

如果报这个错误:

ERROR: glib-2.48 gthread-2.0 is required to compile QEMU

解决方法为sudo apt install libglib2.0-dev

还可能报这个错误:

ERROR: pixman >= 0.21.8 not present.
       Please install the pixman devel package.

解决方法为sudo apt install libpixman-1-dev

之后编译,克隆源代码并初始运行

$make
$sudo make install
$cd ~
$git clone git://g.csail.mit.edu/xv6-labs-2020
$cd xv6-labs-2020
$git checkout util
$make qemu

2. vscode远程调试

在vscode上安装remote ssh一系列扩展.
在虚拟机终端输入ifconfig(如果报错就按它的指示去做)并获得地址名得到inet值
在vscode中的ssh配置文件中加入以下东西:(或者修改)
Host 造一个名字(随便取)
    HostName 输入你得到的地址
    User 用户名字(ubuntu的账户名字即为username)
在你的windows终端中跑一遍ssh检验是否能够连接虚拟机

打开cmd,输入以下命令

ssh username@<inet的地址>

若报以下错误

ssh: connect to host XX.XX.XX.XX port 22: Connection refused

需要开启ssh服务,重启ssh服务

sudo /etc/init.d/ssh start
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
在vscode中远程连接虚拟机并输入两次密码
用vscode打开xv6-labs-2020文件目录并在目录下创建一个.vscode文件夹

手动新建一个launch.json文件,并把以下内容修改username后粘贴

{
"version": "0.2.0",
"configurations": [
    {
        "name": "(gdb) 启动",
        "type": "cppdbg",
        "request": "launch",
        "program": "/home/genesis/xv6-labs-2020/kernel/kernel",//你的kernel所在的目录
        "args": [],//可以后续传参
        "stopAtEntry": true,//支持断点调试
        "cwd": "${fileDirname}",
        "miDebuggerServerAddress": "localhost:26000",//这是默认端口
        "miDebuggerPath": "/usr/bin/gdb-multiarch",//x86环境支持组件
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "logging":{
            "engineLogging":true,
            "programOutput": true,
        }
    }
    ]   
}
修改gdbinit.teml.riscv:(最后一句支持更广泛的断点调试)
set confirm off
set architecture riscv:rv64
target remote 127.0.0.1:1234
symbol-file kernel/kernel
set disassemble-next-line auto
set riscv use-compressed-breakpoints yes
在vscode终端启动qemu:
$make qemu-gdb
注释gdbinit文件(每次启动qemu都要修改,可以尝试优化):
set confirm off
set architecture riscv:rv64
#target remote 127.0.0.1:26000
symbol-file kernel/kernel
set disassemble-next-line auto
set riscv use-compressed-breakpoints yes

按下两次f5并祈祷

参考教程:MIT 6S081 环境搭建指南 保姆级教学哔哩哔哩bilibili

mit6s081 通过vscode来debug kernel哔哩哔哩bilibili

3.打分

如果make grade失败并报错‘python’: No such file or directory,可以进行如下操作
​
查看已安装的python版本
python3 --version
​
查找python3的位置
whereis python3
​
为其创建连接符号
sudo ln -s /usr/bin/python3 /usr/bin/python

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值