?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
tar xf qemu-9.1.3.tar.xz
🌟2.3.編譯qemu
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版本
pkg-config --modversion glib-2.0 # 如果低于2.66.0的話可以手動編譯
🌟2.4.2 手動安裝編譯Glib版本
# 安裝編譯依賴
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 驗證安裝
pkg-config --modversion glib-2.0 # 顯示更高版本
?3.安裝riscv64編譯器
這里直接使用apt進行安裝:
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:
git clone https://github.com/riscv-software-src/opensbi.git -b v1.5.1
🌟4.2 .編譯opensbi:
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 下載并編譯:
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鏡像
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修改即可
2. -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等都需要安裝好。