【开源鸿蒙】使用 QEMU 运行 OpenHarmony 轻量系统

本文将会介绍如何从源码安装 QEMU 6.2.0,以及如何使用 QEMU 运行 OpenHarmony 轻量系统。通过本文,你将会对 QEMU 和 OpenHarmony 轻量系统又一个初步的认知,并对如何使用 QEMU 又一个初步的理解和体会。
一、准备工作
开始之前,需要准备:
Ubuntu 系统的开发环境(可以是物理主机也可以是虚拟机);
下载 OpenHarmony 4.0 Release 源代码,参考文章:
为 QEMU 编译 OpenHarmony 轻量系统,参考文章:
上一篇文章介绍了如何为 QEMU RISC-V 虚拟平台构建 OpenHarmony 轻量系统。
构建完成后,输出如下:

1.1 编译输出目录简介
hb set 命令选择 qemu_riscv_mini_system_demo 平台后,hb build 命令构建完成后,所有输出文件将会保存在 out/riscv32_virt/qemu_riscv_mini_system_demo 目录,具体内容如下:

其中,OHOS_Image 就是本文将要运行的 RISC-V 平台的 OpenHarmony 轻量系统 ELF 文件。
二、QEMU 安装
按照如下步骤,从源码安装 QEMU 6.2.0 版本。
2.1 安装依赖
2.2 获取源码
2.3 编译安装
等待编译结束, 执行安装命令:
最后将安装路径添加到环境变量中:
在~/.bashrc 最末尾加入:
2.4 问题解决
上一小节描述的步骤中,可能出现一些问题,本节介绍如何解决常见的问题。
Cannot find Ninja 问题:

解决方法:
正常编译成功之后,可以看到如下输出:

三、用 QEMU 运行 OpenHarmony 轻量系统
编译成功后,就可以进入本篇文章的正题了——尝试使用 QEMU 运行 RISC-V 虚拟平台的 OpenHarmony 轻量系统。
3.1 qemu-run 脚本简介
OpenHarmony 顶层目录,有一个 qemu-run 的链接文件:

它实际指向一个脚本文件:

该脚本用于启动 qemu 虚拟机,并加载可执行程序。
3.2 qemu-run 脚本参数
脚本 qemu-run 文件支持一些命令行参数,具体如下:

由于 exec 默认值已经是正确的可执行程序了,所以直接运行该脚本就可以启动虚拟机,并运行 OpenHarmony 轻量系统。
3.3 qemu-run 运行效果
前面介绍过,由于已经使用 hb build 编译成功了,直接运行 qemu-run,就可以运行 RISC-V 虚拟平台的 OpenHarmony 轻量系统。
运行后,可以看到启动日志:


成功看到 OpenHarmony 系统启动日志了,可喜可贺!
3.4 退出 QEMU 交互模式
qemu-run 默认会进入 QEMU 交互模式,退出需要使用:Ctrl+A,然后再按 X 键。
四、问题解决
首次运行 qemu-run 脚本,可能会遇到报错 libncursesw.so.5 找不到:

解决方法:
五、参考链接
OpenHarmony 官网: https://www.openharmony.cn/
OpenHarmony 编译形态整体说明: https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-appendix-compiledform.md
OpenHarmony 代码仓: https://gitee.com/openharmony/
OpenHarmony riscv32_virt 说明:https://gitee.com/openharmony/device_qemu/tree/HEAD/riscv32_virt
版权声明: 本文为 InfoQ 作者【码匠许师傅】的原创文章。
原文链接:【http://xie.infoq.cn/article/96eb21573ddd5219ebe1da7a3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论