2009年9月28日月曜日

SmartQ 7で動くAndroidをつくる






とりあえず動いて、Build numberに自分の名前が出るだけです。快適になるっというレベルではありません。


とりあえずmakeしてみたかっただけです。





●手順のまとめ


基本的にここ書いてあるようにすれば、環境はできる。



  1. ubuntuを用意

  2. 必要なパッケージをインストール

  3. gitでソース取得

  4. make

  5. SDカードに展開

    1. makeしたもののみ -> 起動不可

    2. 古い環境に上書き -> 起動不可

    3. 古い環境に上書き+init.rcは古い物を使用 -> 起動可







●わかったこと



  1. initrcで起動できるか分かれる → initrcの記述を見比べれば、なにかわかるかも。

  2. rootfsのレベルでwifiが使えるか別れる → カーネルレベルで対応しているだけでは、ダメ





●細かい手順


環境は、ubuntu9.04です。



$sudo -s

$apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
参考ページでは、次に"valgrind"をインストールしているが、デバッグのツールなのでとばしました。

$apt-get install lib32readline5-dev

ソース取得用のスクリプトをつくる
$mkdir ~/bin
$export PATH=~/bin:$PATH
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo

ソースの取得(途中で、名前とメアドが必要。コミット(gitでも?しない限りgmailである必要はないようです。)
$mkdir mydoroid
$cd mydoroid
$repo init -u git://android.git.kernel.org/platform/manifest.git (10分ほどかかった)
$repo sync (1時間ほどかかった)

make
$cd mydoroid
$make (8時間かかった。速いマシンでも5時間ぐらいかかるようです。)

コピー("rootディレクトリの中" と "systemディレクトリそのまま")
$mount /dev/sdb2 /mnt (SDの2番目のパーティションをマウント)
$cp /mnt/init.rc ~
$cp -ar /out/target/product/generic/root/* /mnt
$cp -ar /out/target/product/generic/system /mnt
$cp ~/init.rc /mnt
$sync && umount /mnt






とりあえず、動いたから満足。setting - About phone - Build numberにソースを取得したときの名前が表示されます。








待ち時間中にカーネルのオプションを眺めたりしていたけれど、ソースをいじらないとダメぽい。


オプションを変えるぐらいなら、何とかなるけれど、ソースの変更は無理。


  





少しだけ妄想。


  Android用のカーネルと元のカーネルの差分をとってAndroid用のパッチを作る。


  arm用(SmartQ用)のubuntuのカーネルソースにパッチを適用。


  arm用のクロスコンパイラでmake。








ubuntuがお勧め(標準)の環境らしいので、はじめてPlamoLinux以外を使った。


makeしている間に、いろいろと触ってみたけれど、慣れない。


インストーラが普通にGUIでびっくりした。


久々に長い時間がかかるコンパイルしたけれど、やっぱり速いマシンがほしくなる。





0 件のコメント:

コメントを投稿