OpenHarmony开发者论坛

标题: 【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版本 [打印本页]

作者: xusiwei1236    时间: 2024-7-14 16:20
标题: 【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版本
[md]# 【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版本

本文将介绍如何为QEMU RISC-V虚拟平台构建OpenHarmony轻量系统。得益于QEMU的CPU指令集模拟执行能力,该方法可以在没有开发板的情况下调试和运行OpenHarmony系统源码。本文介绍的该方法,可以用于OpenHarmony操作系统源码的学习和研究。

## 一、背景介绍

QEMU是一个开源的虚拟化平台,它可以实现目标平台的CPU指令级别的模拟。因此,可以使用QEMU进行操作系统的学习和研究,也可以在没有硬件的情况下对开发板进行模拟。

QEMU是一款开源的虚拟机监控程序,可模拟多种硬件环境,并支持多种处理器架构。它能够在不同平台上实现虚拟化,运行各种操作系统。QEMU具有高度的灵活性和可移植性,被广泛用于开发、测试和部署虚拟化环境。

## 二、准备OpenHarmony源代码

**开**始之前,需要准备:

* Ubuntu 系统的开发环境(可以是物理主机也可以是虚拟机);
* 下载OpenHarmony 4.1 Release源代码,参考此前帖子:
  * [【开源鸿蒙】下载 OpenHarmony 4.1 Release 源代码](https://blog.csdn.net/xusiwei1236/article/details/137625177)

## 三、准备hb命令

### 3.1 安装hb命令

编译OpenHarmony源码之前,需要先安装hb命令。

```
# 跳转到OpenHarmony源码目录,例如上一篇文章介绍的 OpenHarmony 4.0 Release
cd ohos/openharmony

# 如果没有 pip 命令,则需要先安装 python3-pip
# sudo apt install python3-pip

# 安装 hb 命令:
pip install build/hb
```

安装成功如下图所示:

![Untitled.png](https://forums-obs.openharmony.c ... ijoft8dyyyytqey.png "Untitled.png")



### 3.2 检查hb命令

安装完成后,可以通过 hb help命令测试是否可以正常使用。

如果报告 **command not found**,如下图所示:

![Untitled1.png](https://forums-obs.openharmony.c ... a1mnolhhjhlx6ia.png "Untitled 1.png")



则表明hb所在目录没有加到PATH环境变量中,如果是Ubuntu系统,需要先检查\~/.profile文件是否存在,并检查其中是否有如下代码:

```
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
   PATH="$HOME/.local/binPATH"
fi
```

如果有以上代码,关闭当前shell会话,重新打开,就可以正常使用hb命令了。

如果没有\~/.profile文件,则可以将以上代码添加到 \~/.bashrc 文件中。

如果报告Please call hb utilities inside ohos source directory,则是正常的,需要在ohos源码目录下执行hb命令。

![Untitled2.png](https://forums-obs.openharmony.c ... btmokbt6opkoe6o.png "Untitled 2.png")



## 四、编译RISC-V架构的OpenHarmony轻量系统

### 4.1 设置hb构建目标

开始编译之前,首先需要设置hb构建的目标产品或开发板是什么。使用hb set命令,进行交互式设置。

依次选择 mini → qemu\_riscv\_mini\_system\_demo

![Untitled3.png](https://forums-obs.openharmony.c ... 0n2w8wqgndnszsj.png "Untitled 3.png")

![Untitled4.png](https://forums-obs.openharmony.c ... u2fax7mw9aaowtv.png "Untitled 4.png")

设置完成后,会在源码目录的顶层生成 ohos\_config.json 文件,内容如下:

![Untitled5.png](https://forums-obs.openharmony.c ... oooxsinoxvw2v8n.png "Untitled 5.png")

### 4.2 启动hb构建过程

使用hb set设置完目标平台后,就可以使用hb build命令进行编译了。

构建完成后,输出如下:

![Untitled6.png](https://forums-obs.openharmony.c ... lixbxibque3z0yb.png "Untitled 6.png")

## 五、问题解决

### 5.1  hb set 报错问题解决

如果遇到报错:cannot import name 'Mapping' from 'collections’

![Untitled7.png](https://forums-obs.openharmony.c ... ec6nvnfna606en6.png "Untitled 7.png")

这个报错是因为Python较新版本中,Mapping已经不在collections包中了。

解决方法,修改文件: \~/.local/lib/python3.10/site-packages/prompt\_toolkit/styles/from\_dict.py

手动将 collections 改为 collections.abc 即可。


## 六、参考链接

1. OpenHarmony官网: [https://www.openharmony.cn/](https://www.openharmony.cn/)
2. OpenHarmony编译形态整体说明: [https://docs.openharmony.cn/page ... dix-compiledform.md](https://docs.openharmony.cn/page ... dix-compiledform.md)
3. OpenHarmony代码仓: [https://gitee.com/openharmony/](https://gitee.com/openharmony/)
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5