1 OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源

开鸿智谷 2023-02-08 10:58 次阅读

开篇引言

安卓设备的引导需要boot.img镜像,其中含有内核镜像,设备树,boot配置文件,initrd.img根文件系统镜像,开发板因为是开发用途,系统引导基本没有限制,而成品安卓手机往往有各种限制,我们需要通过刷入postmarketOS进行确认手机是否可以启动第三方系统,从中获取引导启动的相关信息以及文件,并仿照postmarketOS的引导镜像创建我们自己的引导镜像。

1,准备postmarketOS编译环境

参照​​pmbootstrap - postmarketOS​​ 中的 Installation -- From git 准备编译环境

  1. $ git clone https://git.sr.ht/~postmarketos/pmbootstrap
  2. $ mkdir -p ~/.local/bin
  3. $ ln -s "$PWD/pmbootstrap/pmbootstrap.py" ~/.local/bin/pmbootstrap
  4. $ pmbootstrap --version
  5. 1.50.1

2,执行初始化

  1. 1. pmbootstrap init
OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

或者替换使用镜像源,不然会有网络问题,需要替换两个镜像源地址,postmarketOS镜像,和Alpine Linux镜像

使用以下命令设置设置成清华源进行初始化,也可以根据镜像源列表找自己喜欢的设置

  1. 1. pmbootstrap --mirror-pmOS https://mirrors.tuna.tsinghua.edu.cn/postmarketOS/ --mirror-alpine https://mirrors.tuna.tsinghua.edu.cn/alpine/


postmarketOS镜像源列表:​​postmarketOS // Official postmarketOS Mirrors​​

Alpine Linux镜像源列表:​​Mirror health (alpinelinux.org)​

3,编译安卓格式的刷机包

  1. 1. pmbootstrap install --android-recovery-zip

编译时间会比较长,中间会提示创建进入手机系统的新密码

如果中途出现错误,可以重试几次,仍然不行的话删除整个work目录,重新执行初始化再编译刷机包,最终结果如下

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

4,导出刷机包

  1. 1. pmbootstrap export
OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

执行以下命令找到刷机包位置

cd $(dirname $(readlink /tmp/postmarketOS-export/pmos-*.zip))

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

至此拿到刷机包

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

查找资料的时候有参考这篇文章的方案二部分,在此贴出

​​手机运行Docker: 从修改内核到刷入原生Linux | yzddMr6's Blog​

5,刷入手机验证并获取芯片控制器名称

音量上+电源开机进入twrp(twrp的安装是搞机必备,网上教程很多,在此不再重复)

​​小米(Mi) 6小米(Mi) 6 手机刷 TWRP 方法,刷三方Recovery方法(解决卡米问题)刷机解锁 (onfix.cn)​​​

点击安装

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

点击刷机包

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

确认刷入

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

刷机会出现错误,不用管

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

刷完重启,等待一段时间直到显示welcome信息

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

输入用户名:user,密码:自己之前设置的,进入系统

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

至此确认手机正常运行Linux系统,显示,触摸等正常工作。

6,解包获取移植需要的资料

解包获取的资料:

bootimg.cfg:boot分区配置信息,内核启动参数

config:默认内核编译配置,后续适配内核在此基础进行变更

firmware:启动加载必须的驱动固件文件

右键解压缩pmos-xiaomi-sagit.zip得到pmos-xiaomi-sagit

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

同样使用右键解压缩rootfs.tar.gz得到rootfs,在rootfs/boot文件夹拿到boot.img和内核编译的config配置

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

安装安卓boot打包解包工具:

  1. sudo apt update
  2. sudo apt install abootimg

把boot.img复制到任意的文件夹,然后使用以下命令解包:

  1. 1. abootimg -x boot.img

得到boot分区配置bootimg.cfg

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

查看initrd.img文件格式为gzip压缩文件

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

使用gzip解压,发现解压失败,原因为后缀名不支持,我们使用mv命令复制initrd.img为initrd.img.gz,然后使用解压命令就可以成功解压了,解压后原来的initrd.img会被解压出的文件替换掉,这时initrd.img的格式为cpio镜像文件

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

使用cpio解压initrd.img镜像

  1. 1. cpio -idmv < initrd.img

得到我们需要的boot阶段所必须的固件firmware,后面要编译进OH的ramdisk镜像中

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

7,获取正常启动的log

参考上面手机运行docker那篇文章,用usb连接电脑,设置好驱动

打开命令提示符,使用ssh连接Linux,ip是固定的172.16.42.1

  1. 1. ssh user@172.16.42.1

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

输入dmesg打印输出内核log,这个是正常的内核启动log,复制下来保存好以便移植时启动出错或者驱动有问题时方便进行对照

  1. 1. dmesg

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

8,获取设备名,分区信息

连接Linux,输入以下命令获取信息

获取USB控制器名称,后面移植hdc连接程序会用到

  1. ls /sys/class/udc/
  2. a800000.usb

获取存储控制器名称,后面配置分区会用到

  1. ls /sys/devices/platform/soc

暂时判断1da4000.ufshc为存储控制器名称

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

重启,进入twrp,输入以下命令进入recovery的shell

  1. 1. adb shell

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

输入以下命令可以交叉确认1da4000.ufshc为存储控制器名称

  1. 1. ls dev/block/platform/soc/

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

获取分区信息

  1. 1. ls -al /dev/block/platform/soc/1da4000.ufshc/by-name/

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

手机上勾选挂载vendor分区

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

  1. 1. df -h

OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源-开源基础软件社区

确认vendor分区对应到sde42 -> cust

system分区因为安装pmOS的缘故无法挂载,但是可以确定分区映射关系是,

/dev/block/platform/soc/1da4000.ufshc/by-name/cust ---> sde42 ---> vendor

/dev/block/platform/soc/1da4000.ufshc/by-name/system ---> sde43 ---> system

/dev/block/platform/soc/1da4000.ufshc/by-name/userdata --->sda17 ---> data

至此移植需要提前准备的信息基本讲完,下篇开始讲解OpenHarmony编译的部分,敬请期待

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97370
  • OpenHarmony
    +关注

    关注

    25

    文章

    3713

    浏览量

    16251
收藏 人收藏

    评论

    相关推荐

    多平台FPGA工程快速移植与构建

    作为一名FPGA工程师,经常需要在多个FPGA设备之间移植项目,核心的问题是IP的管理和移植,今天通过安装和使用 FuseSoC 在多个 AMD FPGA 之间移植一个简单的项目。
    的头像 发表于 11-20 16:12 802次阅读
    多平台FPGA工程快速<b class='flag-5'>移植</b>与构建

    【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植

    【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植
    的头像 发表于 10-22 14:46 586次阅读
    【北京迅为】i.mx8mm嵌入式linux开发<b class='flag-5'>指南</b>第四篇 嵌入式Linux系统<b class='flag-5'>移植</b>篇第六十九章uboot<b class='flag-5'>移植</b>

    Nordic-RT-Thread5.1.0移植笔记

    Nordic-RT-Thread5.1.0移植笔记
    的头像 发表于 10-16 08:09 419次阅读
    Nordic-RT-Thread5.1.0<b class='flag-5'>移植</b>笔记

    基于机智云移植STM32L496G代码移植

    前言最近我拿到了STM32L496AGMCU,发现其扩展版可以连接ESP-01S。我想尝试将开发板连接到我们的机智云上,并根据机智云提供的文档进行程序移植。STM32CubeMX移植机智云自动生成
    的头像 发表于 09-20 08:05 391次阅读
    基于机智云<b class='flag-5'>移植</b>STM32L496G代码<b class='flag-5'>移植</b>

    【GD32 MCU 移植教程】9、 STM32F10x 系列移植到 GD32F30x 系列

    对比、外设及性能对比以及 STM32F10x 移植到 GD32F30x 的移植步骤,旨在让开发者能够快速STM32F10x 移植到 GD
    的头像 发表于 09-07 09:57 669次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、<b class='flag-5'>从</b> STM32F10x 系列<b class='flag-5'>移植</b>到 GD32F30x 系列

    Openharmony软件评估指南-米尔瑞芯微RK3568开发板

    MYD-LR3568开发板正面 图1-2. 米尔MYD-LR3568开发板反面 1.软件资源米尔米粉派3568系列开发板的Openharmony BSP是基于瑞芯微官方开源社区版Openhar
    发表于 09-06 20:06

    【GD32 MCU 移植教程】8、 STM32F4xx 系列移植到 GD32F4xx 系

    、外设及性能对比以及 STM32F4xx 移植到 GD32F4xx 的移植步骤,旨在让开发者能够快速STM32F4xx移植到 GD32F
    的头像 发表于 09-06 09:40 1232次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、<b class='flag-5'>从</b> STM32F4xx 系列<b class='flag-5'>移植</b>到 GD32F4xx 系

    【GD32 MCU 移植教程】2 GD32F303 移植到 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。
    的头像 发表于 08-31 09:36 1439次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】<b class='flag-5'>2</b>、<b class='flag-5'>从</b> GD32F303 <b class='flag-5'>移植</b>到 GD32F503

    【GD32 MCU 移植教程】1、 GD32F10x 移植到 GD32F30x

    应用程序移植到新的微控制器。本应用笔记旨在帮助您快速将应用程序 GD32F10x 系列微控制器移植到 GD32F30x 系列微控制器。
    的头像 发表于 08-30 09:52 1538次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】1、<b class='flag-5'>从</b> GD32F10x <b class='flag-5'>移植</b>到 GD32F30x

    鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板

    P2_OpenHarmony功能框架 P3_OpenHarmony技术特性 P4_OpenHarmony支持设备类型 p5_南向开发和北向开发的区别 P6_
    发表于 07-23 10:44

    CC2500和CC1101移植说明

    主要通过如何移植移植注意、关于芯片配置、如何生成导出配置四大步骤来说明CC2500和CC1101移植
    的头像 发表于 06-15 14:32 604次阅读
    CC2500和CC1101<b class='flag-5'>移植</b>说明

    芯海通用 MCU 应用笔记: CS32F03x-RA 系列兼容性和移植指南

    本节旨在帮助您分析现有的 CS32F03x 产品移植到 CS32F03x-RA 系列产品所需的步骤。要将应用程序 CS32F03x 系列移植到 CS32F03x-RA 系列,用户需
    发表于 05-16 10:59

    鸿蒙ArkUI【开发移植Carbon】

    本项目是基于开源项目[Carbon] 进行harmonyos化的移植和开发的。
    的头像 发表于 03-25 15:41 510次阅读
    鸿蒙ArkUI【开发<b class='flag-5'>移植</b>Carbon】

    【鸿蒙】标准系统移植指南

    标准系统移植指南 本文描述了移植一块开发板的通用步骤,和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开
    的头像 发表于 02-27 14:36 884次阅读
    【鸿蒙】标准系统<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    将应用程序XMC7200开发套件移植到XMC7100芯片的指南/时钟问题求解

    XMC7100 芯片的定制主板,我在使用时钟配置移植项目时遇到了问题。 我为移植应用程序所采取的步骤: 我随附的开发套件 design.modus 文件开始。 然后我使用 BSP 助手将 BSP
    发表于 01-30 06:04