3

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

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

A:

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

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

  3. 指定一个特定的目标手机,修改它的代码,编写驱动程序,如果我需要的话,不确定是哪个(这就是我在这里的原因:)),然后在上面启动内核。

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

乙:

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

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

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

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

对不起,如果我的问题没有意义。我是一名学生,仍在努力解决问题。如果有人能提示我在 Internet 上搜索哪些主题,我将不胜感激。

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

4

1 回答 1

2

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

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

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

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

好处:

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

或者,您可以查看其他项目,例如Ubuntu Touch。他们能够通过使用Hybris来利用现有的 android 内核。如果您想拥有基于 Debian/Ubuntu 的发行版,我建议您尝试 Ubuntu Touch 并对其进行修改。

于 2013-10-19T02:01:49.500 回答