SDカードを有効にする

SDを完全に認識させるには?

fi01さんより頂いた情報をwikiに展開しました。fi01さんありがとうございます。

旧情報のinit.rcに追加したスクリプトは削除して下さい。

ソース
system/vold/DirectVolume.cpp
を下記のように変更し、

diff -u system/vold/DirectVolume.cpp.orig system/vold/DirectVolume.cpp
--- system/vold/DirectVolume.cpp.orig	2011-01-17 11:00:46.075577000 +0900
+++ system/vold/DirectVolume.cpp	2011-01-24 16:27:43.322803266 +0900
@@ -135,6 +135,9 @@
         mDiskNumParts = 1;
     }
 
+    if (strcmp(devpath, "/devices/virtual/block/stheno") == 0)
+        mDiskNumParts = 0;
+
     char msg[255];
 
     int partmask = 0;

/system/etc/vold.fstab
の dev_mount sdcard 項目を
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/virtual/block/stheno
と変更する。

以上

下記は旧情報です。


SDカードは現在mountコマンドに頼っている状態です。

2chスレ fi01氏より
とりあえずですが、init.rcの最後に下記のスクリプト起動で
SDがマウントされた。
/bin/shにはbusyboxを配置しています。
#!/bin/sh
while test ! -b /dev/block/stheno
do
sleep 1
done

mount -t vfat -o utf8,uid=1000,gid=1015,fmask=702,dmask=702,shortname=mixed /dev/block/stheno /mnt/sdcard
これでマーケットのダウンロードも出来るようになった。

GUIで有効にするには?

/system/etc/vold.fstab
dev_mount sdcard /mnt/sdcard auto /devices/platform/msm_sdcc.2/mmc_host/mmc0
と書いておく。その他は # でコメントアウト。
GUIの設定→SDカードと端末容量→SDカードをマウント

マウントを解除してしまった、再度認識させるには?

マウントを解除してしまった場合は、ターミナルで、
# mount -t vfat -o utf8,uid=1000,gid=1015,fmask=702,dmask=702,shortname=mixed /dev/block/stheno /mnt/sdcard
# stop vold
# start vold
でGUIの設定で再度マウント出来るようになる。

USBストレージ

USBストレージもとりあえず使える。
ただし、もれなく機内モードと USBストレージをoff にしたときにマウントが解除が付いてくる。
再度、マウントする場合は、上記「再度認識させるには?」と機内モードを解除するを参照のこと。

完全対応するには?

GUI周りや、起動スクリプトなどを無理矢理カスタマイズしてしまう事も出来るかもしれない。
voldはのソースは下記の通り
$ANDROID_SRC/system/vold

コメント
  • すでにご存知かと思いますが、念の為お知らせします。 -- Yukto (2011-01-23 11:40:48)
  • すみません、途中で押してしまいました。下記のURL をご参照されては如何でしょうか? https://groups.google.com/group/android-porting/browse_thread/thread/6711fe988fa28aad?hl=ja https://groups.google.com/group/android-porting/msg/345d6b6344a52429?hl=ja -- Yukto8492 (2011-01-23 11:42:08)
  • 情報ありがとうございます。参考にさせていただきます。また何かありましたら、コメントして頂けると幸いです。 -- is01rebuild (2011-01-24 08:29:31)
  • GUI対応終わりました。/system/etcにvold.fstabを配置して下さい。 -- fi01 (2011-01-24 17:01:27)
  • http://72k.jp/is01/src/is01_0814.zip -- fi01 (2011-01-24 17:02:00)
  • 2.2/2.3共にOKです。 -- 名無しさん (2011-01-24 17:02:30)
  • init.rcでのコマンドは必要ありません。(関係ありませんが、コメントが1行しか書けません) -- fi01 (2011-01-24 17:04:49)
  • 2.3組み込み確認しました。多少安定性に欠ける(使用不可な時がある)ので、原因調べてみます。 -- RO215IS01 (2011-01-25 01:21:25)
  • fi01さんありがとうございます。vold.fstab の変更は済んでいたのですが、pending状態から脱するには…?と思っていたところでした。やはり、ソース修正でうまくいくようですね。 -- is01rebuild (2011-01-25 03:25:13)
  • コメントが複数行ないのは、そんなに必要ないかな?と思って、一行パターンにしたからでした。すみません、私の見積もりミスです。 -- is01rebuild (2011-01-25 03:26:04)
  • 名無しさん (2011-01-24 17:02:30)氏、動作報告ありがとうございます。 -- is01rebuild (2011-01-25 03:26:40)
  • 2.2_r1.3、動作確認できました。 -- is01rebuild (2011-01-25 03:27:45)
  • 動作確認不十分ですみません。root4スレに2.3の暫定対策書きました。voldの起動を待ってコマンドでマウントさせています。 -- fi01 (2011-01-25 09:11:58)
  • >>fi01さん
    対応ありがとうございます。
    コメント欄広いモノに変更しました。
    init.qcom.rcにこのような条件で発動する部分がありますね。
    on property:dev.bootcomplete=1
    また、
    write /sys/devices/platform/mass_storage/lun0/file /dev/block/mmcblk0p1
    でブロックデバイスの作成で良いのでしょうかね。
    となると、init.rcのon boot処理の後init.qcom.rcのon boot処理に
    なり遅れが生じるのかもです。

    いま、開発環境が手元にないので想像で書きますが、
    ・property dev.bootcomplete が 1になる時間がAndroidの
    安定時期と同じ程度なら、その property でマウントを発動さるか、
    voldをstop、startさせる、vdcコマンドの発行を行う。
    ・起動の早い段階で write を発行する。

    とかが有効かもしれないですね。
    (すみません、すべて想像です^^;) -- (is01rebuild ) 2011-01-25 10:44:13
  • 個人的には、vdc コマンドの存在を先ほど知りました。。^^;
    -- (is01rebuild ) 2011-01-25 10:50:24
名前:
コメント:

すべてのコメントを見る











(2011/01/23 1:00 公開)
最終更新:2011年01月25日 10:46
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。