# oh-rpi3b **Repository Path**: ownery/oh-rpi3b ## Basic Information - **Project Name**: oh-rpi3b - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 25 - **Created**: 2021-08-16 - **Last Updated**: 2021-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 树莓派3B快速上手 OpenHarmony ## 预编译固件 | 镜像 | 下载地址 | | -------- | ------------------------------------------------------------ | | 完整镜像 | [oh-rpi3b-full.img.xz](https://mirror.iscas.ac.cn/OpenHarmony/os/2.0/images/rpi-3b/20210815/oh-rpi3b-full.img.xz) | ## 烧录方式 下载完整镜像,准备一张至少1GB的SD卡 将SD卡通过读卡器连接电脑。 **Windows** 1. 使用解压工具解压oh-rpi3b-full.img.xz,得到oh-rpi3b-full.img。 2. 使用[Win32DiskImager](https://sourceforge.net/projects/win32diskimager/)进行烧录 **Ubuntu** ```bash xzcat oh-rpi3b-full.img.xz | sudo dd of=/dev/your_sdcard bs=8M ``` ## 分区方案 | 分区 | 大小 | 文件系统 | | ------ | ---- | -------- | | BOOT | 64M | vfat | | SYSTEM | 512M | ext4 | | VENDOR | 64M | ext4 | | DATA | 300M | ext4 | ## 编译方法 ### 搭建编译环境 安装Ubuntu 18.04环境 ```bash # 安装必要的包 sudo apt update sudo apt install -y 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 lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip m4 wget bc python python3 \ android-tools-fsutils libssl-dev mtools # 安装repo curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 | sudo tee /usr/local/bin/repo >/dev/null sudo chmod a+x /usr/local/bin/repo # 将/bin/sh设置为/bin/bash sudo ln -sf bash /bin/sh # 设置git信息 git config --global user.name your_name git config --global user.email your_email ``` ### 下载编译内核需要的工具链 ``` mkdir ~/ohos cd ~/ohos wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz ``` ### 编译OpenHarmony #### 拉取源码 ```bash cd ~/ohos mkdir openharmony cd openharmony repo init -u https://gitee.com/xfan1024/oh-rpi3b.git -m oh-rpi3b.xml --no-repo-verify repo sync -c repo forall -c 'git lfs pull' ./build/prebuilts_download.sh ``` #### 打补丁 ```bash cd ~/ohos/openharmony python3 projectpatch/patch.py ``` #### 开始编译 ```bash cd ~/ohos export PATH="$PATH:$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin" cd openharmony ./build.sh --product-name rpi3 --ccache ``` #### 修改system.img/vendor.img ```bash cd ~/ohos mkdir rpi3b simg2img openharmony/out/ohos-arm-release/packages/phone/images/system.img rpi3b/system.img simg2img openharmony/out/ohos-arm-release/packages/phone/images/vendor.img rpi3b/vendor.img cp openharmony/out/ohos-arm-release/packages/phone/images/boot.img rpi3b/boot.img cd rpi3b resize2fs system.img 512M resize2fs vendor.img 64M mkdir system sudo mount system.img system # 修复selinux权限 sudo setfattr -n security.selinux -v u:object_r:adbd_exec:s0 system/system/bin/dropbear sudo setfattr -n security.selinux -v u:object_r:adbd_exec:s0 system/system/bin/udevadm # 安装busybox (可选 https://blog.csdn.net/qq_17814753/article/details/117747120) sudo wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-armv7r -O system/system/bin/busybox sudo chmod u+s,a+x system/system/bin/busybox sudo setfattr -n security.selinux -v u:object_r:adbd_exec:s0 system/system/bin/busybox sudo ln -s busybox system/system/bin/vi sudo umount system cd .. ``` ## 制作SD卡 ### SD卡分区 ```bash # 插入SD卡,假设SD卡在电脑上的路径为 /dev/sdb # 注意,SD卡设备文件路径非常重要,若填写错误可能会对你的计算机数据带来灾难性损坏 sddev=/dev/sdb sddev_boot=${sddev}1 sddev_system=${sddev}2 sddev_vendor=${sddev}3 sddev_data=${sddev}4 sudo dd if=/dev/zero of=$sddev bs=8M count=1 sudo fdisk $sddev # 分别输入以下信息 n # 创建分区 p # 主分区 1 # 选择分区1 # 保持默认直接回车 +64M # 分区1大小 n # 创建分区 p # 主分区 2 # 选择分区2 # 保持默认直接回车 +512M # 分区2大小 n # 创建分区 p # 主分区 3 # 选择分区3 # 保持默认直接回车 +64M # 分区3大小 n # 创建分区 p # 主分区 # 保持默认直接回车 +300M # 分区4大小 a # 设置boot flag 1 # 选择分区1 t # 设置分区类型 1 # 选择分区1 c # 设置为FAT32 w # 保存设置并退出 sudo partprobe $sddev sudo mkfs.ext4 -L userdata $sddev_data ``` ### 写入数据 ```bash cd ~/ohos # 写入BOOT分区 sudo dd if=rpi3b/boot.img of=$sddev_boot bs=8M # 写入SYSTEM分区 sudo dd if=rpi3b/system.img of=$sddev_system bs=8M # 写入VENDOR分区 sudo dd if=rpi3b/vendor.img of=$sddev_vendor bs=8M ```