Qemu搭建RISC-V,运行opensbi+u-boot+img

✨1.先下载一个Ubuntu镜像

https://cdimage.ubuntu.com/releases/24.04/release/

我这里下载的是这个RISC-V的

🌟1.2.解压镜像

xz -d ubuntu-24.04.2-preinstalled-server-riscv64.img.xz

✨2.准备RISC-V的QEMU

打开qemu官网https://www.qemu.org/,下载qemu-9.1.3.tar.xz

🌟2.1.解压qemu

bash 复制代码
tar xf qemu-9.1.3.tar.xz

🌟2.3.编译qemu

bash 复制代码
cd qemu-9.1.3
mkdir build
cd build
../configure --enable-slirp --target-list=riscv64-softmmu
make -j$(nproc)
make install

编译完成之后可以看到系统下有qemu-system-riscv64生成

🌟2.4 注意:

博主在这里编译qemu的时候也遇到了一些问题,一般都能百度解决我就不贴在这里了,一般会遇到的问题有Glib的版本要大于2.66.0版本,这里可以通过以下方式升级,如果版本高于2.66则忽略该步骤。

🌟2.4.1 查看Glib版本

bash 复制代码
pkg-config --modversion glib-2.0  # 如果低于2.66.0的话可以手动编译

🌟2.4.2 手动安装编译Glib版本

bash 复制代码
# 安装编译依赖
sudo apt install -y build-essential git meson ninja-build libffi-dev python3-dev

# 下载GLib源码
cd ~
wget https://download.gnome.org/sources/glib/2.66/glib-2.66.0.tar.xz
tar -xf glib-2.66.0.tar.xz
cd glib-2.66.0

# 配置、编译和安装
mkdir build && cd build
meson --prefix=/usr/local ..
ninja
sudo ninja install

# 更新动态链接库缓存
sudo ldconfig

🌟2.4.3 验证安装

bash 复制代码
pkg-config --modversion glib-2.0 # 显示更高版本

✨3.安装riscv64编译器

这里直接使用apt进行安装:

bash 复制代码
sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y

✨4.准备固件和依赖

QEMU运行RISC-V需要固件(如OpenSBI和U-Boot)。Ubuntu官方教程推荐以下文件:

OpenSBI(提供固件支持):

Ubuntu系统中通常已包含,位于 /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf。

如果缺失,可从 https://github.com/riscv/opensbi 下载并编译

🌟4.1.下载opensbi

从github上clone opensbi:

bash 复制代码
git clone https://github.com/riscv-software-src/opensbi.git -b v1.5.1

🌟4.2 .编译opensbi:

bash 复制代码
cd opensbi
make CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic all -j$(nproc)

编译完成后,在build/platform/generic/firmware目录下生成相应的bin文件,后面我们要用到fw_jump.bin文件:

✨5. 编译u-boot

● Ubuntu系统中通常位于 /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf。

● 如果缺失,可从 https://github.com/u-boot/u-boot 下载并编译:

bash 复制代码
git clone https://github.com/u-boot/u-boot
cd u-boot
make qemu-riscv64_smode_defconfig
make CROSS_COMPILE=riscv64-linux-gnu- -j$(nproc)

编译完之后会生成一个u-boot.bin的文件

✨6.启动 RISC-V镜像

bash 复制代码
qemu-system-riscv64 \
  -nographic \
  -machine virt \
  -m 8G \
  -smp 8 \
  -bios /home/risc-v/opensbi/build/platform/generic/firmware/fw_jump.bin \
  -kernel /home/risc-v/u-boot/u-boot.bin \
  -append "root=/dev/vda rw console=ttyS0" \
  -drive file=/home/risc-v/ubuntu-24.04.2-preinstalled-server-riscv64.img,format=raw,id=hd0,if=none \
  -device virtio-blk-device,drive=hd0 \
  -netdev user,id=net0,hostfwd=tcp:0.0.0.0:2223-:22 \
  -device virtio-net-device,netdev=net0

成功安装Ubuntu24.04 riscv架构的操作系统

✨注意点:

1.首次安装成功之后账号密码默认是ubuntu/ubuntu,进入到系统之后修改root密码:sudo passwd root修改即可

  1. -netdev user,id=net0,hostfwd=tcp:0.0.0.0:2223-:22 端口不能冲突,可以通过netstat -tuln | grep 2223查看是否端口冲突了。

3.启动的路径需要对照自己的路径来修改

4.如果有自己对应的内核可以自己修改启动脚本

5.编译Qemu和uboot的话需要安装很多依赖包,具体遇到哪些报错就安装即可,一般python3,gcc,make,ninja,meson等都需要安装好。

相关推荐
国科安芯3 天前
抗辐照MCU芯片在低轨商业卫星原子钟中的适配与优化
单片机·嵌入式硬件·fpga开发·架构·risc-v
云澈ovo6 天前
RISC-V 架构适配:开源 AI 工具链的跨平台编译优化全流程(附实战指南)
架构·开源·risc-v
Blossom.1188 天前
用一颗MCU跑通7B大模型:RISC-V+SRAM极致量化实战
人工智能·python·单片机·嵌入式硬件·opencv·机器学习·risc-v
漫谈网络13 天前
KVM创建的虚拟机,虚拟机的网卡是如何生成的
运维·服务器·网络·qemu·虚拟化·kvm
矜辰所致16 天前
沁恒微 RISC-V 芯片开发工具 MounRiver Studio 使用
ide·沁恒微·开发工具·risc-v·mrsii
矜辰所致18 天前
【导航】沁恒微 RISC-V 蓝牙 入门教程目录 【快速跳转】
沁恒微·蓝牙·risc-v·ble·ch585
国科安芯23 天前
AS32S601ZIT2型MCU:基于RISC-V架构的抗辐照设计与试验评估
网络·单片机·嵌入式硬件·fpga开发·架构·硬件架构·risc-v
Eloudy23 天前
全文 -- Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research
gpu·risc-v·arch
慧都小项24 天前
Parasoft助力RISC-V芯片量产:提供高可靠软件测试方案
软件测试·risc-v·芯片·parasoft
京雨24 天前
关于RISC-V 中断处理的分析
单片机·嵌入式硬件·risc-v