Android内核和Vanilla Linux内核之间的补丁差异

5

我一直在尝试将安卓内核与特定板子的Linux内核进行合并或修补差异,但是合并两者时遇到了困难。我尝试使用以下命令来合并内核以创建一个补丁文件: 第一步:我试图找到纯净的Linux内核与安卓树合并的时间点。

 git log --pretty=oneline --format="%Cgreen%h %Creset%s" \
            --grep="Linux 3." -n 20 

然后我制作补丁:

git diff c16fa4f HEAD > 3.4-to-android.patch

补丁很大,大约200MB,但是当我应用补丁时,会出现一长串错误。我正在遵循这个网站:http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/。非常感谢您的帮助。(只是想学点新东西。 :-) )

2
@L7ColWinters 这只是众多差异中的一个。大多数人可能会认为Binder和ashmem更为关键。有关已过时的列表,请参见http://elinux.org/Android_Kernel_Features。 - Chris Stratton
1
@user1232264 我看到你已经编辑了帖子以更改搜索词,但你仍然在diff命令中给出了相同的521cb40,这是Linux 2.6.38(我怀疑你还没有重新运行整个实验)。尝试将其更新为从搜索中找到的3.x点之一。 - Chris Stratton
git diff dd775ae HEAD > 3.4-to-android.patch - Megharaj
1
根据我的经验,你这样做的成功率很低。你应该从 Android git 树中逐个应用补丁,而不是将所有内容作为单个补丁应用。这样你就有机会理解正在发生的事情,并手动合并那些无法干净应用的部分,同时保持适当的上下文。 - Torp
为什么不尝试将您的板特定分支合并到Android分支中?(或者反过来)(编辑:刚看到这是您链接中提出的另一种选择) - Christophe Augier
显示剩余6条评论
1个回答

2

Android内核和Vanilla内核之间有很多不同之处:

http://www.linaro.org/blog/android-blog/androidization-of-linux-kernel/

CONFIG_ASHMEM=y
CONFIG_STAGING=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_LOGGER=y
CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_LOW_MEMORY_KILLER=y

为了克服许多IPC问题,Android没有正常Linux中发现的任何IPC机制(因此内核不实现它):共享内存、命名管道、信号量等。所有这些都可以通过Android BINDER来完成。
这里是另一个链接,展示了移植逻辑:

http://community.arm.com/groups/android-community/blog/2013/09/18/from-zero-to-boot-porting-android-to-your-arm-platform

还有一项努力是在纯净的内核中构建Android兼容层(例如Ubuntu / Fedora等),以便您可以在计算机上使用Android应用程序。

https://lkml.org/lkml/2013/12/4/469


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接