RaspberryPi
chmod
raspbian
fat32
fstab

PC と共有するために SD に作った FAT32のパーティションを Raspberry Pi で chmod できない時の対処

More than 3 years have passed since last update.


はじめに

恥ずかしながら少しハマってしまったので自分への備忘録としてこのメモを残させていただきます。もしもどなたかの参考になることがありましたら望外に存じます。

以下を参考にさせていただいております

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 で確認します


fdisk

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)