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

时间:2013-10-19 01:38:51

标签: android linux mobile linux-kernel mobile-os

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

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

A:

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

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

  3. 指定特定目标移动设备,修改其代码,写入 司机,如果我需要,不知道哪一个(这就是为什么我在这里:)), 并在其上启动内核。

  4. 我不知道我的策略是否合适。如果有人能告诉我,我真的很感激:

    B:

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

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

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

    4. 当我在移动设备上启动内核时,最后但并非最不重要;我有没有 界面或终端那里?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

因此,假设您正在为Android已经支持的设备进行开发,我个人而言 将从您设备的相应设备树开始,然后开始修改它。 您可以在CyanogenMod's github page上使用很多设备树。

优点:

  • 您可以从工作状态开始
  • 如果出现问题,你知道那是你

或者,您可以查看其他项目,例如Ubuntu Touch。 他们可以使用Hybris来利用现有的Android内核。 如果你想要一个基于Debian / Ubuntu的发行版我会推荐 尝试Ubuntu Touch并修改它。