Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
openeuler_risc-v_qemu_install [2024/06/06 03:54] – Disclaimer misaka00251openeuler_risc-v_qemu_install [2024/09/28 11:30] (current) – [自己装] Fix startup script misaka00251
Line 1: Line 1:
 ====== 在 QEMU 内运行 openEuler RISC-V 移植版 ====== ====== 在 QEMU 内运行 openEuler RISC-V 移植版 ======
  
-**Update 240606: 这章很早了新的请查看官方文档。**+目前已经是 openEuler 24.03 LTS 了,也是 RISC-V 的第一个主线合并后 LTS 版本。 
 + 
 +===== QEMU ===== 
 + 
 +QEMU 有两种方法,前提是确定一下你的 QEMU 版本一定要大于 8.1 版本。 
 + 
 +  一种是直接下载安装好 openEuler 的 QEMU riscv64 架构镜像,在[[https://mirror.iscas.ac.cn/openeuler/openEuler-24.03-LTS/virtual_machine_img/riscv64/|这里]]下载。 
 +  另一种是自己用 ISO 镜像安装,在[[https://mirror.iscas.ac.cn/openeuler/openEuler-24.03-LTS/ISO/riscv64/|里]]下载到 ISO 件。推荐下载 Everything 的镜像这样安装的时候会更快一点。 
 + 
 +对于手,我推荐直接下载 QEMU riscv64 架构镜像。因为目前模拟 QEMU riscv64 太慢了,自己安装话至少要等 20 min。 
 + 
 +==== 直接用镜像 ==== 
 + 
 +在下载 ''openEuler-24.03-LTS-riscv64.qcow2.xz'' 的同时,你会发现别的文件—— 
 + 
 +  * ''start_vm.sh'': 不加蓬莱 TEE 的 Linux 下启动脚本。 
 +  * ''start_vm_penglai.sh'': 加蓬莱 TEE 的 Linux 下启动脚本。 
 +  * ''RISCV_VIRT_CODE.fd'' & ''RISCV_VIRT_VARS.fd'': edk2 的固件。 
 +  * ''fw_dynamic_oe_2403_penglai.bin'': 加蓬莱 TEE 下必备的 BIOS 文件。 
 + 
 +可以根据你自己想要怎么启动来下载对应的文件。 
 + 
 +==== 自己装 ==== 
 + 
 +以下是 macOS 的启动脚本。 
 + 
 +<file bash run.sh> 
 +cmd="qemu-system-riscv64 \ 
 +  -bios "fw_dynamic_oe_2403_penglai.bin"
 +  -machine virt,pflash0=pflash0,pflash1=pflash1,acpi=off -nographic \ 
 +  -display cocoa,show-cursor=on \ 
 +  -smp "4" -m "8"G \ 
 +  -cpu rv64 \ 
 +  -object memory-backend-ram,size=4G,id=ram1 \ 
 +  -numa node,memdev=ram1 \ 
 +  -object memory-backend-ram,size=4G,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="oerv.qcow2",format=qcow2,id=hd0,if=none \ 
 +  -object rng-random,filename=/dev/urandom,id=rng0 \ 
 +  -device virtio-vga \ 
 +  -device virtio-rng-device,rng=rng0 \ 
 +  -device virtio-blk-device,drive=hd0,bootindex=1 \ 
 +  -device virtio-net-device,netdev=usernet \ 
 +  -netdev user,id=usernet,hostfwd=tcp::"12055"-:22 \ 
 +  -audiodev coreaudio,id=snd0 \ 
 +  -device qemu-xhci -usb -device usb-kbd -device usb-tablet -device usb-audio,audiodev=snd0 \ 
 +  -drive file="openEuler-24.03-LTS-everything-riscv64-dvd.iso",if=none,id=test_CD_drv,format=raw,media=cdrom \ 
 +  -device virtio-blk-device,drive=test_CD_drv,bootindex=2"
 + 
 + 
 +eval $cmd 
 +</file> 
 + 
 +在启动之前,创建一个 qcow2 磁盘,可以使用 ''qemu-img create -f qcow2 oerv.qcow2 32G'' 命令来直接创建。 
 + 
 +安装成功之后,可以注释掉最后 CD 两行。 
 + 
 +目前镜像已经很完善了,基本不需要做什么额外的操作。我碰到了一个坑是在开启 Loon / Quantumult X 的时候,自动 DNS 不会工作。在手动安装的时候可以在网络那里设置个 ''223.5.5.5'' 就行了。 
 + 
 +===== 硬件镜像 ===== 
 + 
 +==== Milk-V Pioneer ==== 
 + 
 +[[https://docs.openeuler.org/zh/docs/24.03_LTS/docs/Installation/RISC-V-Pioneer1.3.html|官方文档]]已经很完善了。 
 + 
 +==== Sipeed LicheePi 4A ==== 
 + 
 +[[https://docs.openeuler.org/zh/docs/24.03_LTS/docs/Installation/RISC-V-LicheePi4A.html|官方文档]]已经很完善了。 
 + 
 +---- 
 + 
 +===== 以下内容为过期内容 ===== 
 + 
 +:!: **以下的为 openEuler 22.03 LTS 之前的内容。仅作为历史记录。**
  
 不要忘记安装最新版的 [[https://qemu.org|QEMU]]以及将 QEMU 的目录添加到环境变量里! 不要忘记安装最新版的 [[https://qemu.org|QEMU]]以及将 QEMU 的目录添加到环境变量里!
Line 79: Line 154:
 注意,以下都很老了(已经不存在这些问题),仅仅作为存档用途出现在这里。 注意,以下都很老了(已经不存在这些问题),仅仅作为存档用途出现在这里。
  
-===== 软件源 =====+==== 软件源 ====
  
 openEuler 使用的是 dnf 作为包管理器,配置文件在 ''/etc/dnf/dnf.conf'' openEuler 使用的是 dnf 作为包管理器,配置文件在 ''/etc/dnf/dnf.conf''
Line 102: Line 177:
 然后执行 ''dnf update'' 即可。 然后执行 ''dnf update'' 即可。
  
-===== 系统时间 =====+==== 系统时间 ====
  
 不过在这里你可能发现失败了,因为时间不对!通过运行 ''timedatectl'' 可以发现系统时间为 2019 年…… 不过在这里你可能发现失败了,因为时间不对!通过运行 ''timedatectl'' 可以发现系统时间为 2019 年……
Line 144: Line 219:
 </code> </code>
  
-===== Others =====+==== Others ====
  
 ''ping'' 在 ''iputils'' 包内。 ''ping'' 在 ''iputils'' 包内。
  
-==== 公共 CI 机器上编译用户模式的 QEMU ====+=== 公共 CI 机器上编译用户模式的 QEMU ===
  
 这里我们可以使用清华源来加快 git clone 的速度,然后转到最新版的分支用于构建: 这里我们可以使用清华源来加快 git clone 的速度,然后转到最新版的分支用于构建:
Line 174: Line 249:
 :!: 公共机器上无需再去 openEuler 官方下载相关文件,Wechat@nil 准备了一份放在了 /var/tmp/oE-priv-img 内。 :!: 公共机器上无需再去 openEuler 官方下载相关文件,Wechat@nil 准备了一份放在了 /var/tmp/oE-priv-img 内。
  
-==== 我的虚拟环境没空间了 ====+=== 我的虚拟环境没空间了 ===
  
 这我还真在编译 openjdk 的时候遇到了。 这我还真在编译 openjdk 的时候遇到了。