繁体   English   中英

在移动设备上修改并启动linux内核

[英]Modify and boot linux kernel on mobile device

在我的教育期间,我已经开发了近18个月的Android iOS应用程序和网站。 现在,作为我的最后一年项目,我正在研究Linux源代码,目标是在移动设备上启动它 - 比如Android。 我在互联网上的教程之后成功地将它作为Debian软件包。 我目前正在使用Ubuntu。

我有一个策略,但不确定我是否在正确的轨道上。 它如下:

A:

  1. 下载Linux源代码。 删除额外的驱动程序,在当前运行的Ubuntu上编译并安装它并使用它。

  2. 进一步自定义代码并将其作为我自己的发行版启动。 为此,我正在关注LFS

  3. 指定一个特定的目标移动设备,修改它的代码,如果我需要的话编写驱动程序,不确定哪一个(这就是为什么我在这里:)),并在其上启动内核。

我不知道我的策略是否正确。 如果有人能告诉我,我真的很感激:

B:

  1. 我是在正确的轨道上吗? 如果没有,那可能是正确的?

  2. 我是否需要指定移动设备并为该设备自定义内核代码?

  3. 除了驱动程序,还需要在内核中进行哪些更改?

  4. 当我在移动设备上启动内核时,最后但并非最不重要; 我会在那里有任何接口或终端吗?

对不起,如果我的问题没有意义。 我是一名学生,仍在努力解决问题。 如果有人能给我一些关于在互联网上搜索哪些主题的提示,我将非常感激。

更新:我想要的是确认我的策略是否正确。 如果没有,那么请说出我应该遵循的步骤。

SoC的驱动程序及其周围的设备是封闭源代码并不罕见。 据我所知,Exynos SoC的驱动程序(三星在其许多设备中使用的东西)是(部分)封闭源

所以一般来说,你必须为所有人和每个人编写驱动程序。 特别是实际的无线电连接是棘手的,因为没有设备需要专有的固件blob(尽管其余的驱动程序可能是开源的)。

另一个问题是许多设备上的引导加载程序,它不容易让你安装自定义内核(存储在引导加载程序中的哈希值,如果内核哈希不匹配则不愿启动)。

因此,假设您正在为Android已经支持的设备进行开发,我个人将从您设备的相应设备树开始并开始修改它。 你可以在CyanogenMod的github页面上有很多设备树。

优点:

  • 你可以从一个工作状态开始
  • 如果有什么东西坏了你知道那是你

或者,你可以偷看其他项目,如Ubuntu Touch 他们可以通过使用Hybris来利用现有的android内核。 如果你想要一个基于Debian / Ubuntu的发行版,我建议尝试Ubuntu Touch并修改它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM