cht電腦資訊Linux
adm Find login register

PCManFM 法自動掛載 USB 外接硬碟的解決方法

coolcd
1 PCManFM 法自動掛載 USB 外接硬碟的解決方法
Promote 0 Bookmark 02012-03-23quote  

目前 Debian Stable (Squeeze) 的 PCManFM 0.9.7 無法自動掛載 USB 外接硬碟

如果在 terminal 執行,可以看到出現 try automount 的訊息

但打開 PCManFM 後,並沒有自動掛載,也沒有進一步的訊息

如果可以自動掛載

應該會在桌面、垃圾筒、應用程式、CDRom0 下方,文件、音樂……等資料夾上方顯示 USB 外接硬碟的磁區

經過反覆嚐試

如果在 polkit-1 內自訂一個規則,就可以讓 PCManFM 自動掛載

PCManFM#Mounting_as_normal_user

/etc/polkit-1/localauthority/50-local.d/55-myusb.conf

[Storage Permissions]
 Identity=unix-group:plugdev
 Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.inhibit-polling;org.freedesktop.udisks.drive-set-spindown
 ResultAny=yes
 ResultActive=yes
 ResultInactive=no

記得你的 user account 要加入 plugdev 這個 group

然後要登出、重新登入才會生效

感謝 archlinux 很棒的 wiki,很多疑難雜症的解法都是從那邊學來的

如果不是用 gnome 2,用其他視窗管理器/桌面系統,如 icewm/pekwm/awesome 等

可能要手動跑

/usr/lib/gvfs/gvfsd &
/usr/lib/gvfs//gvfs-fuse-daemon "${HOME}"/.gvfs &
/usr/lib/gvfs/gvfs-gdu-volume-monitor &
/usr/lib/gvfs/gvfs-gphoto2-volume-monitor &
/usr/lib/gvfs/gvfs-afc-volume-monitor &
/usr/lib/gvfs/gvfsd-trash --spawner :1.14 /org/gtk/gvfs/exec_spaw/0 &
/usr/lib/gvfs/gvfsd-metadata &

edited: 2
eliu
2
Promote 0 Bookmark 02012-03-23quote  

在 ubuntu 11.0 & mandriva /etc/polkit-1/localauthority.conf.d

都有

50-localauthority.conf

[Configuration]
AdminIdentities=unix-user:0

ubuntu 多了

51-ubuntu-admin.conf

[Configuration]
AdminIdentities=unix-group:admin

與你的不一樣
 

coolcd
3 PCManFM 法自動掛載 USB 外接硬碟的解決方法
Promote 0 Bookmark 02012-03-23quote  

路徑忘了改,是

coolcd

/etc/polkit-1/localauthority.conf.d/55-myusb.conf

是自己新加的檔案

不過剛剛再次確認,結果是沒有解決 Orz

歹勢誤導各位了

目前狀況是:

以 gdm3 管理登入

thunar 1.0.2 無論在 gnome 或 icewm/pekwm,都可以自動 mount usb

nautilus 2.30.1 只有在 gnome 可以自動 mount usb

pcmanfm 無論在 gnome/icewm/pekwm 都無法自動 mount usb

edited: 1
coolcd
4
Promote 0 Bookmark 02012-03-24quote  

第一篇的方式只能用在 gnome 環境,猜想可能是 polkit authentication agent 的問題,不太清楚

目前試過的自動掛載方式,相對可靠的可能是→自訂 udev rule

參考資料還是來自 archlinux wiki

Auto mounting USB devices

在 /etc/udev/rules.d/ 內加入 11-media-by-label-with-pmount.rules,內容如下:

KERNEL!="sd[b-z]*", GOTO="media_by_label_auto_mount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"

# Get label
PROGRAM=="/sbin/blkid -o value -s LABEL %N", ENV{dir_name}="%c"
# use basename to correctly handle labels such as ../mnt/foo
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"

ACTION=="add", ENV{dir_name}!="", RUN+="/bin/su YOURNAME -c '/usr/bin/pmount %N %E{dir_name}'"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/su YOURNAME -c '/usr/bin/pumount /media/%E{dir_name}'"
LABEL="media_by_label_auto_mount_end"

綠字的部份可依自己系統狀況調整,紅字的部份要改成自己的 username。

當然,別忘了裝 pmount。

這個方式適用性比第一篇的高,據我測試,用在各種桌面環境都 ok。

這個方式的壞處是,usb 如果原本開機時就插著,不會自動 mount,猜想可能是 udev 還沒啟動,重插一次就可以自動掛載了。

還有,掛載的 username 要寫死在 rule,有多位使用者的電腦可能不太適合這個方式。

edited: 1
coolcd
5
Promote 0 Bookmark 02012-03-24quote  

coolcd

第一篇的方式只能用在 gnome 環境,猜想可能是 polkit authentication agent 的問題,不太清楚

錯了,在 gnome 環境,不需要去自訂 polkit-1 的 rule,把 gvfs 裝好,應該就可以自動掛載 usb 外接硬碟了。

coolcd
6
Promote 0 Bookmark 02012-03-27quote  

哇哈哈,約於抓到問題點了!

為什麼 PCManFM 有時可自動掛載以致於讓我誤解問題已解決、後來又不行呢?原因在於 → consolekit session 的問題

愈是 geeky 的人,愈容易陷入迷惑的泥沼!

從 startx 的情況來解說比較容易測試

原本我的 .xinitrc 中是這樣的:

ck-launch-session dbus-launch --sh-syntax --exit-with-session icewm-session &
exec urxvt

進入後,就在 urxvt 打 pcmanfm 測試,或者用 xbindkeys 設好的 alt+f2 從 dmenu 來跑 pcmanfm

因為這些途徑,都不是由 consolekit 控制的 session,所以導致 pcmanfm 無法取得 dbus 上的資源

要是用 icewm 內建的機制 Win + Space 或 menu 去執行 pcmanfm

就可以發現,usb 外接硬碟都自動掛載了!!

希望這次真的有抓到問題的重點 XD

 

要解決這個問題,可以用一個 dirty hack

把 .xinitrc 改成

exec ck-launch-session dbus-launch --sh-syntax --exit-with-session $HOME/.xstart

然後原本要執行的東西,改放到 .xstart 內

edited: 2

cht電腦資訊Linux
adm Find login register
views:16544