ubuntu安装qemu和xv6

命令一键安装

apt update

apt install -y git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu bc perl

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

如果上面的v6下载太慢

就下载源码压缩包

wget https://codeload.github.com/mit-pdos/xv6-riscv/zip/refs/heads/riscv -O xv6-riscv.zip

unzip xv6-riscv.zip

cd xv6-riscv-riscv

make qemu

如果是ubuntu20.04或者Ubuntu22.04那么可能qemu的版本不高

下载的这个 xv6-riscv 分支要求 QEMU >= 7.2

方案一:升级到 Ubuntu 24.04 或更高

sudo apt update

sudo apt install -y qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu gdb-multiarch build-essential

cd ~/xv6-riscv-riscv

make qemu

方案二:不升级系统,自己装新版 QEMU

这个适合继续用现在的 Ubuntu。

验证是否安装成功,按这个顺序看:

先装编译依赖:

sudo apt update

sudo apt install -y git ninja-build meson pkg-config libglib2.0-dev libpixman-1-dev zlib1g-dev libslirp-dev

下载并编译 QEMU 8.2.2:

cd ~

wget https://download.qemu.org/qemu-8.2.2.tar.xz

tar -xf qemu-8.2.2.tar.xz

cd qemu-8.2.2

./configure --target-list=riscv64-softmmu

make -j"$(nproc)"

sudo make install

装好后验证版本:

qemu-system-riscv64 --version

只要显示 7.2 以上,比如 8.2.2,就行。然后再回去跑 xv6:

cd ~/xv6-riscv-riscv

make qemu

把新版本加到当前终端路径:

export PATH=HOME/qemu-8.2.2-install/bin:PATH

qemu-system-riscv64 --version

riscv64-linux-gnu-gcc --version

cd xv6-riscv

make qemu

cd xv6-riscv

make qemu

成功时,make qemu 运行后通常会看到类似输出,最后进入 xv6 的 shell:

xv6 kernel is booting

init: starting sh

$

到了 $ 提示符后,可以再输:

ls

echo hello

以后每次开终端都默认用新版 QEMU,可以执行:

echo 'export PATH=HOME/qemu-8.2.2-install/bin:PATH' >> ~/.bashrc

source ~/.bashrc

能正常列目录、输出 hello,说明 xv6 跑起来了。退出 QEMU 用 Ctrl+a,再按 x。

相关推荐
数字化顾问32 分钟前
(138页PPT)流程体系的建设优化与运营(附下载方式)
大数据·运维·人工智能
2601_967287571 小时前
轮胎侧壁上的 91V 是什么意思,负荷指数与速度级别怎么看
运维·服务器·汽车
Ivanqhz1 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
H.莓飛1 小时前
【数据结构】队列
linux·数据结构·centos
小此方2 小时前
Linux网络(十九):TCP流量控制与滑动窗口详解,超时重传和快重传到底有什么区别
linux·运维·服务器·网络·网络协议·tcp/ip
海宇服务2 小时前
零信任架构实战:基于海宇运营商近3个月欠费次数构建自动化履约能力评估管线
运维·人工智能·架构·自动化
码上有光2 小时前
Linux进程通信——共享内存、消息队列和信号量
android·linux·运维·共享内存·通信
沫璃染墨2 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
志栋智能2 小时前
超自动化巡检中的异常检测与根因分析
运维·自动化
Java后端的Ai之路2 小时前
Python进阶探索24_应用案例_linux系统的监控
linux·开发语言·python·应用·探索