システム3部鈴木です。
前回問題点としてあげていたwarningは、どうやらFATのフォーマットに関係があるようなので、調査しました。
もっとも、AndroidにマウントしたSDカードにviで新しいファイルを作ることができたので、「File system has been set read-only」というメッセージにどの様な意味があるのか良くわからないのですが。
mkdosfsのインストール
FATフォーマットをWindowsで行っているのが良くないのでは?ということで、LinuxでDOSのファイルシステムを作るためのmkdosfsを使ってみます。
参考サイト:[Armadillo:02384] Re: fsck.vfat について
atmark-distには入っていないので、arm用のバイナリをDLして、Armadilloのユーザーランドに追加します。
[PC ~]$ wget http://ftp.jp.debian.org/debian/pool/main/d/dosfstools/dosfstools_2.11-2.1+b1_arm.deb
(GCC4.1の場合)
パッケージを展開して、中身をArmadilloのユーザーランドにコピーします。
[PC ~]$ dpkg -x dosfstools_2.11-2.1+b1_arm.deb pkg
[PC ~]$ cp pkg/* atmark-dist/rootfs/sbin/
イメージを作り直します。
[PC ~]$ cd atmark-dist
[PC ~/atmark-dist]$ make image
Armadilloのフラッシュメモリに書き込みます。
例えばFTPで romfs.img.gz を /home/ftp/pub フォルダに転送し、下記のコマンドを実行します。
[armadillo ~]# netflash -nkur /dev/flash/nor.userland /home/ftp/pub/romfs.img.gz
フォーマット
SDカードのパーティションを切りなおし、FATでフォーマットします。
fdiskで既存のパーティションを削除し、新規パーティションをデフォルトで作成します。
その後、以下の設定をします。
Command (m for help): a
Partition number (1-4): 1
・・・ブート可能に。
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)
・・・System IDを6に。
作成したパーティションをSDカードに書き込んだら、FATにフォーマットします。
[armadillo ~]# mkfs.vfat -F 32 /dev/mmcblk0
不思議なことに、この状態のSDカードをfdiskで見てみると…
Command (m for help): p
Disk /dev/mmcblk0: 14 MB, 14745600 bytes
4 heads, 16 sectors/track, 450 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
…パーティションがありません。どういう現象なのでしょう???
それはともかく、Androidを起動してみたところ、例の警告は出ませんでした。
ただし、このSDカードをWindowsPCに挿し、ファイルを書き込もうとすると、フォルダは空なのに容量がないと言われます。
仕方ないのでFATでフォーマットし、mp3ファイルを書き込んでみました。
Androidでマウントしても警告は出ませんし、mp3も再生できたので、ひとまず解決とします。
ただ、このSDをfdiskで見てみると…
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 ? 12158374 29994462 570754815+ 72 Unknown
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(357, 116, 40) logical=(12158373, 2, 5)
Partition 1 has different physical/logical endings:
phys=(357, 32, 45) logical=(29994461, 2, 3)
Partition 1 does not end on cylinder boundary.
/dev/mmcblk0p2 ? 2635774 32886216 968014120 65 Unknown
Partition 2 has different physical/logical beginnings (non-Linux?):
phys=(288, 115, 43) logical=(2635773, 3, 3)
Partition 2 has different physical/logical endings:
phys=(367, 114, 50) logical=(32886215, 0, 2)
Partition 2 does not end on cylinder boundary.
/dev/mmcblk0p3 ? 29216898 59467339 968014096 79 Unknown
Partition 3 has different physical/logical beginnings (non-Linux?):
phys=(366, 32, 33) logical=(29216897, 3, 10)
Partition 3 has different physical/logical endings:
phys=(357, 32, 43) logical=(59467338, 1, 9)
Partition 3 does not end on cylinder boundary.
/dev/mmcblk0p4 ? 1 18446744073699274417 18446744073380681216 d Unknown
Partition 4 has different physical/logical beginnings (non-Linux?):
phys=(372, 97, 50) logical=(0, 0, 1)
Partition 4 has different physical/logical endings:
phys=(0, 10, 0) logical=(56831663, 3, 16)
Partition 4 does not end on cylinder boundary.
Partition table entries are not in disk order
…これはこれで別の問題を孕んでいそうですが、当面は放っておくことにしました。
WindowsPCでSDカードをFAT32形式にフォーマットしようとすると容量が少なすぎると言われるので、もっと大容量のSDを使用すると、また違った結果になるかもしれません。