【开源鸿蒙】编译 OpenHarmony 轻量系统 QEMU RISC-V 版本
![【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版本](https://static001.geekbang.org/infoq/c6/c6960f9865f0b72ad6814a1f8d207adf.png)
本文将介绍如何为 QEMU RISC-V 虚拟平台构建 OpenHarmony 轻量系统。得益于 QEMU 的 CPU 指令集模拟执行能力,该方法可以在没有开发板的情况下调试和运行 OpenHarmony 系统源码。本文介绍的该方法,可以用于 OpenHarmony 操作系统源码的学习和研究。
一、背景介绍
QEMU 是一个开源的虚拟化平台,它可以实现目标平台的 CPU 指令级别的模拟。因此,可以使用 QEMU 进行操作系统的学习和研究,也可以在没有硬件的情况下对开发板进行模拟。
QEMU 是一款开源的虚拟机监控程序,可模拟多种硬件环境,并支持多种处理器架构。它能够在不同平台上实现虚拟化,运行各种操作系统。QEMU 具有高度的灵活性和可移植性,被广泛用于开发、测试和部署虚拟化环境。
二、准备 OpenHarmony 源代码
开始之前,需要准备:
Ubuntu 系统的开发环境(可以是物理主机也可以是虚拟机);
下载 OpenHarmony 4.1 Release 源代码,参考此前帖子:
三、准备 hb 命令
3.1 安装 hb 命令
编译 OpenHarmony 源码之前,需要先安装 hb 命令。
安装成功如下图所示:
![](https://static001.geekbang.org/infoq/3e/3ee47d82b0319ea604dcb5e3cf8b613c.png)
3.2 检查 hb 命令
安装完成后,可以通过 hb help 命令测试是否可以正常使用。
如果报告 command not found,如下图所示:
![](https://static001.geekbang.org/infoq/28/28d6bf47294ca39717cf7dc3a9d1fd2f.png)
则表明 hb 所在目录没有加到 PATH 环境变量中,如果是 Ubuntu 系统,需要先检查~/.profile 文件是否存在,并检查其中是否有如下代码:
如果有以上代码,关闭当前 shell 会话,重新打开,就可以正常使用 hb 命令了。
如果没有~/.profile 文件,则可以将以上代码添加到 ~/.bashrc 文件中。
如果报告 Please call hb utilities inside ohos source directory,则是正常的,需要在 ohos 源码目录下执行 hb 命令。
![](https://static001.geekbang.org/infoq/07/072a8b58e275d548020b263f9acff0f1.png)
四、编译 RISC-V 架构的 OpenHarmony 轻量系统
4.1 设置 hb 构建目标
开始编译之前,首先需要设置 hb 构建的目标产品或开发板是什么。使用 hb set 命令,进行交互式设置。
依次选择 mini → qemu_riscv_mini_system_demo
![](https://static001.geekbang.org/infoq/c6/c6960f9865f0b72ad6814a1f8d207adf.png)
![](https://static001.geekbang.org/infoq/dd/dd8520d82636ac1c8391e9c335f5651b.png)
设置完成后,会在源码目录的顶层生成 ohos_config.json 文件,内容如下:
![](https://static001.geekbang.org/infoq/c2/c2541e7599162628b3cd9b71a44aa86c.png)
4.2 启动 hb 构建过程
使用 hb set 设置完目标平台后,就可以使用 hb build 命令进行编译了。
构建完成后,输出如下:
![](https://static001.geekbang.org/infoq/18/18cc6d71089069b31f0c41db1d4d76e4.png)
五、问题解决
5.1 hb set 报错问题解决
如果遇到报错:cannot import name 'Mapping' from 'collections’
![](https://static001.geekbang.org/infoq/76/768f339fb2e723f6510ad7f0f92ae2ea.png)
这个报错是因为 Python 3.10 中,Mapping 已经不在 collections 包中了。
解决方法,修改文件: ~/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py
手动将 collections 改为 collections.abc 即可。
六、参考链接
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/
版权声明: 本文为 InfoQ 作者【码匠许师傅】的原创文章。
原文链接:【http://xie.infoq.cn/article/c71c5091b919e157b5414812d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论