在我接受教育期间,我已经开发了将近 18 个月的 Android iOS 应用和网站。现在,作为我的最后一年项目,我正在研究 Linux 源代码,目标是在移动设备(如 Android)上启动它。我按照 Internet 上的教程成功地将它作为 Debian 软件包。我目前正在使用 Ubuntu。
我有一个策略,但不确定我是否在正确的轨道上。具体如下:
答:
下载 Linux 源代码。删除额外的驱动程序,编译和 在当前运行的 Ubuntu 上安装它并使用它。
进一步自定义代码并将其作为我自己的发行版启动。为了 我正在关注 LFS .
指定一个特定的目标手机,修改它的代码,写 驱动程序,如果我需要的话,不确定是哪一个(这就是我来这里的原因:)), 并在其上启动内核。
不知道我的策略对不对。如果有人能告诉我,我将不胜感激:
乙:
我走的路对吗?如果不是,什么可能是正确的?
我需要指定手机并为其定制内核代码吗 一个?
除了驱动程序,我还需要在内核中更改什么?
最后但同样重要的是,当我在移动设备上启动内核时;我要不要 接口(interface)或终端在那里?
抱歉,如果我的问题没有意义。我是一名学生,仍在努力解决问题。如果有人可以提示我在 Internet 上搜索哪些主题,我将不胜感激。
更新:我想要的是确认我的策略是否正确。如果没有,那么请说出我应该遵循的步骤。
最佳答案
SoC 及其周围设备的驱动程序是闭源的并不罕见。 据我所知,Exynos SoC(三星在其许多设备中使用的东西)的驱动程序是 (partly) closed source .
所以一般来说,您必须为所有事物和每个人编写驱动程序。 特别是实际的 radio 连接很棘手,因为没有需要专有的设备 固件 blob(尽管其余驱动程序可能是开源的)。
还有一个问题就是很多设备上的boot loader,不容易让你安装 自定义内核(哈希和存储在引导加载程序中,如果内核哈希不存在则不愿启动 匹配)。
因此,假设您正在为 android 已经支持的设备开发,我个人 将从您设备的相应设备树开始并开始修改它。 您可以在 CyanogenMod's github page 上找到很多设备树.
好处:
- 您可以从工作状态开始
- 如果有什么东西坏了,你知道是你造成的
或者,您可以查看其他项目,例如 Ubuntu Touch . 他们能够通过使用 Hybris 来利用现有的安卓内核。 . 如果你想要一个基于 Debian/Ubuntu 的发行版,我会推荐 尝试 Ubuntu Touch 并对其进行修改。
关于android - 在移动设备上修改和启动 linux 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461398/