AndroidでSDカードを使ってみる(1)

システム3部鈴木です。

アットマークテクノ社製パネルコンピュータ、Armadillo-500 FX上のAndroidでSDカードを利用する方法を説明します。
Android自体はSDカード対応ですが、ArmadilloにSDカードを挿しただけでは認識してくれません。
mountdというサービスを動作させる必要があります。

今回の確認環境

mountdのビルド

Android1.5(cupcake)では、SDカードのマウントに mountd ではなく、vold を使うように変更されています。
しかし、voldを正規端末以外で動作させるにはソースの修正などが必要らしく、はっきりとした情報がありません。

次善の策として、以前利用されていた mountd を利用します。
設定メニューからSDカードのアンマウント・フォーマットができない等の不便はありますが、SDの利用はできます。

さて、デフォルトでは mountd をビルドしない設定になっているので、設定を変更して再ビルドします。

[PC ~/mydroid]$ vi system/core/mountd/Android.mk
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

...中略...

# disabled - we are using vold now instead
include $(BUILD_EXECUTABLE)                   <-- コメントをとる。

[PC ~/mydroid]$ make

設定ファイルの設置

mountdは設定ファイルを参照してSDカードを自動マウントするので、設定ファイルを作成し、適切な場所においておく必要があります。
こちらの記事」に従ってAndroidユーザーランド(rootディレクトリ)を作成した後、設定ファイルをコピーして編集します。

[PC ~/mydroid]$ cp system/core/rootdir/etc/mountd.conf \
out/target/product/generic/root/system/etc/
[PC ~/mydroid]$ vi out/target/product/generic/root/system/etc/mountd.conf
## mountd configuration file

## add a mount entry for each mount point to be managed by mountd
mount {
    ## root block device with partition map or raw FAT file system
    block_device    /dev/block/mmcblk0        <-- SDカードに対応するデバイスファイルに変更
...後略...

また、mountdをサービスとして登録する必要があるので、init.rc ファイルの最後尾に追記します。

[PC ~/mydroid]$ vi out/target/product/generic/root/init.rc
...前略...
service mountd /system/bin/mountd          <-- 追記
socket mountd stream 0660 root mount       <-- 追記

あとは、AndroidユーザーランドをArmadilloに転送し、Armadillo-500 FXにSDカードを挿入してからAndroidを起動すれば、自動でSDカードが /sdcard にマウントされます。

SDカードはWindowsでFAT形式にフォーマットしたものを利用できます。

問題点

現状、以下の警告が出てしまいます。

FAT: Filesystem panic (dev mmcblk0)
fat_get_cluster: invalid cluster chain (i_pos 0)
File system has been set read-only

読み込み専用でマウントされてしまいました。当方ではさしあたり問題ないのですが・・・。
解決策が判明し次第、blogでフォロー致します。

タグ:

コメント / トラックバック2件

  1. Addy より:

    I’m not wtrohy to be in the same forum. ROTFL

  2. Aayushi より:

    Boom shkalaaka boom boom, problem solved.

コメントをどうぞ