1 |
Hi! |
2 |
|
3 |
Всем спасибо за помощь. Вот, что получилось в результате: |
4 |
|
5 |
|
6 |
--- /etc/udev/rules.d/99-usb-automount.rules --- |
7 |
|
8 |
# Allow user mount/umount (set device owner and use 'owner' option in fstab). |
9 |
# Create mount point directories for vfat/ext2/ext3/ext4/ntfs partitions. |
10 |
# Create symlinks using partition label (overwrite duplicates). |
11 |
# Auto-mount vfat with 'flush' option. |
12 |
# No auto-mount for other filesystems (because there is NO SAFE auto-unmount). |
13 |
# Auto-unmount vfat/ext2/ext3/ext4/ntfs and cleanup directories/symlinks. |
14 |
|
15 |
ENV{mount_user}="powerman" |
16 |
ENV{mount_path}="/mnt" |
17 |
|
18 |
KERNEL=="sd*", DRIVERS=="usb-storage", ENV{ID_FS_TYPE}!="", \ |
19 |
OWNER="%E{mount_user}", \ |
20 |
ENV{mount_point}="usb.%k" |
21 |
|
22 |
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \ |
23 |
ENV{mount_fs}="vfat", \ |
24 |
ENV{mount_opts}="flush,owner,umask=007,showexec,quiet" |
25 |
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ext2|ext3|ext4", \ |
26 |
ENV{mount_fs}="%E{ID_FS_TYPE}", \ |
27 |
ENV{mount_opts}="owner" |
28 |
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ntfs", \ |
29 |
ENV{mount_fs}="ntfs-3g", \ |
30 |
ENV{mount_opts}="owner,umask=007,fmask=111" |
31 |
|
32 |
ACTION=="add", ENV{mount_point}!="", \ |
33 |
RUN+="/bin/mkdir -p %E{mount_path}/%E{mount_point}", \ |
34 |
RUN+="/bin/sed -i.bak '$a/dev/%k %E{mount_path}/%E{mount_point} %E{mount_fs} %E{mount_opts} 0 0' /etc/fstab" |
35 |
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \ |
36 |
RUN+="/usr/bin/sudo -u %E{mount_user} /bin/mount %E{mount_path}/%E{mount_point}", \ |
37 |
RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 2500 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash automounted' '%E{mount_point}\n%E{ID_FS_LABEL}'" |
38 |
ACTION=="remove", ENV{mount_point}!="", \ |
39 |
RUN+="/bin/umount -l %E{mount_path}/%E{mount_point}", \ |
40 |
RUN+="/bin/sed -i.bak '/^\/dev\/%k \S\+\/%E{mount_point} /d' /etc/fstab", \ |
41 |
RUN+="/bin/rmdir %E{mount_path}/%E{mount_point}", \ |
42 |
RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 1000 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash disconnected' '%E{mount_point}\n%E{ID_FS_LABEL}'" |
43 |
|
44 |
ACTION=="add", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \ |
45 |
RUN+="/bin/ln -nsf %E{mount_point} %E{mount_path}/%E{ID_FS_LABEL}" |
46 |
ACTION=="remove", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \ |
47 |
RUN+="/bin/rm %E{mount_path}/%E{ID_FS_LABEL}" |
48 |
|
49 |
--- /etc/udev/rules.d/99-usb-automount.rules --- |
50 |
|
51 |
|
52 |
P.S. В процессе отладки после частого подключения/отключения разных флешек |
53 |
два раза что-то ломалось в ядре и оно переставало реагировать на |
54 |
подключение/отключение флешек, приходилось перегружаться. Не думаю, что |
55 |
это вызвано моими правилами udev, скорее это просто баг в ядре. "Умирало" |
56 |
оно оба раза в момент подключения флешки, и последние сообщения в логе |
57 |
касающиеся usb были примерно такие: |
58 |
|
59 |
2012-05-28_11:33:15.40111 kern.info: usb 2-1.1: new high-speed USB device number 118 using ehci_hcd |
60 |
2012-05-28_11:33:15.48422 kern.err: ehci_hcd 0000:00:1d.0: fatal error |
61 |
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up |
62 |
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: force halt; handshake ffffc9000002e024 00004000 00004000 -> -110 |
63 |
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up |
64 |
2012-05-28_11:33:15.49011 kern.err: usb 2-1.1: device descriptor read/all, error -108 |
65 |
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19) |
66 |
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19) |
67 |
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19) |
68 |
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19) |
69 |
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19) |
70 |
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19) |
71 |
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19) |
72 |
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: unable to enumerate USB device on port 1 |
73 |
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19) |
74 |
2012-05-28_11:33:15.49016 kern.info: usb 2-1: USB disconnect, device number 2 |
75 |
|
76 |
Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести |
77 |
не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия, |
78 |
может в более новых это уже пофиксили. |
79 |
|
80 |
-- |
81 |
WBR, Alex. |