该问题的历史可以在这里找到:
1)如何在智能手机(ARM 或 x86)上安装 lxc 的 ubuntu 服务器?
2)Ubuntu Touch(UBports)和 Android 对 LXC/LXD 容器的支持(用于运行 Ubuntu):当前状态
子问题:
1)应该使用哪些SDK组件?
2)如何准备/转换可启动图像以供加载?
3)如何替换原来的引导程序来引导另一个内核(如何将其指向新的路径)?
4)还应执行哪些步骤?
我会尝试自己回答这个问题,但通常更希望从那些已经走过这条路的人那里得到一些指导或信息。我找到了以前尝试的链接,但它们相当旧。Linux 服务器安装的过程有很好的文档记录(我依赖 Debian 和 Ubuntu 文档)。智能手机供应商(如华硕)在其网站上有解锁引导加载程序的工具,但这不足以完成任务。该工具只是解锁引导加载程序,但不会更改启动菜单,这意味着应该使用外部 SDK 工具(菜单中根本没有从 SD 卡或网络启动的选项)。即引导加载程序本身应该由 SDK 更改。任何链接或信息都将不胜感激。
答案1
我在解决方案研究方面取得了一些进展:
1)从用于实验的设备中清除所有用户数据(在恢复模式下启动 > 清除缓存/清除数据/恢复出厂设置)
2)通过非官方渠道查找
网络上有许多文章和论坛帖子。其中一些很有用。其中大多数都相当老旧,上次更新时间很早。糟糕的是,它们中的大多数都包含有关获取设备 root 权限的信息(即通过故意安装利用已知漏洞提升权限的 rootkit 来破坏操作系统安全性)以及包含此类 rootkit 的不受信任/信誉不佳的脚本的链接。这些可能有害的信息与有用的部分混杂在一起,提供了可用选项的一般概述。
许多文章发表在 xda-developers.com 网站上,其论坛部分和维基百科。
一些有用的维基文章:
这些 wiki 文章总体维护得比较差(最后一次编辑是在 2015 年)。
3)选择平台(x86,ASUS Zenfone2)
就我而言,我从自己使用过的 Android 设备中进行选择。它们中的大多数都采用基于 ARM 的 CPU。最新、最强大的是采用 x86 Intel CPU(64 位指令集)的华硕。选择 x86 的另一个原因是更好的 Linux 支持和运行基于 x86/AMD64 的 lxc 容器的要求。选择 ARM 需要开发单独的容器分支或使用某种模拟/转换工具(不确定这些工具是否高效/维护良好/支持良好)。
4)意识到使用官方(供应商支持的)工具可能无法实现目标
我给华硕技术支持发了一封邮件,询问如何使用他们的 bootloader 解锁工具。但答案很简单:“该工具只是解锁 bootloader,我们无法帮助您完成进一步的操作,我们甚至无法告诉您使用该工具会发生什么”。也就是说,该工具毫无用处(我甚至不知道它是否对我有用,以及它与 有何不同fastboot oem unlock
)。为了激活该工具,我首先必须降级到 Android 5.0,因为它不受较新版本的 ROM 的支持。所有有关更改 bootloader 和启动其他映像的内容都是非官方的、不受支持的、不推荐的、违反保修等。
5)[可选:注释1] 选择并安装恢复(手机或操作系统供应商不正式支持)
'恢复'- 是 Android 术语,指引导加载程序/BIOS(设备内存中的一个单独分区,用于保存轻量级的基于 Linux 的系统,该系统首先启动并提供引导加载程序菜单,其中包含“备份”、“清除缓存”、“恢复出厂设置”、“加载自定义 ROM”等可用工具)。原始 OEM 恢复不允许刷新自定义 ROM 或启动自定义操作系统。
该项目似乎很成熟,结构良好,维护积极,总体上给人一种有价值的全球开源项目的印象。支持的设备和供应商数量非常多卓越。当然,我更愿意使用由手机供应商维护和认可并从其官方网站下载的恢复版本(就我而言是华硕)。
注1:在安装 TWRP 并获取有关 SDK 工具的更多信息后,我意识到可能无需安装自定义恢复即可刷新自定义 ROM(通过利用 SDK 平台工具包中的 adb 和 fastboot 工具)。
笔记2:每个型号的安装过程都有详细记录。我使用了“Fastboot 安装方法”。该方法的简要说明(请参阅 TWRP 网站上与您的设备相关的页面):1)安装 Android SDK 工具(您只需要来自 platform-tools 包的 adb 和 fastboot 组件),2)通过在设置 > 关于菜单中的“版本号”行上点击 7 次来激活设备上的“开发者模式”,3)在设置 > 开发者选项中启用“USB 调试”,4)通过 USB 连接到您的 PC,5)在您的 PC 上,您可以通过传递命令来检查设备是否已连接adb devices
,6)运行adb reboot bootloader
进入快速启动模式,7)将从 TWRP 网站下载并重命名为“twrp.img”的正确图像文件放入包含 adb 和 fastboot 二进制文件的文件夹(通常是“platform-tools”文件夹),8)运行fastboot flash recovery twrp.img
。在我的情况下,尽管 adb 报告了错误,但图像已成功刷新FAILED (remote: Permission denied)
,9)运行fastboot reboot
。您也可以从 TWRP 菜单重新启动设备。重要的是让 TWRP 修补您的原装 ROM(带有 Android 操作系统的分区),以防止它在启动后擦除 TWRP 并用原装恢复替换它。否则您将不得不重复该过程。是的,这很可怕,因此请执行步骤 #1。
6)深入了解 AOSP 官方文档
在对使用黑盒方法对 Android 操作系统实现目标失去希望后,我开始查看有关 Android 操作系统架构和支持设备的要求的一般部分。
好图片(建筑):
引导加载程序和安全信息:
主要结论:Android 确实引入了有用的操作系统功能,用于在各种具有宽松硬件标准的专有(FMCG 世界)设备上运行精简的 Linux 内核。主流 Linux 可以并且可能应该采用的最有用的功能之一是 HAL 抽象层,它允许以合理的方式处理专有驱动程序的动物园。模块化内核将内核分为 SoC 相关部分和板相关部分,省电功能和安全功能也值得注意。
好消息:Linux 内核开发人员和一些发行版供应商非常清楚所有这些优点,并正在尽最大努力引入相应的变化。官方统计数据(见图 2)相应的 AOSP 文档部分) 很好地证明了 AOSP 代码和主流 Linux 之间的融合。融合对双方(AOSP 和 Linux 社区)都产生了明显的积极经济效应。当涉及到像 Google 和硬件生产商这样的利益相关者保护他们的投资时,他们似乎朝着相反的方向努力。Google 保护他们对生态系统和用户群的投资,硬件生产商则保护他们对开发和生产高端硬件的投资。这两股力量之间的摩擦产生了某种正向向量。在我看来,Google 和硬件生产商之间应该达成某种协议,以明智的方式规范这种摩擦。例如,硬件生产商可能会延迟 2-3 年将他们的主板专用驱动程序 blob 提交到 Linux 内核中(对于 SoC 专用驱动程序 blob,这个期限可能应该更短)。这将向 Google 和 AOSP 开发人员保证,Android 生态系统会从市场上捞到所有好处(所有新的现代高端硬件设备购买、广告收入、来自高端用户的付费软件和服务)。经过 2-3 年,这些设备(不再被视为高端)将通过将驱动程序 blob 提交到 Linux(最高级别的硬件供应商当然更愿意提交源代码)免费发布。该期限的长度非常接近硬件供应商为大多数设备设定的通常保修期以及这些供应商分发的官方 Android 更新(包括安全更新)的期限。很公平。
坏消息:达成这样的协议似乎真的很困难(以下简称“交易”)以明智和明确的方式。主要问题在于其全球性。想想可能的法律考虑(不同司法管辖区的反垄断法、跨境税收问题等)、硬件供应商的数量(OEM、ODM、SoC 生产商等)和其他利益相关者(谷歌、AOSP、Android 开发者、Linux、Linux 发行版供应商 - 服务器、桌面和可能的移动、其他基于 Linux 的项目、GNU、FSF 等,直到最终用户)。缺乏协议肯定会减缓 Linux 和 AOSP 之间的融合,这是我们(用户)共同的遗憾。从硬件的角度来看,几年前主流 [多核 x86 CPU / > 2Gb RAM / > 16Gb 闪存驱动器] 设备进入市场时,完全融合是可能的。当这种硬件不能用于运行标准 Linux 内核(服务器发行版,甚至不是桌面)时,问题就很明显了。安装程序不存在,闪存工具不受供应商的官方支持,文档稀缺且分散。 2019 年 6 月情况可能会好得多……
7) 下一步将监控领先的转换驱动社区和支持供应商的努力以及硬件供应商和 AOSP / Google 为谈判交易而采取的步骤。