如何使用Android SDK和智能手机供应商工具来启动另一个内核?

德米特里·索莫夫(Dmitry Somov)

问题的历史记录可以在这里找到:

1)如何在智能手机(ARM或x86)上为lxc安装ubuntu服务器?

2)Ubuntu Touch(UBports)和Android对LXC / LXD容器的支持(用于运行Ubuntu):当前状态

子问题:

1)应该使用哪些SDK组件?

2)如何准备/转换可引导映像以进行加载?

3)如何替换原来的引导程序来引导另一个内核(如何将其指向新路径)?

4)还应执行哪些其他步骤?

我将尝试自己回答这个问题,但通常会希望从已经遵循此方法的人那里获得一些指导或信息。我找到了以前尝试的链接,但是它们很旧。linux服务器安装过程非常详细(我依赖Debian和Ubuntu文档)。智能手机供应商(如华硕)具有在其站点上解锁引导加载程序的工具,但不足以完成任务。该工具仅解锁引导加载程序,但不更改引导菜单,这意味着应使用外部SDK工具(菜单中根本没有从SD卡或网络引导的选项)。即,引导加载程序本身应由SDK更改。任何链接或信息将不胜感激。

德米特里·索莫夫(Dmitry Somov)

我在研究解决方案方面取得了一些进展:

1)擦除了用于实验的设备上的所有用户数据(以恢复模式启动>擦除缓存/擦除数据/恢复出厂设置)

2)通过非官方渠道查看

网上有很多文章和论坛帖子。其中一些很有用。它们中的大多数都比较老,最近才更新。不好的是,它们中大多数都包含有关设备根目录的信息(即,通过利用已知漏洞故意安装rootkit来提升其特权来破坏OS安全性)以及指向包含此类rootkit的不受信任/信誉低下的脚本的链接。这些潜在有害的信息与有用的部分混合在一起,给出了可用选项的概述。

许多文章都发布在xda-developers.com网站,其论坛部分和wiki上

一些有用的Wiki文章:

这些Wiki文章通常维护得很差(最后编辑是在2015年)。

3)选择平台(x86,华硕Zenfone2)

就我而言,我是从自己的二手Android设备中选择的。它们中的大多数都具有基于ARM的CPU。最新和最强大的是具有x86 Intel CPU(64位指令集)的ASUS。选择x86的另一个原因是更好的Linux支持以及运行基于x86 / AMD64的lxc容器的要求。选择ARM将需要开发单独的容器分支或使用某种仿真/转换工具(不确定此类工具是否有效/维护良好/受支持)。

4)意识到使用官方(供应商支持)工具可能无法实现目标

我已就其Bootloader解锁工具的使用情况邮寄了华硕技术支持。但是答案很简单:“该工具只是解锁了引导加载程序,我们无法为您提供进一步的步骤,甚至无法告诉您使用该工具会发生什么”。也就是说,该工具无用(我什至不知道它在我的情况下是否工作正常,以及与的区别fastboot oem unlock)。为了激活该工具,我首先必须降级为Android 5.0,因为新版本的ROM不支持它。与更改引导加载程序和引导其他映像有关的所有事情都是非正式的,不受支持的,不建议使用的,保修失效等。

5)[可选:NOTE1]选择并安装了恢复程序(电话或操作系统供应商未正式支持)

'Recovery'-是用于bootloader / BIOS的android术语(设备内存中的一个单独分区,用于保留基于linux的轻量级系统,该系统首先启动并提供带有“ backup”,“ wipe cache”,“ factory reset”等可用工具的Bootloader菜单','加载自定义ROM'等)。原始OEM恢复不允许闪存自定义ROM或引导自定义操作系统。

该项目似乎已经成熟,结构良好,维护良好,并且总体上给人以有价值的全球开源项目的印象。受支持的设备和供应商的数量非常可观当然,我更喜欢使用由电话供应商维护和认可的恢复版本,并从其官方站点(在我的情况下为ASUS)下载。

注意1:安装TWRP并获得有关SDK工具的更多信息后,我意识到,有可能无需安装自定义恢复就可以刷新自定义ROM(通过使用SDK平台工具包中的adb和fastboot工具)。

注意2:每种型号的安装过程都有详细记录。我使用了“快速启动安装方法”。该方法的简要说明(请参阅与您的设备相关的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”的正确映像文件。fastboot flash recovery twrp.img在我的情况下,尽管adb报告了错误FAILED (remote: Permission denied)但映像已成功刷新,9)Run fastboot reboot您也可以从TWRP菜单重启设备。重要的是让TWRP修补您的库存ROM(Android操作系统的分区),以防止它擦除TWRP,并在引导后用库存回收代替它。否则,您将不得不重复该过程。是的,这很可怕,因此是第1步。

6)分为正式的AOSP文档

在不再希望对Android操作系统使用黑盒方法来实现目标之后,我开始复习有关Android OS体系结构和对受支持设备的要求的常规部分。

好的图片(架构):

引导程序和安全信息:

主要结论: Android绝对引入了有用的OS功能,以在具有宽松硬件标准的各种专有(F​​MCG-world)设备上运行简化的Linux内核。主流Linux可以并且可能应该采用的最有用的功能之一是HAL抽象层,它允许以合理的方式处理主动驱动程序的动物园。模块化内核将内核分为与SoC和电路板相关的部分,省电功能和安全功能也很引人注目。

好消息: Linux内核开发人员和一些发行版本的供应商对所有这些好部分都了如指掌,并正在竭尽全力介绍相应的更改。官方统计(请参见相应的AOSP文档部分的图2)是AOSP代码与主流Linux之间融合的良好证据。双方的融合(AOSP和Linux社区)肯定会带来积极的经济影响。当涉及到利益相关者(例如Google和保护生产商的硬件生产商)时,他们似乎朝相反的方向发展。Google保护对生态系统和用户群的投资,而硬件生产商则保护对开发和生产高端硬件的投资。这两个力之间的摩擦会产生某种正矢量。我认为Google与硬件生产商之间应该达成某种协议,以明智的方式调节这种摩擦。例如,硬件生产商可能会将其特定于电路板的驱动程序Blob提交到Linux内核的时间可能会延迟2-3年(对于SoC特定的驱动程序Blob,此时间可能会更短)。这将向Google和AOSP开发人员保证,Android生态系统可以消除市场上的所有麻烦(所有新的现代高端硬件设备购买,广告收入,来自高端用户的付费软件和服务)。在这2-3年后,通过将驱动程序Blob提交到Linux中,设备(不再被认为是高端设备)被免费释放(最高级别的硬件供应商当然会提交源代码)。期限非常接近硬件供应商为大多数设备设置的通常保修期,以及这些供应商分发的官方Android更新(包括安全更新)期。很公平。

坏消息:看来很难达成这样的交易(以下简称为“交易”)以明智和明确的方式。主要问题在于其全球性质。考虑可能的法律考虑因素(各个司法管辖区的反托拉斯法,跨境税收问题等),硬件供应商(OEM,ODM,SoC生产商等)的数量以及涉及的其他利益相关者(Google,AOSP,Android)开发人员,Linux,Linux发行商-服务器,台式机以及可能的移动设备,其他基于Linux的项目,GNU,FSF等,直至最终用户)。缺乏协议无疑会减慢Linux和AOSP之间的融合,这使我们(用户)普遍感到遗憾。从硬件的角度来看,几年前主流[多核x86 CPU /> 2Gb RAM /> 16Gb闪存驱动器]设备进入市场时,就可能实现完全融合。当此硬件不能用于运行标准Linux内核(服务器发行版,甚至不是台式机)时,问题就很明显。缺少安装程序,供应商未正式支持闪存工具,文档稀缺且分散。在2019年6月,情况可能会好得多...

7)下一步将是监视领先的转换驱动社区和支持供应商所做的工作,以及硬件供应商和AOSP / Google为达成交易而采取的步骤。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过PC或其他智能手机远程启动和停止Android应用

来自分类Dev

通过PC或其他智能手机远程启动和停止Android应用

来自分类Dev

Android / WiFi Direct-如何使用智能手机查找PC并建立连接

来自分类Dev

如何使用USB电缆通过android智能手机访问dslr

来自分类Dev

如何查看智能手机等嵌入式设备的启动图?

来自分类Dev

如何使我的网站响应智能手机

来自分类Dev

如何安装智能手机以恢复文件

来自分类Dev

使用libGDX访问智能手机的相机

来自分类Dev

与Android智能手机同步日历和通讯录

来自分类Dev

与Android智能手机同步日历和通讯录

来自分类Dev

如何连接智能手机和PC进行Java编程?

来自分类Dev

如何在实时Android设备(智能手机等)上连接和配置Android Studio?

来自分类Dev

如何在实时Android设备(智能手机等)上连接和配置Android Studio?

来自分类Dev

我为何在android智能手机上有一个内部IP地址

来自分类Dev

如何在Windows中将Android智能手机安装为驱动器?

来自分类Dev

如何获取给定 Android 智能手机的板名称

来自分类Dev

使用Android Samsung Galaxy智能手机获取邻近细胞信息

来自分类Dev

使用android三星galaxy智能手机获取邻近细胞信息

来自分类Dev

使用 Android 智能手机捕捉大动作

来自分类Dev

如何使用Convertigo将jQueryMobile项目安装到智能手机中?

来自分类Dev

如何使用JavaScript启用或禁用智能手机的GPS服务?

来自分类Dev

如何使用Javascript发现智能手机或平板电脑的型号?

来自分类Dev

如何使用智能手机从VirtualBox访问localhost?

来自分类Dev

如何使用智能手机作为安装媒体来安装Ubuntu?

来自分类Dev

每 5 秒向 Android 智能手机写入数据对硬盘来说是个问题吗?

来自分类Dev

我们可以为Android平板电脑和智能手机单独准备清单吗?

来自分类Dev

如何在智能手机同一桌面上的jwplayer中显示控件

来自分类Dev

如何在智能手机同一桌面上的jwplayer中显示控件

来自分类Dev

从Smartwatch Android Wear到智能手机获取数据

Related 相关文章

  1. 1

    通过PC或其他智能手机远程启动和停止Android应用

  2. 2

    通过PC或其他智能手机远程启动和停止Android应用

  3. 3

    Android / WiFi Direct-如何使用智能手机查找PC并建立连接

  4. 4

    如何使用USB电缆通过android智能手机访问dslr

  5. 5

    如何查看智能手机等嵌入式设备的启动图?

  6. 6

    如何使我的网站响应智能手机

  7. 7

    如何安装智能手机以恢复文件

  8. 8

    使用libGDX访问智能手机的相机

  9. 9

    与Android智能手机同步日历和通讯录

  10. 10

    与Android智能手机同步日历和通讯录

  11. 11

    如何连接智能手机和PC进行Java编程?

  12. 12

    如何在实时Android设备(智能手机等)上连接和配置Android Studio?

  13. 13

    如何在实时Android设备(智能手机等)上连接和配置Android Studio?

  14. 14

    我为何在android智能手机上有一个内部IP地址

  15. 15

    如何在Windows中将Android智能手机安装为驱动器?

  16. 16

    如何获取给定 Android 智能手机的板名称

  17. 17

    使用Android Samsung Galaxy智能手机获取邻近细胞信息

  18. 18

    使用android三星galaxy智能手机获取邻近细胞信息

  19. 19

    使用 Android 智能手机捕捉大动作

  20. 20

    如何使用Convertigo将jQueryMobile项目安装到智能手机中?

  21. 21

    如何使用JavaScript启用或禁用智能手机的GPS服务?

  22. 22

    如何使用Javascript发现智能手机或平板电脑的型号?

  23. 23

    如何使用智能手机从VirtualBox访问localhost?

  24. 24

    如何使用智能手机作为安装媒体来安装Ubuntu?

  25. 25

    每 5 秒向 Android 智能手机写入数据对硬盘来说是个问题吗?

  26. 26

    我们可以为Android平板电脑和智能手机单独准备清单吗?

  27. 27

    如何在智能手机同一桌面上的jwplayer中显示控件

  28. 28

    如何在智能手机同一桌面上的jwplayer中显示控件

  29. 29

    从Smartwatch Android Wear到智能手机获取数据

热门标签

归档