ブログネタ
Android に参加中!
user/kernel で 2G/2G のメモリ空間を使う設定。
公開されている Android のソースコードを確認すると、
VMSPLIT_3G=y であるのを前提に作られてるので、
そのままでは動作しない。
VMSPLIT_2G=y な kernel で ICS を動作した場合のログ。
[ 4.322301] init: untracked pid 2069 exited
[ 4.326598] init: untracked pid 2071 exited
[ 4.335612] init: untracked pid 2075 exited
これが繰り返し出て、起動処理が進まない。

i.MX53QSB の kernel(Freescale が公開してるもの)は、
VMSPLIT_2G=y となっている。
そのため、上記のような現象が発生する。

解決方法は2つ。

1.kernel を変更する
VMSPLIT_2G=y ではなく、VMSPLIT_3G=y として kernel を作る。
Ice Cream Sandwich on i.MX53 Quick Start Board
では、この方法を使った。

2.Android を変更する
linker(bionic/linker)を変更する。
-LINKER_TEXT_BASE := 0xB0001000
+LINKER_TEXT_BASE := 0x70001000
ICS は prelink を使わなくなったので、修正箇所はこれだけで良い。

Android 2.3 までは上記に加えて、
build/core/prelink-linux-arm.map
も変更する必要があった。