#はじめに
恥ずかしながら少しハマってしまったので自分への備忘録としてこのメモを残させていただきます。もしもどなたかの参考になることがありましたら望外に存じます。
以下を参考にさせていただいております
chmod - not working?
Adding a FAT32 partition to Raspbian on a Rasperry Pi
#結論
FAT32 は chmod できないので、mount 時に必要な権限を umask で与えておく
#はじめに
Raspberry Pi とカメラモジュールを使って動画を撮影して SD カードに保存する Web アプリを作っていて、後から PC でも読めるように FAT32 の領域を用意。そこに Raspivid で movie を出力する shellは正常に動作するのだけれども nginx から起動する PHP からだと何も書いてくれない。例によって nginx が pi アカウントでないこと(これがいろいろなトラブルを起こすので、pi アカウントにしておけばよかったと...)が原因かと思い、FAT32 がマウントされている /media フォルダを見ると案の定
pi@raspberrypi /media $ ls -la
total 16
drwxrwxrwx 3 root root 4096 Nov 19 10:04 .
drwxr-xr-x 24 root root 4096 Oct 17 20:26 ..
drwx------ 7 pi pi 8192 Jan 1 1970 MEDIA
そこで chmod a+w /MEDIA とするのだけど権限は変わらない。sudo を付けても変わらない。コマンドはエラーになるわけでもないのだが、黙って無視されているのかとにかく変わらなく、これは不思議だなぁと原因がわからずググってみて、前述の参考blog を見つけ...
#原因
FAT32はユーザーとか権限とかそういうものが最初からない(Read Only ぐらいしかないですね)ので、chmod と言われても逆に困りますよね ^^;;;
#対策
automount に任せるのではなく、/etc/fstab で umask を明記してマウントさせるよう一行追加します
/dev/mmcblk0p3 /media/MEDIA vfat auto,rw,user,users,exec,noatime,uid=1000,gid=1000,umask=000 0 0
ここで第一列の /dev/mmcblk0p3 が私の SD での FAT32 の領域です。第二列の/media/MEDIA が私の環境でのマウントポイント、大参列のtype は vfat、第四列のポイントは umask=000 で、これで以下のようにだれでも使える権限になります。
pi@raspberrypi ~ $ ls -la /media
total 16
drwxrwxrwx 3 root root 4096 Nov 19 10:56 .
drwxr-xr-x 24 root root 4096 Oct 17 20:26 ..
drwxrwxrwx 7 pi pi 8192 Jan 1 1970 MEDIA
umask は chmod とは逆で 1 が disabled なので混乱しますね
尚、SDカードの領域の情報は fdisk -l で確認します
pi@raspberrypi ~ $ sudo fdisk -l
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 10362879 5120000 83 Linux
/dev/mmcblk0p3 10362880 30849023 10243072 b W95 FAT32
#結論
わかってしまえば古典的な話だったのでむしろわからなかったのがお恥ずかしいぐらいなのですが...
#追記: それまで読み書きできていた FAT 領域が突然、read-only file system と言われるようになった時
こちらが参考になりました、FAT 領域が壊れているようです。
cat /var/log/messages | grep FAT
とすると
FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some day may be corrupt. Please fun fsck.
との事、そこで fsck するも、 fsck.vfat はない、との事なので FAT 用のツールのインストールから
sudo apt-get update
sudo apt-get install dosfstools
私の場合、FAT を /media にマウントしているので、unmount して fsck して再度 mount
sudo umount /boot
sudo fsck -a /boot
sudo mount /boot
これで、また正常に書き込めるようになりました
(2015.05.18)