2025年8月15日顺利编译
最新版本适配情况请查看组织首页状态
介绍
该项目介绍,如何编译运行 OpenHarmony 5.1.0 Release标准系统。
搭建开发环境
1.1 硬件环境
准备一台装有ubuntu20.04系统X86主机,内存最低配置要求16G。
下载ubuntu iso文件:
Ubuntu 20.04.6 LTS (Focal Fossa)
使用rufus制作ubuntu启动盘:
1.2 下载repo脚本文件
参考:
Ubuntu22.04中生成gitee码云的ssh-key并添加到gitee网站上_ubuntu gitee key-CSDN博客
-
注册码云gitee账号。
-
注册码云SSH公钥,请参考码云帮助中心。
-
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store -
安装码云repo工具,可以执行如下命令。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
如果没有权限,可下载至其他目录,并将其配置到环境变量中chmod a+x /usr/local/bin/repo
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
vim ~/.bashrc # 编辑环境变量
export PATH=~/bin:$PATH # 在环境变量的最后添加一行repo路径信息
source ~/.bashrc # 应用环境变量
1.3 获取OpenHarmony标准系统源码
通过repo + ssh 下载(需注册公钥,请参考码云帮助中心)。
export WORK_SPACE=/home/xxx/OpenHarmony #替换成自己定义的workspace路径
export PROJ_ROOT=$WORK_SPACE/5.1-Release
mkdir $WORK_SPACE
mkdir $PROJ_ROOT
cd $PROJ_ROOT
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v5.1.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
注意:如果在repo sync -c 时提示大类超时、未找到文件请返回1.2注册gitee账号,设置git安装git-lfs
1.4 获取编译工具链
参考OpenHamony快速入门文档,基于命令行入门。
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 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 default-jdk libssl-dev libtinfo5 genext2fs u-boot-tools mtools mtd-utils scons gcc-arm-none-eabi abootimg libelf-dev libxcursor-dev libxrandr-dev libxinerama-dev
1.5 执行prebuilts
在源码根目录下执行脚本,安装编译器及二进制工具。
cd $PROJ_ROOT
build/prebuilts_download.sh

设备代码下载与整合
2.1 下载适配源码
进到项目根目录,下载设备源码:
git clone -b OpenHarmony-5.1.0-Release https://gitee.com/ohos-porting-communities/vendor_opc.git vendor/opc
git clone -b OpenHarmony-5.1.0-Release https://gitee.com/ohos-porting-communities/device_board_opc.git device/board/opc
git clone -b OpenHarmony-5.1.0-Release https://gitee.com/ohos-porting-communities/device_soc_opc.git device/soc/opc
# 下面是其他内涵x86可以不下载
#下载香橙派5Plus/Ultra内核
git clone -b OpenHarmony-5.1.0-Release https://gitee.com/ohos-porting-communities/linux_5.10_opi.git kernel/linux/linux-5.10-opi
#下载FILY F12内核
git clone -b OpenHarmony-5.0-Release https://gitee.com/ohos-porting-communities/kernel_linux_5.10_f12.git kernel/linux/linux-5.10-f12
下面是其他内核x86可以不下载
根据编译的机型,选择合并补丁或适当修改源码:
代码修改说明:
#香橙派5Plus因为我默认使用了5.5寸LCD触摸屏,HDMI输出会镜像触屏比例显示,显示异常的可以修改以下文件
device/board/opc/opi5plus/kernel/build_kernel.sh
注释掉patch -p1 < ${KERNEL_PATCH_PATH}/0001-enable-lcd.patch
另外根据自己显示器比例修改dpi参数
vendor/opc/opi5plus/custom_conf/window/display_manager_config.xml
代码编译
3.1 OpenHarmony编译
cd $PROJ_ROOT
OpenHarmony 64bit系统编译问题,补丁修复统一使用x86补丁
cd vendor/opc/x86_general/patches
sh patch.sh
#X86 general
./build.sh --product-name x86_general --ccache
#下面是其他内核编译方法,不用理会
#香橙派5Plus
./build.sh --product-name opi5plus --ccache
#香橙派5Ultra
./build.sh --product-name opi5ultra --ccache
#FILY F12
./build.sh --product-name f12 --ccache
**注意:**编译x86一定要打补丁
注意2: 出现 find component x86_general failed 或者 find component prebuilt_hap failed 请退回到1.2操作后重新下载
编译成功提示:

post_process
=====build opi5plus successful.
编译生成的文件
$PROJ_ROOT/out/opi5plus/packages/phone/images/system.img
$PROJ_ROOT/out/opi5plus/packages/phone/images/vendor.img
$PROJ_ROOT/out/opi5plus/packages/phone/images/userdata.img
$PROJ_ROOT/out/opi5plus/packages/phone/images/ramdisk.img
3.2 额外镜像编译 编译好OpenHarmony的文件之后使用以下命令内核并打包手机boot.img/树莓派4B完整镜像
#小米POCO F1
cd device/board/opc/beryllium/kernel
./build_kernel.sh
#小米6
cd device/board/opc/sagit/kernel
./build_kernel.sh
#树莓派4B
./build.sh --product-name rpi4 --ccache --build-target rpi_image
镜像烧写
手机镜像参考我的文章使用twrp刷入或者bootloader线刷
https://ost.51cto.com/posts/20924
树莓派4B使用Win32DiskImager烧录整合好的rpi_image.img到microSD卡中
香橙派5Plus和FILY F12参考主线设备rk3568的说明文档使用RKDevTool烧写
x86镜像烧写
使用U盘进行启动:
1、准备一个8G以上高速U盘
2、使用DiskGenius将U盘转换为GUID分区表格式

3、使用DiskGenius分区工具分出4个分区,分区依次如下:(*新建分区时点击详细参数,删除分区名字)
boot 500M fat32
system 3G ext4
vendor 500M ext4
data 3G ext4


注意:笔者中间有几次没成功,最后没清空分区名称也启动了,上面提到的要清空是官方要求
4、直接复制device/board/opc/x86_general/loader文件夹内容到boot分区根目录
5、使用Linux的dd命令烧录镜像,用df确认需要烧写的分区,也就是sdx中的x,可能是a、b、c(*Windows可以按照cmder应用实现支持dd命令)
sudo dd if=system.img of=/dev/sdx2 bs=1M
sudo dd if=vendor.img of=/dev/sdx3 bs=1M
注意:4、5 两个操作要连着做,在boot中要加入bzImage、eng_system.img、ramdisk.img,否则无法引导,这三个文件在生成的images文件夹中。

6、data分区为格式化空分区
7、插入电脑,BIOS选择U盘启动
注意:U盘启动时有可能提示没有签名,需要修改bios启动设置

8、进入系统



9、结束语
经过几天的折腾安装完了,目前系统还不是很完善,如果只是想进入系统看看鸿蒙系统什么样子可以下载我编译好的文件
链接: https://pan.baidu.com/s/1OLntDY5G7aIGE962_hFnUQ 提取码: ohos