该页面记录配置xv6-riscv的方法。

Ubuntu 2404配置xv6编译环境

1 安装软件

1.1 安装编译qemu依赖的基础软件

1
2
3
4
5
6
7
sudo apt-get install -y git build-essential ninja-build pkg-config \
    libglib2.0-dev libpixman-1-dev libfdt-dev zlib1g-dev \
    libaio-dev libbz2-dev libcap-ng-dev libcurl4-gnutls-dev \
    libgtk-3-dev libncurses5-dev libnfs-dev libsdl2-dev \
    libseccomp-dev libspice-server-dev libusb-1.0-0-dev \
    libusbredirparser-dev libvdeplug-dev python3 python3-pip \
    flex bison

1.2 源码编译qemu 8.1.5

1
2
3
4
5
6
7
# 安装依赖软件包

mkdir build
cd build
../configure --prefix=/usr/local/qemu-8.1.5 --target-list=riscv64-softmmu \
             --enable-virtfs \
             --enable-tools --enable-debug

1.3 创建qemu链接

1
ln -sf /opt/qemu-8.1.5/build/qemu-system-riscv64 /usr/local/bin/qemu-system-riscv64

2 配置riscv64 toolchain

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 下载riscv64 toolchanin
# riscv64-elf-ubuntu-24.04-gcc-nightly-2025.07.16-nightly.tar.xz
https://github.com/riscv-collab/riscv-gnu-toolchain/releases


# 解压riscv-gnu-toolchain
tar -Jxvf riscv64-elf-ubuntu-24.04-gcc-nightly-2025.07.16-nightly.tar.xz

# 配置环境变量
# 在 ~/.bashrc中添加以下内容:
export PATH="$PATH:/opt/riscv/bin"
source ~/.bashrc

3 编译xv6-riscv

3.1 下载xv6-riscv

1
git clone https://github.com/mit-pdos/xv6-riscv.git

3.2 编译xv6-riscv

1
2
3
cd xv6-riscv-path
make clean
make qemu

3.3 调试xv6

1
2
3
cd xv6-riscv-path
make clean
make qemu-gdb

然后再另外一个窗口:

1
2
cd xv6-riscv-path
riscv64-unknown-elf-gdb -q kernel/kernel

若在gdb client加载过程提示:
warning: File “xv6-path/.gdbinit” auto-loading has been declined by your auto-load safe-path’ set to “$debugdir:$datadir/auto-load”.
则编辑文件~/.config/gdb/gdbinit,按照提示添加:add-auto-load-safe-path xxx即可。
例如我的环境,在文件/home/alvin/.config/gdb/gdbinit中添加内容如下:add-auto-load-safe-path /opt/xv6-riscv/.gdbinit即可。