当前位置: 首页 > 科技观察

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

时间:2023-03-12 05:19:13 科技观察

更多开源信息请访问:开源基础软件社区https://ost.51cto.com开篇介绍Android设备的启动需要一个boot.img镜像,其中包含内核镜像、设备树、启动配置文件和initrd.img根文件系统镜像。因为开发板是用来开发的,所以对系统启动基本没有什么限制,而成品安卓手机往往会有各种限制。我们需要刷入postmarketOS来确认手机是否可以启动第三方系统,从中获取开机相关的信息和文件,并根据postmarketOS的开机镜像创建自己的开机镜像。1、准备postmarketOS编译环境。参考pmbootstrap-在postmarketOS中安装--从git准备编译环境$gitclonehttps://git.sr.ht/~postmarketos/pmbootstrap$mkdir-p~/.local/bin$ln-s"$PWD/pmbootstrap/pmbootstrap.py"~/.local/bin/pmbootstrap$pmbootstrap--version2,执行初始化pmbootstrapinit1。或者更换镜像源,否则会出现网络问题,需要更换两个镜像源地址,postmarketOS镜像,AlpineLinux镜像。使用如下命令设置为清华源进行初始化,也可以根据镜像源列表找到自己喜欢的设置。pmbootstrap--mirror-pMOShttps://mirrors.tuna.tsinghua.edu.cn/postmarketOS/--mirror-alpinehttps://mirrors.tuna.tsinghua.edu.cn/alpine/1.postmarketOS镜像源列表:postmarketOS//官方postmarketOS镜像。AlpineLinux镜像源列表:Mirrorhealth(alpinelinux.org)。3.编译Android格式的flash包pmbootstrapinstall--android-recovery-zip1。编译时间会比较长,会提示创建新密码进入手机系统。如果中间出现错误,可以多试几次。如果还是不行,删除整个work目录,重新执行初始化编译flash包,最终结果如下:4.导出flash包pmbootstrapexport1。执行以下命令找到flash包的位置。cd$(dirname$(readlink/tmp/postmarketOS-export/pmos-*.zip))1.获取目前的刷机包。找资料的时候参考了本文方案的第二部分,贴在这里。手机跑Docker:从修改内核到刷入原生Linux|yzddMr6的博客。5.刷入手机验证获取芯片控制器名称。音量加+开机进入twrp(机器安装twrp是必须的,网上教程很多,这里不再赘述)。小米(Mi)6小米(Mi)6手机刷机TWRP方法,刷机三方Recovery方法(解决卡顿问题)刷机解锁(onfix.cn)。点击安装:点击刷机包:确认刷入:刷机会报错,不用担心。刷完重启后,稍等片刻,出现欢迎信息。输入用户名:user,密码:你之前设置的,进入系统。至此,确认手机正常运行Linux系统,显示和触控正常。6.解压获取移植所需信息解压获取信息:bootimg.cfg:引导分区配置信息,内核启动参数。config:默认的内核编译配置,后续的适配内核会在此基础上进行改动。固件:开始加载必要的驱动程序固件文件。右键解压pmos-xiaomi-sagit.zip,得到pmos-xiaomi-sagit。同样使用右键解压rootfs.tar.gz得到rootfs,在rootfs/boot文件夹下得到boot.img和内核编译的config配置。安装Android开机打包解包工具:sudoaptupdatesudoaptinstallabootimg1.2。将boot.img复制到任意文件夹,然后使用以下命令解压:abootimg-xboot.img1。获取引导分区配置bootimg.cfg。检查initrd.img文件格式是否为gzip压缩文件。使用gzip解压,发现解压失败是因为不支持后缀。我们使用mv命令将initrd.img复制到initrd.img.gz,然后使用解压命令解压成功。解压后,原来的initrd.img会被解压后的输出文件替换,initrd.img的格式为cpio镜像文件。使用cpio解压initrd.img镜像。cpio-idmvcust。由于安装了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-->数据移植需要提前准备的资料基本完成。下篇将讲解OpenHarmony编译部分,敬请期待。了解更多开源请访问:开源基础软件社区https://ost.51cto.com