5

私がやろうとしているのは、Android カーネルの違いを特定のボードの Linux カーネルにパッチまたはマージすることです。ただし、2を正常にマージするのに問題があります。これらのコマンドを使用してカーネルをマージしてパッチ ファイルを作成しようとしました。 1 つ目: バニラ Linux カーネルが Android ツリーとマージされた時点を見つけようとしました。

 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/

お役に立てば幸いです。(何か新しいことを学ぼうとしているだけです。:-))

4

1 に答える 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

PC で Android アプリを使用できるように、バニラ カーネル (Ubuntu/Fedora など) で Android 互換性レイヤーを構築する別の取り組みがあります。

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

于 2014-07-27T01:49:47.070 に答える