# EduDist_Docs
**Repository Path**: open-harmony-edu-dist/EduDist_Docs
## Basic Information
- **Project Name**: EduDist_Docs
- **Description**: OpenHarmony-EduDist Documentation
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 4
- **Created**: 2024-12-26
- **Last Updated**: 2025-10-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OpenHarmony-EduDist 文档
文档维护:@SSRVodka
### 介绍
OpenHarmony 教学版。完善 OpenHarmony OS 对 QEMU 模拟器的适配,旨在形成开箱即用的实验平台。
主仓:[manifest](https://gitee.com/open-harmony-edu-dist/manifest);
主要支持:
- QEMU 模拟器直接运行;
- 支持多种体系架构(AArch64/x86_64/RISC-V);
- Docker 配套编译和启动环境;
- 分布式软总线应用;
项目|OH EduDist|oh-emu (vSoC)|Huawei Emulator|DevEco Previewer
---|---|---|---|---
是否开源|✅|部分开源|✖️|✖️
支持最新版本|5.0.3 / 5.0.2 Release|4.1.2.1 Canary 1|Up To Date|Up To Date
支持体系架构|AArch64/x86_64/RISC-V|x86_64|ARM/x86_64|-
是否支持运行 OpenHarmony 应用|✅|✅|✖️ (仅 HarmonyOS)|✅ (仅模拟 UI)
是否支持 HDC|✅|✅|✅|✖️
是否能一台机器运行多实例|✅|✖️ (不支持多实例网络)|✖️|✖️
是否支持 ArkTS Native 和调试|✅|✅|✅ (仅 HarmonyOS)|✖️
是否支持内核模块定制|✅|❓ (需要修改 vSoC 源码)|✖️|✖️
是否支持 WIFI|✅|✅ (仅桥接模拟)|✅ (仅桥接模拟) *|✖️
是否支持以太网|✅|✅ (仅单实例)|✅|✖️
是否支持相机|✅|✖️|✖️ *|✖️
是否支持声音设备|✅|✅|✅ (仅 HarmonyOS)|✖️
是否支持蓝牙|✖️|✖️|✖️|✖️
是否支持 USB 设备|✅|✖️|✖️ *|✖️
是否支持分布式软总线|正在适配|✖️|✖️|✖️
是否支持 TEE|正在适配|❓|❓|✖️
*:数据信息来源 [Harmony OS Doc](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-emulator-specification-V5);
❓:未实际测试;
文档主要分为以下几个部分:
- 子文档入口;
- 镜像发行包(Release);
- OH Edu Dist 的快速开始;
- OH Edu Dist 的 Demo App;
- 镜像编译文档;
- 常见问题;
### 子文档入口
- [QEMU 启动脚本文档](./qemu-startup.md);
- [相机文档](./camera.md);
- [音频输入输出配置文档](./audio-config.md);
- [磁盘配置文档](./mount-disk.md);
- [网络配置文档](./network-config.md);
- [WIFI 文档](./wifi.md);
- [内核模块文档](./kernel-module.md);
- [docker 管理文档](./oh-docker.md);
- [应用 Demo 示例](https://gitee.com/open-harmony-edu-dist/demo_app_edu);
- [第三方库的支持 (Native? Python?)](#对第三方库的支持);
### OH EDU 镜像发行包 (Release)
- 5.0.2 Release x86_64 镜像:
  ```
  文件名: build-20250621.7z
  构建时间: 2025-06-21 23:05:17
  链接: https://pan.sjtu.edu.cn/web/share/531657580c3660b3aae5c7b4170e9085
  提取码: 3o8c
  过期时间: 2026-08-31 17:12:42
  ```
- 5.0.2 Release AArch64 镜像:
  ```
  文件名: build-aarch64-20250626.7z
  构建时间: 2025-04-25 16:03:25
  链接: https://pan.sjtu.edu.cn/web/share/6a2ca83b64bd3d59b219046b150af9e6
  提取码: rwhk
  过期时间: 2026-08-31 20:42:35
  ```
- 更多版本等待构建......
### OH EDU 快速开始
#### QEMU 虚拟机运行
1. 首先确保您的机器已经安装 QEMU 程序,并完成环境变量 PATH 的配置。如果没有,请前往 QEMU 官网下载:
   - [Windows 64 位版](https://qemu.weilnetz.de/w64/);
   - [Linux 版](https://www.qemu.org/download/#linux);
2. 环境变量的配置:
   - Windows:右击我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 选中 Path 并点击编辑 -> 添加 `qemu-xxx.exe` 所在的目录(你的安装目录);
   - Linux:在 `.bashrc/.zshrc` 配置文件中设置 `export PATH=...` 即可。如果使用包管理器(例如 apt)安装,则不需要设置环境变量。
3. 然后下载发行包。下载即用:[OH EDU 镜像发行包](#OH EDU 镜像发行包 (Release));
##### Linux (宿主机) 使用发行包
解压发行包后已经包含示例启动脚本 `qemu_run.example.sh`。直接执行即可启动。这个脚本使用最简单的实例配置。网络使用端口映射、不含 wifi、不含相机。
更复杂的配置请参考本文档的 [其他子文档](#子文档入口) 进行按需配置。
##### Windows (宿主机) 使用发行包
解压发行包后已经包含示例启动脚本 `qemu_run.example.bat`。直接执行即可启动。这个脚本使用最简单的实例配置。网络使用端口映射、不含 wifi、不含相机。
更复杂的配置请参考本文档的 [其他子文档](#子文档入口) 进行按需配置。
##### 备注
如果您有更复杂的网络构建需求,例如一台机器上启动多个 OH 模拟器实例,可以参考 Docker 运行管理方法,您可以更方便地进行多实例的网络配置。参见文档 [OH QEMU Docker Doc](./oh-docker.md);
虚拟机运行后,您可以在标准输出 / ohemu.log(如果以 Docker 运行)找到虚拟机开放的局域网 IP,使用 `hdc` 连接 55555 端口(默认端口)即可。现在即可体验和物理机近乎一样的功能!
### OH EDU 的 Demo App
请参见 [Demo App 仓](https://gitee.com/open-harmony-edu-dist/demo_app_edu);
### OH EDU 镜像编译
> 您还可以使用 docker 管理编译环境,一键开始编译。
>
> 使用请参见文档 [OH QEMU Docker Doc](./oh-docker.md);
#### 1. 环境准备
你需要有一台用于编译的计算机,最低要求:
- **最好使用 Linux 操作系统**。本文档将以 Ubuntu 22.04 为环境介绍;
- **最低 16 GB RAM**:ubuntu 22.04 实测,如果启用了 `--ccache` 并且 RAM 低于这个值,会在编译时频繁出现错误信息不明的报错且重启编译后能解决;
- **最低 i5 CPU,4 核或以上**;
- 最低磁盘空间 200 GB(如果只编译一种平台的镜像 + SDK),**全量编译则最少 500 GB**;
如果你是 Windows 用户 / 不想污染计算机环境,可以使用 VMware 创建满足上述需求的 Ubuntu 22.04 虚拟机;
对于一个全新的 Ubuntu 22.04 Desktop 的机器,你应该执行下面安装如下库:
```shell
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev
```
> 这里贴一下官网的安装命令,针对 Ubuntu 20.04 以前的版本。这个指令在 Ubuntu 22.04 上测试会有冲突出现:
>
> ```shell
> sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev
> ```
如果你是第一次使用 `git`,请配置 `git` 的身份信息:
```shell
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
接着你应该安装 码云专用的 `repo` 下载工具。下述命令中的安装路径以 `~/bin` 为例,请用户自行创建所需目录。
```shell
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo 
chmod a+x ~/bin/repo
# 如需隔离包,请自行创建 python 虚拟环境并使用
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
# 添加 repo 的环境变量
# 如果你的 repo 下载后放置在 PATH 中存在的位置,则可以跳过此步
vim ~/.bashrc               # 编辑环境变量
export PATH=~/bin:$PATH     # 在环境变量的最后添加一行repo路径信息
source ~/.bashrc            # 应用环境变量
```
然后下载全量源代码,并准备好交叉编译工具链:
```shell
repo init -u https://gitee.com/open-harmony-edu-dist/manifest -b refs/heads/OpenHarmony-5.0.2-Release --no-repo-verify
repo sync -c && repo forall -c 'git lfs pull'
build/prebuilts_download.sh
```
#### 2. QEMU 镜像编译
如果您需要编译 QEMU 镜像,请将 `product-name` 参数设置为:
```shell
./build.sh --product-name x86_64_virt
```
或者:
```shell
./build.sh --product-name arm64_virt
```
```shell
./build.sh --product-name arm_virt
```
```shell
./build.sh --product-name riscv_virt
```
这主要取决于您的 QEMU 运行的平台。例如如果您运行 QEMU 的宿主机是 x86_64 架构,则构建 `x86_64_virt` 可以享受 KVM 加速。
最终,构建完成的镜像位于 `out/{arch_name}/packages/phone/images/` 目录下。其中 `{arch_name}` 代表你所选择构建的平台。
QEMU 测试启动的脚本位于 `vendor/edu` 下,如果有需要打包分发,可以将这两个目录压缩:
```shell
tar -zcpvf oh-qemu-images.tar.gz vendor/edu/ out/{arch_name}/packages/phone/images/
```
您可以添加 `--ccache` 参数加速增量编译,但这会增大编译中间产物所需空间。
> 注:使用参数与 hb 编译脚本相同。
>
> - `--target-cpu` 可选:`{arm,arm64,x86_64,x64}`;
> - `--product-name` 根据实际产品,常用有:`ohos-sdk, x86_64_virt, arm64_virt, arm_virt, riscv_virt`;
### 对第三方库的支持
正在适配过程中。如果您有需要可以提出 issue。
常见的以 Python 及其第三方库生态为例,参考仓库:[OH EDU Python](https://github.com/SSRVodka/oh-edu-python);
### 常见问题
#### 模拟器内部总是休眠怎么办?
 在 HDC shell 内执行:
```shell
power-shell setmode 602
power-shell timeout -o 43200000
```
#### 如何正常关机?
在 HDC shell 内执行:
```shell
reboot shutdown
```
#### OH EDU 虚拟机的各种网络如何配置?
参见 [Network Config Doc](./network-config.md);
#### OH EDU 虚拟机安装应用时空间不足?
参见 [Disk Mount Doc](./mount-disk.md);
#### OH EDU 音频设备无法录音/输出?
参见 [Audio Config Doc](./audio-config.md);
#### Windows 下为什么会出现这个问题?
```
qemu-system-x86_64: -accel whpx: WHPX: No accelerator found, hr=00000000
qemu-system-x86_64: -accel whpx: failed to initialize whpx: No space left on device
```
因为你的 Windows 没有开启 Hyper-V 虚拟化。你可以在搜索引擎中搜索 “hyperv windows 开启” 相关字样,大概率第一条就能解决问题。
#### 如何在宿主机连接 OH EDU 虚拟机内部的 OHOS?
默认开发 HDC 端口 55555,在系统启动时会有如下信息段:
在 HDC shell 内执行:
```shell
power-shell setmode 602
power-shell timeout -o 43200000
```
#### 如何正常关机?
在 HDC shell 内执行:
```shell
reboot shutdown
```
#### OH EDU 虚拟机的各种网络如何配置?
参见 [Network Config Doc](./network-config.md);
#### OH EDU 虚拟机安装应用时空间不足?
参见 [Disk Mount Doc](./mount-disk.md);
#### OH EDU 音频设备无法录音/输出?
参见 [Audio Config Doc](./audio-config.md);
#### Windows 下为什么会出现这个问题?
```
qemu-system-x86_64: -accel whpx: WHPX: No accelerator found, hr=00000000
qemu-system-x86_64: -accel whpx: failed to initialize whpx: No space left on device
```
因为你的 Windows 没有开启 Hyper-V 虚拟化。你可以在搜索引擎中搜索 “hyperv windows 开启” 相关字样,大概率第一条就能解决问题。
#### 如何在宿主机连接 OH EDU 虚拟机内部的 OHOS?
默认开发 HDC 端口 55555,在系统启动时会有如下信息段:
 使用 HDC 远程调试功能连接该 IP 地址(以上述图片为例,192.168.122.110):
```shell
hdc tconn 192.168.122.110:55555
```
然后直接连接即可进入 Shell 进行进一步调试或开发:
```shell
hdc -t 192.168.122.110:55555 shell
```
#### 如何使用 OH Full SDK ?
您可以在每日构建下载。每日构建:https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist。在每日构建 master 分支下找到名称为对应硬件的流水线,以此获取当前对应版本的系统镜像(v 5.0.2 beta1);
如果流水线中没有当前版本的 Full SDK,则需要编译对应的 Full SDK,请在进行环境准备后,在源码仓库的根目录上执行进行自行编译。这个操作需要预留至少 40 GB 空间:
```shell
./build.sh --product-name ohos-sdk
```
### 参与贡献
1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request
### 特技
1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
使用 HDC 远程调试功能连接该 IP 地址(以上述图片为例,192.168.122.110):
```shell
hdc tconn 192.168.122.110:55555
```
然后直接连接即可进入 Shell 进行进一步调试或开发:
```shell
hdc -t 192.168.122.110:55555 shell
```
#### 如何使用 OH Full SDK ?
您可以在每日构建下载。每日构建:https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist。在每日构建 master 分支下找到名称为对应硬件的流水线,以此获取当前对应版本的系统镜像(v 5.0.2 beta1);
如果流水线中没有当前版本的 Full SDK,则需要编译对应的 Full SDK,请在进行环境准备后,在源码仓库的根目录上执行进行自行编译。这个操作需要预留至少 40 GB 空间:
```shell
./build.sh --product-name ohos-sdk
```
### 参与贡献
1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request
### 特技
1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)