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

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

    关注

    25

    文章

    4609

    浏览量

    95130
  • OpenHarmony
    +关注

    关注

    24

    文章

    3486

    浏览量

    15424
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    TIA博途V13移植PLC的基本步骤

    在V13中打开S7-300/400项目,编译项目à开始移植PLC (移植PLC硬件及程序)
    的头像 发表于 11-18 17:22 2960次阅读
    TIA博途V13<b class='flag-5'>移植</b>PLC的基本步骤

    SWM32SRET6——LVGL移植

    SWM32SRET6——LVGL移植
    的头像 发表于 10-26 17:33 932次阅读
    SWM32SRET6——LVGL<b class='flag-5'>移植</b>

    RyanMqtt移植指南

    测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、网络硬件使用ec800m移植at_socket使用sal框架。
    的头像 发表于 10-09 10:24 678次阅读
    RyanMqtt<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    PIC18F到PIC24F的移植和性能增强指南

    电子发烧友网站提供《PIC18F到PIC24F的移植和性能增强指南.pdf》资料免费下载
    发表于 09-25 09:23 0次下载
    PIC18F到PIC24F的<b class='flag-5'>移植</b>和性能增强<b class='flag-5'>指南</b>

    Vitis HLS移植指南

    电子发烧友网站提供《Vitis HLS移植指南.pdf》资料免费下载
    发表于 09-13 09:21 0次下载
    Vitis HLS<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    N76E003到增强MS51系列软件的移植指南

    完整指南包含必要的信息,如:特性差异汇总、增强特性兼容列表、 N76E003 移植到增强的 MS51 系列软件注意事项。用户可以参考特性差异汇总和兼容列表决定移植时是否需要修改代码或
    发表于 08-28 06:41

    6步玩转OpenHarmony标准芯片适配

    前言 本文是OpenHarmony标准芯片的适配指南,希望能帮助大家更清晰认识到OpenHarmony芯片的适配过程。本文描述的过程范围,从头从零开始——芯片没有在OpenHarmony
    发表于 08-22 09:10

    PN7160安卓移植指南

    电子发烧友网站提供《PN7160安卓移植指南.pdf》资料免费下载
    发表于 08-17 11:40 2次下载
    PN7160安卓<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    N76E003系列到MS51系列的移植指南

    N76E003系列到MS51系列的移植指南
    的头像 发表于 08-10 16:22 819次阅读
    N76E003系列到MS51系列的<b class='flag-5'>移植</b><b class='flag-5'>指南</b>

    如何将Unity着色器移植到通用渲染管道

    Unity中的通用渲染管道(URP)可在从移动到计算机的一系列平台上优化图形。URP在高端设备上生成高质量的图形,并在低端设备上优化性能。URP的其他优点在“什么是通用渲染管道? 在本指南中,我们将
    发表于 08-02 13:39

    如何将应用程序移植到运行在基于Arm的设备上的Windows?

    指南介绍如何将应用程序移植到运行在基于Arm的设备上的Windows。该指南首先回顾了一般指南,然后展示了不同框架的示例:Tweeten应
    发表于 08-02 06:06

    Linux驱动移植 Linux系统架构优点

    系统移植 linux 驱动移植 移植是说同样的一个 linux 操作系统,我们可以跑到不同的硬件上面,我们把操作系统移植到不同的硬件上面,这个过程叫做
    的头像 发表于 07-27 17:06 656次阅读
    Linux驱动<b class='flag-5'>移植</b> Linux系统架构优点

    UM-B-097:681 至 683 移植指南

    UM-B-097:681 至 683 移植指南
    发表于 07-05 20:36 0次下载
    UM-B-097:681 至 683 <b class='flag-5'>移植</b><b class='flag-5'>指南</b>