PostmarketOS移植常见问题

PostmarketOS移植常见问题

💡 原文中文,约43000字,阅读约需103分钟。
📝

内容提要

这篇文章介绍了移植k20pro-PostmarketOS时可能遇到的问题以及解决方法。其中包括无法打补丁、文件或目录不存在、编译错误、权限问题等。文章提供了详细的解决办法,并给出了相关代码示例。

🔎

延伸解读

日志定位:问题排查的起点

文章强调,所有列出的问题都需要通过执行pmbootstrap log命令或在pmbootstrap工作目录的log.txt中查找才能发现。这意味着移植过程中的错误信息并非直接显示在终端,而是记录在日志文件中。建议在编译内核前先删除旧的log.txt,以确保日志内容只反映当前构建过程,避免旧信息干扰判断。

内核编译错误的应对策略

针对C语言编译错误,文章提供了多种解决方案:更换编译器为clang,或在APKBUILD中配置使用gcc6/gcc4(仅限老旧手机)。如果这些方法仍无效,文章建议更换问题较少的内核,并特别指出小米官方内核问题较多。这提示读者,内核源码质量直接影响移植难度,选择合适的内核版本可能比反复修补更有效。

权限与路径问题的通用处理

当遇到Permission denied错误时,文章建议更换目录并将目录权限设置为755。对于缺失头文件的问题,则建议使用find命令定位文件并复制到报错目录。这些方法反映了Linux环境下常见的权限和路径依赖问题,在移植过程中需要确保工作目录权限正确,且所有依赖文件都能被正确引用。

Python2依赖的兼容性处理

从Alpine 3.16开始不再提供python2,导致mkdtboimg工具无法运行。文章提供了两种解决方案:切换版本到v20.06(不推荐)或修改源码使用python3。后者通过patch将Makefile.lib中的python2替换为python3,并调整mkdtboimg.py的语法以兼容Python3。这提醒读者,在较新的系统上移植旧代码时,需注意Python版本迁移带来的兼容性问题。

❓

Q&A

如何解决无法打补丁的问题?

删除APKBUILD中的所有.patch字样。

如果找不到asm/type.h文件该怎么办?

安装linux-headers。

gzip(cpio)命令未找到时如何处理?

安装gzip(cpio)。

C语言编译错误的解决方法是什么?

更换编译器为clang或使用gcc6/gcc4。

如何解决权限被拒绝的问题?

更换目录并将目录权限设置为755。

如果deviceinfo缺少dtb,应该怎么做?

在deviceinfo中添加编译好的dtb路径。

➡️

继续阅读