LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-11-19

はじめに

恥ずかしながら少しハマってしまったので自分への備忘録としてこのメモを残させていただきます。もしもどなたかの参考になることがありましたら望外に存じます。
以下を参考にさせていただいております
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)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3