尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Ubuntu下编译QEMU运行xv6-riscv教学系统指南

Ubuntu下编译QEMU运行xv6-riscv教学系统指南 1. 项目背景与目标解析在2026年初的Linux开发环境中Ubuntu 22.04 LTS仍然是许多开发者的首选稳定系统而即将发布的Ubuntu 24.04 LTS也备受期待。这个项目要实现的是在Ubuntu 22.04上手动编译QEMU 7.2.0模拟器来运行xv6-riscv教学操作系统并计划在2月份Ubuntu 24.04发布后适配新版系统和QEMU 4.1.0。xv6-riscv是MIT开发的经典教学操作系统xv6的RISC-V移植版本对于学习操作系统原理和RISC-V架构具有重要意义。而QEMU作为功能强大的开源模拟器能够完美模拟RISC-V环境是学习和开发xv6的理想平台。2. 环境准备与依赖安装2.1 系统基础环境配置首先确保Ubuntu 22.04系统是最新状态sudo apt update sudo apt upgrade -y安装必要的编译工具链和依赖库sudo apt install -y build-essential git libglib2.0-dev libfdt-dev \ libpixman-1-dev zlib1g-dev ninja-build pkg-config libgtk-3-dev \ libsdl2-dev libspice-server-dev libusb-1.0-0-dev libiscsi-dev \ libssh-dev libvde-dev libvdeplug-dev libcap-ng-dev libattr1-dev \ libslirp-dev libnfs-dev libseccomp-dev libaio-dev liburing-dev \ libdrm-dev libgbm-dev libepoxy-dev libvirglrenderer-dev \ libsnappy-dev liblzo2-dev libzstd-dev libbz2-dev liblzma-dev \ libncurses5-dev libncursesw5-dev2.2 获取QEMU 7.2.0源码从官方仓库克隆QEMU源码并切换到7.2.0版本git clone https://gitlab.com/qemu-project/qemu.git cd qemu git checkout v7.2.0 git submodule init git submodule update --recursive3. QEMU 7.2.0编译与安装3.1 配置编译选项创建一个构建目录并配置编译选项mkdir build cd build ../configure --target-listriscv64-softmmu,riscv64-linux-user \ --enable-gtk --enable-sdl --enable-virglrenderer --enable-opengl \ --enable-vnc --enable-kvm --enable-spice --enable-attr \ --enable-cap-ng --enable-libiscsi --enable-libnfs --enable-seccomp \ --enable-slirpsystem --enable-tools --enable-uring关键配置说明target-list指定只编译RISC-V 64位架构相关组件enable-gtk和enable-sdl提供图形界面支持enable-virglrenderer和enable-opengl启用3D加速enable-kvm允许使用硬件虚拟化加速3.2 编译与安装使用多线程编译加速过程make -j$(nproc)编译完成后安装到系统sudo make install验证安装是否成功qemu-system-riscv64 --version4. 获取并运行xv6-riscv4.1 获取xv6-riscv源码从MIT官方仓库克隆xv6-riscvgit clone https://github.com/mit-pdos/xv6-riscv.git cd xv6-riscv4.2 编译xv6-riscv直接使用make命令编译make qemu4.3 使用QEMU运行xv6手动指定QEMU运行参数qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel \ -m 128M -smp 3 -nographic -drive filefs.img,ifnone,formatraw,idx0 \ -device virtio-blk-device,drivex0,busvirtio-mmio-bus.0参数说明-machine virt指定模拟RISC-V VirtIO机器-bios none不使用BIOS-kernel指定内核镜像路径-m设置内存大小-smp设置CPU核心数-nographic禁用图形界面-drive配置虚拟磁盘5. Ubuntu 24.04与QEMU 4.1.0适配5.1 Ubuntu 24.04环境准备待Ubuntu 24.04发布后首先更新系统sudo do-release-upgrade安装新版依赖库sudo apt install -y build-essential git libglib2.0-dev libfdt-dev \ libpixman-1-dev zlib1g-dev ninja-build pkg-config5.2 QEMU 4.1.0编译安装获取QEMU 4.1.0源码git clone https://gitlab.com/qemu-project/qemu.git cd qemu git checkout v4.1.0 git submodule update --init --recursive配置编译选项简化版mkdir build cd build ../configure --target-listriscv64-softmmu make -j$(nproc) sudo make install5.3 xv6-riscv适配调整由于QEMU 4.1.0接口可能有所不同可能需要修改xv6-riscv的MakefileQEMU qemu-system-riscv64 QEMUOPTS -machine virt -bios none -kernel $K/kernel -m 128M -smp 3 -nographic QEMUOPTS -drive filefs.img,ifnone,formatraw,idx0 QEMUOPTS -device virtio-blk-device,drivex0,busvirtio-mmio-bus.06. 常见问题与解决方案6.1 编译QEMU时的依赖问题如果遇到类似Package XXX was not found的错误可以尝试sudo apt install -y libXXX-dev对于较新的Ubuntu版本某些库可能有不同的包名可以使用apt搜索apt search libXXX6.2 xv6-riscv运行异常如果xv6启动后卡住或崩溃可以尝试增加内存大小-m 256M减少CPU核心数-smp 1添加调试参数-d int,cpu_reset -D qemu.log6.3 图形界面相关问题如果需要图形界面但无法显示可以确保安装了SDL或GTK支持移除-nographic参数添加-display gtk或-display sdl7. 性能优化与进阶配置7.1 启用KVM加速如果主机CPU支持虚拟化可以显著提升性能qemu-system-riscv64 -enable-kvm -cpu host ...检查KVM是否可用lsmod | grep kvm7.2 网络配置为xv6添加网络支持-netdev user,idnet0 -device virtio-net-device,netdevnet07.3 调试支持使用GDB调试xv6内核qemu-system-riscv64 -s -S ...然后在另一个终端riscv64-unknown-elf-gdb (gdb) target remote :12348. 开发环境整合建议8.1 IDE配置推荐使用VSCode进行开发安装以下插件C/CRISC-V SupportMakefile ToolsQEMU8.2 自动化脚本创建run.sh脚本简化启动流程#!/bin/bash make clean make qemu8.3 版本控制建议为xv6-riscv创建独立分支git checkout -b my-xv6定期同步上游更新git remote add upstream https://github.com/mit-pdos/xv6-riscv.git git fetch upstream git merge upstream/master
返回列表