Software/Android
Software/Android/bc9
Software/Android/bc9/userland(1/2)

Android userland の作成2

userlandの整備

build が終わると

~/mydroid/out/target/product/generic/

に Android の userland 一式が build されています。
gumstix の jffs2 が mmap に対応していないこと、内蔵 FlashROM の容量が足りないことから、
build して出来た userland ファイルは gumstix の ファイルシステム上には置かず、
ext2 にフォーマットした USBフラッシュメモリにコピーします。
実際の作業は以下のようになります。

  • USBフラッシュメモリを ext2 に。
    USBフラッシュメモリを build マシンに挿します。(ubuntu なので自動的に /media/disk へ mount されます。)
    # umount /media/disk
    # fdisk /dev/sdb1   (この作業は gparted などから行っても OK です。)
    # mkfs.ext2 /dev/sdb1 (この作業は gparted などから行っても OK です。)
  • build された Android userland ファイルをコピー。
    フォーマットとファイルシステムの作成が終わったら一度USBフラッシュメモリを抜いて再度 build マシンに挿します。
    # cd /media/disk
    # mkdir android-root
    # cp -a /home/beat/mydroid/out/target/product/generic/root/* .
    # cp -a /home/beat/mydroid/out/target/product/generic/data/* data/  data フォルダ内は空ですが、念のため
    # cp -a /home/beat/mydroid/out/target/product/generic/system/* system/
    # chown -R root.root *
    # chmod -R 777 data/ system/
    # ls
    data          dev   init.goldfish.rc  proc  sys
    default.prop  init  init.rc           sbin  system
  • init 設定ファイルと keyレイアウト設定ファイルの調整
    • Android の起動時に init が実行する処理の内容を設定する init.rc の記述内容のうち、
      G1 phone を前提にした yaffs2 の mount の箇所を以下のようにコメントアウトして無効にします。
      diff -u init.rc.orig init.rc
      --- init.rc.orig	2009-03-31 12:50:16.000000000 +0900
      +++ init.rc	2009-03-31 12:57:19.000000000 +0900
      @@ -36,16 +36,16 @@
        
       # mount mtd partitions
           # Mount /system rw first to give the filesystem a chance to save a checkpoint
      -    mount yaffs2 mtd@system /system 
      -    mount yaffs2 mtd@system /system ro remount
      +#    mount yaffs2 mtd@system /system 
      +#    mount yaffs2 mtd@system /system ro remount
       
           # We chown/chmod /data again so because mount is run as root + defaults
      -    mount yaffs2 mtd@userdata /data nosuid nodev
      +#    mount yaffs2 mtd@userdata /data nosuid nodev
           chown system system /data
           chmod 0771 /data
      
           # Same reason as /data above
      -    mount yaffs2 mtd@cache /cache nosuid nodev
      +#    mount yaffs2 mtd@cache /cache nosuid nodev
           chown system cache /cache
           chmod 0770 /cache
  • Android 起動後のハードウェアキーの動作割り当てを決めるファイル
    system/usr/keylayout/qwerty.kl
    を以下のように編集し、「ホーム画面へ戻る」などのキー操作が有効になるようにします。
    diff -u qwerty.kl.orig qwerty.kl.new 
    --- qwerty.kl.orig	2009-03-31 13:20:22.000000000 +0900
    +++ qwerty.kl.new	2009-03-31 13:36:09.000000000 +0900
    @@ -12,8 +12,8 @@
     key 158   BACK              WAKE_DROPPED
     key 230   SOFT_RIGHT        WAKE
     key 60    SOFT_RIGHT        WAKE
    -key 107   ENDCALL           WAKE_DROPPED
    -key 62    ENDCALL           WAKE_DROPPED
    +key 107   ENDCALL           WAKE
    +key 88    ENDCALL           WAKE
     key 229   MENU              WAKE_DROPPED
     key 139   MENU              WAKE_DROPPED
     key 59    MENU              WAKE_DROPPED
    @@ -26,12 +26,14 @@
     key 232   DPAD_CENTER       WAKE_DROPPED
     key 108   DPAD_DOWN         WAKE_DROPPED
     key 103   DPAD_UP           WAKE_DROPPED
    -key 102   HOME              WAKE 
     key 105   DPAD_LEFT         WAKE_DROPPED
     key 106   DPAD_RIGHT        WAKE_DROPPED
     key 115   VOLUME_UP
     key 114   VOLUME_DOWN
     key 116   POWER             WAKE
    +key 63    MENU	      WAKE
    +key 66    HOME              WAKE
    +key 67    BACK	      WAKE
     key 212   CAMERA
     
     key 16    Q
    key の番号がキーボードのどのキーにあたるかは
    ~/gumstix/gumstix-oe/tmp/work/gumstix-custom-verdex-angstrom-linux-gnueabi/gumstix-kernel-2.6.24-r1/linux-2.6.24/include/linux/input.h
    を参照して下さい。

by 大塚聡史

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-06-26 (金) 21:39:54 (5417d)