在我的教育期间,我已经开发了近18个月的Android iOS应用和网站。现在,作为我的最后一年项目,我正在研究Linux源代码,目标是在移动设备上启动它 - 比如Android。我在互联网上的教程之后成功地将它作为Debian软件包。我目前正在使用Ubuntu。
我有策略,但不确定我是否走在正确的轨道上。它如下:
A:
下载Linux源代码。删除额外的驱动程序,编译和 将它安装在当前运行的Ubuntu上并使用它。
进一步自定义代码并将其作为我自己的发行版启动。对于 我正在关注LFS。
指定特定目标移动设备,修改其代码,写入 司机,如果我需要,不知道哪一个(这就是为什么我在这里:)), 并在其上启动内核。
我不知道我的策略是否合适。如果有人能告诉我,我真的很感激:
B:
我走在正确的轨道上吗?如果没有,那可能是正确的?
我是否需要指定移动设备并为其自定义内核代码 一个
除了驱动程序之外,还需要在内核中进行哪些更改?
当我在移动设备上启动内核时,最后但并非最不重要;我有没有 界面或终端那里?
很抱歉,如果我的问题没有意义。我是一名学生,仍在努力解决问题。如果有人能给我一些关于在互联网上搜索哪些主题的提示,我将非常感激。
更新:我想要的是确认我的策略是否正确。如果没有,那么请说出我应该遵循的步骤。
答案 0 :(得分:2)
SoC及其周围设备的驱动程序是封闭源代码并不罕见。 据我所知,Exynos SoC的驱动程序(三星在其许多设备中使用的东西)是(partly) closed source。
所以一般来说,你必须为所有人和每个人编写驱动程序。 特别是实际的无线电连接很棘手,因为没有需要专有的设备 固件blob(虽然其余驱动程序可能是开源的)。
另一个问题是许多设备上的引导加载程序,它不容易让你安装 自定义内核(存储在引导加载程序中的哈希值,如果内核哈希没有,则不愿意引导) 匹配)。
因此,假设您正在为Android已经支持的设备进行开发,我个人而言 将从您设备的相应设备树开始,然后开始修改它。 您可以在CyanogenMod's github page上使用很多设备树。
优点:
或者,您可以查看其他项目,例如Ubuntu Touch。 他们可以使用Hybris来利用现有的Android内核。 如果你想要一个基于Debian / Ubuntu的发行版我会推荐 尝试Ubuntu Touch并修改它。