
Ubuntu日本語フォーラム

ログインしていません。
初めて投稿します.
PASEN という Digital Audio & AV Player http://www.hallods.co.jp/1221628579795/ を購入しました.
PASEN の SD スロットの MicroSD は自動マウントしてくれますが,
内臓ドライブは自動認識しません.
$ sudo blkid
... 中略 ...
/dev/sdb: UUID="0716-7BFC" TYPE="vfat"
/dev/sdc1: UUID="72AD-2013" TYPE="vfat"
/dev/sdb が内臓ドライブで,/dev/sdc1 が MicroSD に当たります.
内臓ドライブはパーティションなしで,全体が FAT32 になっています.ですから,
$ sudo mkdir /media/pasen
$ sudo mount -t vfat /dev/sdb /media/pasen
でマウント出来ました.自動マウントしないのは,
$ sudo /lib/udev/vol_id /dev/sdb
/dev/sdb: unknown volume type
と,udev の /lib/libvolume_id.so.0 による FAT のチェックが厳格なためです.
USB ストレージとして Windows に認識されるデバイスの幾つかは FAT の仕様を守っていないようで,
signature の一部が仕様書にある数値と異なっていたりします.
ソースコードを調べた結果 blkid はチェックが緩く,signature を全く調べていません.
mount も Windows(!) もそうなのでしょう.
/lib/libvolume_id.so.0 は HAL でも使われているため,自動マウントは厳しそうですが,
せめて,/etc/fstab にUUID を記述して一般ユーザでマウント出来るようにしました.
まず,/dev/disk/by-uuid にリンクを作らねばなりません.
udev の vol_id による rule ではダメなので,/lib/udev/ と /etc/udev/rules.d にファイルを追加しました.
$ ls -l /lib/udev/blk_id
-rwxr-xr-x 1 root root 105 2008-12-28 15:41 /lib/udev/blk_id
$ cat /lib/udev/blk_id
#! /bin/sh
a=`/sbin/blkid $1`
r=$?
a=`echo $a | cut -d ' ' -f 2-`
for x in $a
do
echo $x
done
exit $r
$ ls -l /etc/udev/rules.d/61-persistent-storage-local.rules
-rw-r--r-- 1 root root 730 2008-12-28 15:39 /etc/udev/rules.d/61-persistent-storage-local.rules
$ cat /etc/udev/rules.d/61-persistent-storage-local.rules
ACTION!="add|change", GOTO="persistent_storage_local_end"
SUBSYSTEM!="block", GOTO="persistent_storage_local_end"
ENV{DEVTYPE}=="disk", IMPORT{program}="blk_id $tempnode"
ENV{DEVTYPE}=="disk", ENV{UUID}=="?*", SYMLINK+="disk/by-uuid/$env{UUID}"
LABEL="persistent_storage_local_end"
udev を再起動して,Player を接続すると,
$ ls /dev/disk/by-uuid/
0716-7BFC 72AD-2013
... 以下略 ...
blkid の結果のように 0716-7BFC が 内臓ドライブなので,/etc/fstab に,次の様に記述して一般ユーザによるマウントを可能にしました.
$ grep 0716-7BFC /etc/fstab
UUID=0716-7BFC /media/pasen vfat users,noauto 0 0
$ mount /media/pasen
$ ls /media/pasen
flash music picture record txt video
残された問題:
1) ubuntu-eee では /bin/mount に suid ビットが立ってなくて一般ユーザによるマウントが出来ませんでした.
pmount コマンドを使うのが本筋
$ pmount /dev/disk/by-uuid/0716-7BFC pasen
の様ですが,/etc/fstab の UUID 記述を生かす方が楽なので,
$ sudo chmod u+s /bin/mount
と,してしまいました.
もう一つの ubuntu-8.04.1 では /bin/mount /bin/umount とも suid ビットが立ってました.
どちらが本筋なのでしょうか?
2) /etc/fstab には UUID を記述してあっても,
$ mount | grep pasen
/dev/sdb on /media/pasen type vfat (rw,noexec,nosuid,nodev)
$ grep /etc/mtab
/dev/sdb /media/pasen vfat rw,noexec,nosuid,nodev 0 0
となり,
$ umount /media/pasen
umount: /media/pasen は fstab と一致しないマウントです
で一般ユーザでアンマウントできません.
fedora 10 では,同じ記述で一般ユーザでアンマウント出来ます.
最後の編集者: einundzwanzighundertsechs (2008-12-28 20:01:35)
オフライン
直接にHALを使用できませんか
オフライン