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编译的部分,敬请期待

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

    关注

    26

    文章

    6507

    浏览量

    121361
  • OpenHarmony
    +关注

    关注

    33

    文章

    3984

    浏览量

    21458
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实战 | 睿擎平台 zlib: 嵌入式数据压缩方案,移植到应用一文打通

    、维护难。今天分享一个基于睿擎派RC3506的完整zlib方案——源码移植到应用实战,提供两种压缩方式,手把手带你搞定嵌入式数据压缩。为什么选zlib?zlib是全
    的头像 发表于 05-20 18:29 355次阅读
    实战 | 睿擎平台 zlib: 嵌入式数据压缩方案,<b class='flag-5'>从</b><b class='flag-5'>移植</b>到应用一文打通

    实战 | 睿擎平台SQLite:嵌入式设备上的数据持久化方案,移植到应用一文打通

    在嵌入式开发中,数据存储一直是个刚需:设备参数配置、传感器历史数据、运行日志记录……传统方案要么用文件系统裸奔,解析麻烦;要么上SQLite,但移植门槛高、踩坑多。今天分享一个基于睿擎派RC3506
    的头像 发表于 04-29 19:22 8071次阅读
    实战 | 睿擎平台SQLite:嵌入式<b class='flag-5'>设备</b>上的数据持久化方案,<b class='flag-5'>从</b><b class='flag-5'>移植</b>到应用一文打通

    BLDC 驱动板 FOC 矢量控制算法移植与参数调试(工程实用版)

    这是一篇可直接用于项目开发、量产调试的 FOC 移植与调试指南,面向STM32/GD32 + 三相 BLDC/PMSM 无刷马达驱动板,包含移植步骤、关键参数、调试流程、波形判断、常见故障,完全匹配你前面设计的MT6835 磁编
    的头像 发表于 04-27 15:32 2896次阅读

    直播预告 | 开源软件包移植适配专题(第1期):SQLite 入门到精通

    嵌入式数据库在资源受限设备上跑不动?交叉编译SQLite总是缺依赖、配置难?想在AMP双系统下统一数据存储方案?睿擎平台正式推出「开源软件包移植适配专题」,每期深度讲解一个主流开源软件在睿擎派上
    的头像 发表于 04-24 18:05 539次阅读
    直播预告 | 开源软件包<b class='flag-5'>移植</b>适配专题(第1期):SQLite <b class='flag-5'>从</b>入门到精通

    RT-Thread 中设备树的适配方法 | 技术集结

    本文基于RT-Thread现有的DM(设备模型)框架,以Rock2F开发板为例,系统梳理了RK3528SoC的快速移植流程,涵盖了CLK、Pinctrl、ADC、NVMEM、Thermal、RNG等
    的头像 发表于 04-04 18:05 3418次阅读
    RT-Thread 中<b class='flag-5'>设备</b>树的适配方法 | 技术集结

    基于极海APM32F4的Azure RTOS ThreadX移植过程分享

    最近在玩APM32F407IG的板子,发现官方提供了两个RTOS的demo,FreeRTOS和RT-thread。想着APM32F4这么丰富的资源,是不是也可以跑一下ThreadX RTOS看看
    的头像 发表于 04-02 11:30 1935次阅读
    基于极海APM32F4的Azure RTOS ThreadX<b class='flag-5'>移植</b>过程分享

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板移植LVGL8.2

    随着嵌入式设备对图形用户界面(GUI)的需求不断提升,选择一款高效、轻量且易于移植的GUI框架已成为项目开发中的关键环节。LVGL与Qt作为嵌入式领域广泛使用的两种GUI解决方案,在架构设计、资源
    的头像 发表于 10-15 08:52 6187次阅读
    ElfBoard技术贴|如何在【RK3588】ELF <b class='flag-5'>2</b>开发板<b class='flag-5'>移植</b>LVGL8.2

    请问STM32如何移植Audio框架?

    最近在学习音频解码,想用一下Audio框架。 1、这个该如何移植到自己创建的BSP并对接到device框架中?看了官方移植文档没有对没有对该部分的描述。 2、我只想实现一个简单的播放功能,只用一个DAC芯片(比如CS4344)是
    发表于 09-25 07:17

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread Nano到MCUXpresso IDE为主,移植的代码可以在nxpic.org.cn论坛搜索到。
    的头像 发表于 08-21 09:49 7040次阅读
    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano<b class='flag-5'>移植</b>

    如何移植 RT-Thread Nano 并创建 2 个线程?

    基于 BSP 中的 GPIO_OutputInput 演示,展示了如何移植 RT-Thread Nano 并创建 2 个线程。
    发表于 08-19 07:45

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、下两篇,将手把手教您移植。上篇对RT-ThreadNano内核与Finsh组件进行移植,下篇则教您改写S
    的头像 发表于 07-17 14:40 3741次阅读
    RT-Thread Nano硬核<b class='flag-5'>移植</b><b class='flag-5'>指南</b>:手把手实现VGLite图形驱动适配 | 技术集结

    高效开发 | 瑞迅基于瑞芯微系列主板QT移植部署(上)

    模块化的必然趋势,这一技术组合将成为连接“硬件算力”与“用户体验”的核心纽带,推动更多智能设备“功能可用”迈向“体验卓越”。瑞迅RK3568主板移植部署QT5技术
    的头像 发表于 07-11 15:39 1309次阅读
    高效开发 | 瑞迅基于瑞芯微系列主板QT<b class='flag-5'>移植</b>部署(上)

    移植 ZephyrRTOS 到思澈 SF32LB58 过程笔记 一

    为 ZephyrRTOS 增加 SoC 支持(2) 基础框架 N32L406 的移植还没有完成,最近又开坑做思澈 SF32LB58 的移植。原因一是这个芯片带蓝牙和 2D GPU,适合
    的头像 发表于 07-04 11:17 2910次阅读
    <b class='flag-5'>移植</b> ZephyrRTOS 到思澈 SF32LB58 过程笔记 一

    机智云配网教程第三期:单片机代码移植实战

    :stm32f103c8t6,WiFi模块:ESP-01s,下载器:ST-LINK2.软件:keil5的工程文件模板,mcu代码包代码资源:未移植移植后(注:本文是基于stm32标
    的头像 发表于 07-01 17:32 2342次阅读
    机智云配网教程第三期:单片机代码<b class='flag-5'>移植</b>实战

    求助,关于K230 linux SENSOR 移植读取CIF的RAW数据的疑问?

    在K230 linux SENSOR 移植指南中给出了K230移植普通摄像头的教程,mipi读取的时ISP后的数据,但如果我想在k230里面移植自己的摄像头,通过mipi接口读取cif
    发表于 06-16 06:56