Показать полную графическую версию : нет демона usbd
Решил сделать автоматическое монтирование флешки при подключении.
У меня FreeBSD 7.2, но демона usbd там не оказалось.
Что делать?
Есть ли какие-нибудь альтернативы или можно как-то установить этот демон?
Вариантов несколько:
- devd - функционал usbd с 7-ки вынесен в него;
- amd+automounter;
- HAL/PolicyKit/D-Bus + рабочая среда, их использующая (Gnome, Xfce, KDE ...).
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 не существует, то при монтировании скорее всего возникнет ошибка. Как сделать, чтобы он автоматически создавался?
Что надо написать в rc.conf чтобы его включить? »
devd включен по умолчанию.
В devd.conf пишутся такие же строки, как и в usbd.conf ? »
Нет, прочитайте, например, эту статью (http://izenfire.blogspot.com/2009/09/freebsd-automount.html).
Как сделать, чтобы он автоматически создавался? »
В статье показано как.
Спасибо, заработало.
Но пришлось внести коррективы.
1. У меня не оказалось mount_msdosfs_iconv, пришлось монтировать просто mount_msdosfs
2. Подсластил одну из ложек дегдя. Вместо указания имени пользователя-владельца каталога монтирования указываю группу.
3. В статье, наверное ошибка, ибо
/sbin/umount /media/$device-name
при отсоединении не работает
Я добавил флаг -f и заработало.
Но вообще у меня сомнения, корректно ли вот так просто выдергивать флешку. Я так понимаю, размонирование происходит уже после отсоединения. Следовательно такое отсоединение потенциально опасно для флешки. Наверное надо сначала вручную размонировать, а потом отсоединять.
Кстати, такой вопрос. Тут для объединения команд служит логический оператор И (&&). Но если одна из команд завершается ошибкой, то остальные не выполняются. Например, если я размонтирую флешку вручную, а потом выну, то демонический скрипт не выполнится до конца (каталог не будет удален), потому что повторная команда размонтирования привет к ошибке. А как надо перечислить команды, чтобы они выполнились в любом случае?
Но пришлось внести коррективы. »
Да там вообще всё очень сыро, например вторую флешку при подключенной первой этот чудо-скрипт не подсоединит.
2. Подсластил одну из ложек дегдя. Вместо указания имени пользователя-владельца каталога монтирования указываю группу. »
Я бы вообще флешкам задал права 0666 через devfs и не парился.
Но вообще у меня сомнения, корректно ли вот так просто выдергивать флешку. Я так понимаю, размонирование происходит уже после отсоединения. Следовательно такое отсоединение потенциально опасно для флешки. Наверное надо сначала вручную размонировать, а потом отсоединять. »
Некорректно, но флешке это никак не повредит. Максимум - данным на ней или файловой системе. Автору пришлось даже костыль с fsck в команды аттача вставлять - по жизни флешка в кашу, хехе. Но разумеется, корректно сначала отмонтировать. Потому в бытность FreeBSD у меня на десктопе, пользовался вариантом с HAL/PolicyKit.
А как надо перечислить команды, чтобы они выполнились в любом случае? »
Вроде через точку с запятой.
Да там вообще всё очень сыро, например вторую флешку при подключенной первой этот чудо-скрипт не подсоединит.
Да, это я заметил.
У меня предположение, как сделать это возможным. Подскажите, сработает ли:
в device-name "umass([0-9]+)"; [0-9] вложить в подмаску (это же регулярное выражение). В регулярках это же делается с помощью круглых скобок. А потом эту подмаску использовать. Только как, я уже затрудняюсь предположить. $1 - вряд ли. Да и вообще, там подмаску можно записать?
Некорректно, но флешке это никак не повредит. Максимум - данным на ней или файловой системе.
Это я тоже имел ввиду. А вообще у меня однажды на одной флешке контроллер полетел. Востанавливать его оказалось не так то просто. Из нескольких прог, которые вроде бы подходили для этой модели флешки сработала только одна. Так что вполне допускаю, что можно так попасть, что и не найдешь.
Как писали на форумах, контроллер флешки часто сбивается как раз из-за некорректного отключения.
Нашёл более аккуратное решение, полюбопытствуйте (http://forums.freebsd.org/showpost.php?p=130655&postcount=5).
У меня знаний пока еще маловато, чтобы разобраться в этом коде. В принципе понятно, что там делается, но бездумно копировать я не люблю. Тем более, если это не заработает, я не буду иметь понятия, что и где исправлять.
Не учел я еще такой момент. Размонтировать вручную из под обычного пользователя нельзя. Надо делать это с правами root. А это не удобно. Как решается эта проблема?
$ sysctl -d vfs.usermount
vfs.usermount: Unprivileged users may mount and unmount file systems
еще вопрос
У меня программа размонтирования лежит в /sbin/umount, как впрочем и mount
Но почему-то при монтировании достаточно написать mount (без /sbin/), а umount обязательно надо полный путь писать, иначе не работает. Где и что надо прописать, чтобы и umount можно было выполнять без полного указания пути?
Но почему-то при монтировании достаточно написать mount (без /sbin/), а umount обязательно надо полный путь писать, иначе не работает. »
Всё работает. Если у вас не работает, значит сбита переменная среды $PATH, поскольку по умолчанию /sbin в ней прописан.
$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin
$ sysctl -d vfs.usermount »
Я пишу # sysctl -d vfs.usermount=1 и команда проходит удачно.
Но размонтировать не удается. Я где-то прочитал, что требуется перезагрузка, но и после перезагрузки не удается размонтировать. Такое впечатление, что sysctl -d vfs.usermount=1 работает только на данный сеанс.
В руководстве написано, что того же результата можно достичь отредактировав файл /etc/sysctl.conf
vfs.usermount=1
Всё работает. Если у вас не работает, значит сбита переменная среды $PATH »
Да, пардон. Я спутал. Просто выходила ошибка об отсутствии доступа
Нужно просто sysctl vfs.usermount=1
Ключом -d я просто показал описание данного параметра ядра.
В руководстве написано, что того же результата можно достичь отредактировав файл /etc/sysctl.conf
vfs.usermount=1 »
Это просто устанавливает этот парметр при загрузке.
Но размонтировать не удается. »
Если смонтировали рутом (помнится, вы не жаловались, что не можете смонтировать, значит монтируете рутом), то размонтировать не-рутом не сможете, независимо от vfs.usermount.
Отмонтировать может только тот же пользователь, что монтировал (ну или рут, который может всё).
Так что монтируйте примерно так: su user -c 'mount /dev/da0s1a /home/user/mountpoint'
Это просто устанавливает этот парметр при загрузке. »
А sysctl vfs.usermount=1 надо каждый раз выполнять после перезагрузки? И выполнять эту команду надо из под рута?
А sysctl vfs.usermount=1 надо каждый раз выполнять после перезагрузки? »
Подумать не пробовали, или man sysctl.conf почитать? :)
Раз прописано в sysctl.conf, то зачем руками повторять?
Раз прописано в sysctl.conf, то зачем руками повторять? »
А sysctl vfs.usermount=1 прописывает в sysctl.conf ?
Я смотрел этот файл после выполнения sysctl.conf, там нет строчки
vfs.usermount=1
А sysctl vfs.usermount=1 прописывает в sysctl.conf ? »
Нет. Сбросится в умолчальное значение (0) при перезагрузке. Чтобы он сохранялся и прописывают в sysctl.conf. Руками.
Я смотрел этот файл после выполнения sysctl.conf, там нет строчки
vfs.usermount=1 »
Ну так добавьте. :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.