参考文章:

大致流程

  • 安装qemu
  • 下载系统镜像和EFI固件,risv和arm架构基本都需要EFI固件才能启动系统
  • 创建虚拟硬盘
  • 命令行启动,把上面的文件穿进去,带上一大堆配置

安装 qemu

文档建议安装qemu8以上的版本。
我是wsl上的ubunutu22lts, 直接apt安装了, 直接装的太老了是6.2.0
我需要编译安装一个8.1以后的qemu。
废那事,我下载Windows版本的qemu了,版本是8.1.0 (v8.1.0-12034-g129566d84e)。

下载镜像

# EFI Firmware
wget https://mirrors.jxust.edu.cn/openeuler/openEuler-24.03-LTS/virtual_machine_img/riscv64/RISCV_VIRT_CODE.fd
wget https://mirrors.jxust.edu.cn/openeuler/openEuler-24.03-LTS/virtual_machine_img/riscv64/RISCV_VIRT_VARS.fd
 
# 操作系统镜像
wget https://mirrors.jxust.edu.cn/openeuler/openEuler-24.03-LTS/virtual_machine_img/riscv64/openEuler-24.03-LTS-riscv64.qcow2.xz
 
# 启动脚本
wget https://mirrors.jxust.edu.cn/openeuler/openEuler-24.03-LTS/virtual_machine_img/riscv64/start_vm.sh
 
# 解压
tar xf openEuler-24.03-LTS-riscv64.qcow2.xz

启动模拟器

Windows下要翻译一下他的bash脚本,删除随机数设备,把内存改小,不然报错qemu-system-riscv64: qemu_fdt_add_subnode: Failed to create subnode /memory@80000000: FDT_ERR_EXISTS
能跑的版本是:

qemu-system-riscv64 ^
  -machine virt,pflash0=pflash0,pflash1=pflash1,acpi=off ^
  -smp 4 -m 6G ^
  -object memory-backend-ram,size=3G,id=ram1 ^
  -numa node,memdev=ram1 ^
  -object memory-backend-ram,size=3G,id=ram2 ^
  -numa node,memdev=ram2 ^
  -blockdev node-name=pflash0,driver=file,read-only=on,filename="RISCV_VIRT_CODE.fd" ^
  -blockdev node-name=pflash1,driver=file,filename="RISCV_VIRT_VARS.fd" ^
  -drive file=1.qcow2,format=qcow2,id=hd0 ^
  -device virtio-vga ^
  -device virtio-blk-device,drive=hd0,bootindex=1 ^
  -device virtio-net-device,netdev=usernet ^
  -netdev user,id=usernet,hostfwd=tcp::"12055"-:22 ^
  -device qemu-xhci -usb -device usb-kbd -device usb-tablet

运行

默认密码:openEuler12#$
下载的镜像没有装图形界面,要切换到serial0才有输出,快捷键Ctrl+Alt+3

系统启动成功后换Windows Terminal运行ssh -p12055 root@localhost进去操作了。

安装图像界面

这次要开发个GUI的app,要安装图形界面。
现在的 文档 里面四种桌面环境,DDE的安装的命令最少了试试。

x11 forward

在open-euler上安装tauri开发环境