Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   нет демона usbd (http://forum.oszone.net/showthread.php?t=216748)

Мио 29-09-2011 11:49 1762334

нет демона usbd
 
Решил сделать автоматическое монтирование флешки при подключении.
У меня FreeBSD 7.2, но демона usbd там не оказалось.
Что делать?
Есть ли какие-нибудь альтернативы или можно как-то установить этот демон?

vadblm 29-09-2011 14:01 1762416

Вариантов несколько:
- devd - функционал usbd с 7-ки вынесен в него;
- amd+automounter;
- HAL/PolicyKit/D-Bus + рабочая среда, их использующая (Gnome, Xfce, KDE ...).

Мио 29-09-2011 15:02 1762458

Цитата:

devd - функционал usbd с 7-ки вынесен в него;
Что надо написать в rc.conf чтобы его включить?
В devd.conf пишутся такие же строки, как и в usbd.conf ?
Я писал:
Код:

device "USB flash"
devname "da[0-9]+"
attach "mount_msdosfs /dev/${DEVNAME} /mnt/${DEVNAME}"

И еще такой вопрос. Поскольку каталога /mnt/da0s1 не существует, то при монтировании скорее всего возникнет ошибка. Как сделать, чтобы он автоматически создавался?

vadblm 29-09-2011 15:14 1762476

Цитата:

Цитата Мио
Что надо написать в rc.conf чтобы его включить? »

devd включен по умолчанию.
Цитата:

Цитата Мио
В devd.conf пишутся такие же строки, как и в usbd.conf ? »

Нет, прочитайте, например, эту статью.
Цитата:

Цитата Мио
Как сделать, чтобы он автоматически создавался? »

В статье показано как.

Мио 30-09-2011 10:03 1762899

Спасибо, заработало.
Но пришлось внести коррективы.
1. У меня не оказалось mount_msdosfs_iconv, пришлось монтировать просто mount_msdosfs
2. Подсластил одну из ложек дегдя. Вместо указания имени пользователя-владельца каталога монтирования указываю группу.
3. В статье, наверное ошибка, ибо
/sbin/umount /media/$device-name
при отсоединении не работает
Я добавил флаг -f и заработало.
Но вообще у меня сомнения, корректно ли вот так просто выдергивать флешку. Я так понимаю, размонирование происходит уже после отсоединения. Следовательно такое отсоединение потенциально опасно для флешки. Наверное надо сначала вручную размонировать, а потом отсоединять.

Кстати, такой вопрос. Тут для объединения команд служит логический оператор И (&&). Но если одна из команд завершается ошибкой, то остальные не выполняются. Например, если я размонтирую флешку вручную, а потом выну, то демонический скрипт не выполнится до конца (каталог не будет удален), потому что повторная команда размонтирования привет к ошибке. А как надо перечислить команды, чтобы они выполнились в любом случае?

vadblm 30-09-2011 12:26 1762989

Цитата:

Цитата Мио
Но пришлось внести коррективы. »

Да там вообще всё очень сыро, например вторую флешку при подключенной первой этот чудо-скрипт не подсоединит.
Цитата:

Цитата Мио
2. Подсластил одну из ложек дегдя. Вместо указания имени пользователя-владельца каталога монтирования указываю группу. »

Я бы вообще флешкам задал права 0666 через devfs и не парился.
Цитата:

Цитата Мио
Но вообще у меня сомнения, корректно ли вот так просто выдергивать флешку. Я так понимаю, размонирование происходит уже после отсоединения. Следовательно такое отсоединение потенциально опасно для флешки. Наверное надо сначала вручную размонировать, а потом отсоединять. »

Некорректно, но флешке это никак не повредит. Максимум - данным на ней или файловой системе. Автору пришлось даже костыль с fsck в команды аттача вставлять - по жизни флешка в кашу, хехе. Но разумеется, корректно сначала отмонтировать. Потому в бытность FreeBSD у меня на десктопе, пользовался вариантом с HAL/PolicyKit.
Цитата:

Цитата Мио
А как надо перечислить команды, чтобы они выполнились в любом случае? »

Вроде через точку с запятой.

Мио 30-09-2011 12:53 1763009

Цитата:

Да там вообще всё очень сыро, например вторую флешку при подключенной первой этот чудо-скрипт не подсоединит.
Да, это я заметил.
У меня предположение, как сделать это возможным. Подскажите, сработает ли:
в device-name "umass([0-9]+)"; [0-9] вложить в подмаску (это же регулярное выражение). В регулярках это же делается с помощью круглых скобок. А потом эту подмаску использовать. Только как, я уже затрудняюсь предположить. $1 - вряд ли. Да и вообще, там подмаску можно записать?

Цитата:

Некорректно, но флешке это никак не повредит. Максимум - данным на ней или файловой системе.
Это я тоже имел ввиду. А вообще у меня однажды на одной флешке контроллер полетел. Востанавливать его оказалось не так то просто. Из нескольких прог, которые вроде бы подходили для этой модели флешки сработала только одна. Так что вполне допускаю, что можно так попасть, что и не найдешь.
Как писали на форумах, контроллер флешки часто сбивается как раз из-за некорректного отключения.

vadblm 30-09-2011 13:14 1763029

Нашёл более аккуратное решение, полюбопытствуйте.

Мио 30-09-2011 13:22 1763034

У меня знаний пока еще маловато, чтобы разобраться в этом коде. В принципе понятно, что там делается, но бездумно копировать я не люблю. Тем более, если это не заработает, я не буду иметь понятия, что и где исправлять.

Мио 30-09-2011 22:35 1763404

Не учел я еще такой момент. Размонтировать вручную из под обычного пользователя нельзя. Надо делать это с правами root. А это не удобно. Как решается эта проблема?

vadblm 30-09-2011 23:15 1763420

$ sysctl -d vfs.usermount
vfs.usermount: Unprivileged users may mount and unmount file systems

Мио 01-10-2011 19:29 1763799

еще вопрос
У меня программа размонтирования лежит в /sbin/umount, как впрочем и mount
Но почему-то при монтировании достаточно написать mount (без /sbin/), а umount обязательно надо полный путь писать, иначе не работает. Где и что надо прописать, чтобы и umount можно было выполнять без полного указания пути?

vadblm 01-10-2011 19:50 1763816

Цитата:

Цитата Мио
Но почему-то при монтировании достаточно написать mount (без /sbin/), а umount обязательно надо полный путь писать, иначе не работает. »

Всё работает. Если у вас не работает, значит сбита переменная среды $PATH, поскольку по умолчанию /sbin в ней прописан.
Код:

$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin


Мио 01-10-2011 21:06 1763864

Цитата:

Цитата vadblm
$ sysctl -d vfs.usermount »

Я пишу # sysctl -d vfs.usermount=1 и команда проходит удачно.
Но размонтировать не удается. Я где-то прочитал, что требуется перезагрузка, но и после перезагрузки не удается размонтировать. Такое впечатление, что sysctl -d vfs.usermount=1 работает только на данный сеанс.

В руководстве написано, что того же результата можно достичь отредактировав файл /etc/sysctl.conf
vfs.usermount=1

Цитата:

Цитата vadblm
Всё работает. Если у вас не работает, значит сбита переменная среды $PATH »

Да, пардон. Я спутал. Просто выходила ошибка об отсутствии доступа

vadblm 01-10-2011 22:13 1763917

Нужно просто sysctl vfs.usermount=1
Ключом -d я просто показал описание данного параметра ядра.
Цитата:

Цитата Мио
В руководстве написано, что того же результата можно достичь отредактировав файл /etc/sysctl.conf
vfs.usermount=1 »

Это просто устанавливает этот парметр при загрузке.
Цитата:

Цитата Мио
Но размонтировать не удается. »

Если смонтировали рутом (помнится, вы не жаловались, что не можете смонтировать, значит монтируете рутом), то размонтировать не-рутом не сможете, независимо от vfs.usermount.
Отмонтировать может только тот же пользователь, что монтировал (ну или рут, который может всё).
Так что монтируйте примерно так: su user -c 'mount /dev/da0s1a /home/user/mountpoint'

Мио 01-10-2011 22:58 1763940

Цитата:

Цитата vadblm
Это просто устанавливает этот парметр при загрузке. »

А sysctl vfs.usermount=1 надо каждый раз выполнять после перезагрузки? И выполнять эту команду надо из под рута?

vadblm 01-10-2011 23:05 1763946

Цитата:

Цитата Мио
А sysctl vfs.usermount=1 надо каждый раз выполнять после перезагрузки? »

Подумать не пробовали, или man sysctl.conf почитать? :)
Раз прописано в sysctl.conf, то зачем руками повторять?

Мио 01-10-2011 23:26 1763956

Цитата:

Цитата vadblm
Раз прописано в sysctl.conf, то зачем руками повторять? »

А sysctl vfs.usermount=1 прописывает в sysctl.conf ?
Я смотрел этот файл после выполнения sysctl.conf, там нет строчки
vfs.usermount=1

vadblm 01-10-2011 23:37 1763960

Цитата:

Цитата Мио
А sysctl vfs.usermount=1 прописывает в sysctl.conf ? »

Нет. Сбросится в умолчальное значение (0) при перезагрузке. Чтобы он сохранялся и прописывают в sysctl.conf. Руками.
Цитата:

Цитата Мио
Я смотрел этот файл после выполнения sysctl.conf, там нет строчки
vfs.usermount=1 »

Ну так добавьте. :)


Время: 19:32.

Время: 19:32.
© OSzone.net 2001-