Отправил.
Извлечение диска без размонтирования
Модераторы: Warderer, Модераторы разделов
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Спасибо сказали:
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Проверил у себя.
Выглядит это так: если в настройках файлового менеджера/графической оболочки понаставить всяких галочек насчет автомонтирования и т.п., тогда вроде всё работает правильно (нажатие кнопки на приводе приводит к отмонтированию ФС и извлечению лотка).
Если же галочки автомонтирования в настройках не выставлены, тогда проблема проявлется: по нажатию кнопки выдвигается лоток, но ФС остается смонтированнной.
Вот это не даёт никакого эффекта.
Всё это при условии, что в /etc/fstab отсутствуют записи для cdrom.
А вот если в /etc/fstab есть запись типа тогда совсем всё грустно: по нажатию кнопки выдвигается лоток и ФС размонтируется, но происходит это в любом случае, даже если диск занят (например плеер что-то проигрывает с этого диска). Естественно в плеере сыплются ошибки.
При этом в файловых менеждерах/оболочках диск вообще не виден и примонтировать его кроме как из командной строки невозможно.
Проверялось на Debian Wheezy 7.0,
Оболочки: LXDE, XFCE.
ФМ: PCManFM, Thunar.
Мне всегда очень нравилась эта фишка: система не отдаст диск, пока не отмонтируешь.
Сейчас этого нет. Жаль. Не подскажете, это возможно как-нибудь устроить, а?
А то прямо виндовое поведение получается. Разве что синий экран не выплёвывает.
Выглядит это так: если в настройках файлового менеджера/графической оболочки понаставить всяких галочек насчет автомонтирования и т.п., тогда вроде всё работает правильно (нажатие кнопки на приводе приводит к отмонтированию ФС и извлечению лотка).
Если же галочки автомонтирования в настройках не выставлены, тогда проблема проявлется: по нажатию кнопки выдвигается лоток, но ФС остается смонтированнной.
Вот это
Код: Выделить всё
echo 2000 > /sys/block/sr1/events_poll_msecsВсё это при условии, что в /etc/fstab отсутствуют записи для cdrom.
А вот если в /etc/fstab есть запись типа
Код: Выделить всё
dev/sr0 /media/cdrom0 udf,iso9660 ro,norock,mode=0444,user,noauto 0 0При этом в файловых менеждерах/оболочках диск вообще не виден и примонтировать его кроме как из командной строки невозможно.
Проверялось на Debian Wheezy 7.0,
Оболочки: LXDE, XFCE.
ФМ: PCManFM, Thunar.
Мне всегда очень нравилась эта фишка: система не отдаст диск, пока не отмонтируешь.
Сейчас этого нет. Жаль. Не подскажете, это возможно как-нибудь устроить, а?
А то прямо виндовое поведение получается. Разве что синий экран не выплёвывает.
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
fflatx писал(а): ↑24.06.2013 01:04Вот этоне даёт никакого эффекта.Код: Выделить всё
echo 2000 > /sys/block/sr1/events_poll_msecs
...
А вот если в /etc/fstab есть запись типаКод: Выделить всё
dev/sr0 /media/cdrom0 udf,iso9660 ro,norock,mode=0444,user,noauto 0 0
Обратите внимание, что в команде и в строке из fstab указаны разные устройства. Вы точно на том приводе включили in-kernel polling?
- Включите in-kernel polling.
- Скопируйте /lib/udev/rules.d/60-cdrom_id.rules в /etc/udev/rules.d.
- Закомментируйте два последних правила в скопированном файле.
Этого должно быть достаточно.
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Да точно, точно. Привод у меня один. На несуществующем устройстве это бы не сработало.
Это я просто команду привёл не свою, а из чужого поста. Более того, я даже патч накладывал из Вашего багрепорта. Это уж точно должно быть правильно? Кстати, он не хотел накладываться из-за переносов строк в оригинальном файле. Это так должно быть или я что-то упустил? Ну, в общем наложил патч, проверил - без толку.
Сейчас обновился до 7,1. Поведение изменилось. Теперь наличие строки в fstab не препятствует появлению привода в файловом менеджере. Однако in-kernel polling не помогает. По нажатию кнопки лоток выдвигается безусловно, ФС не отмонтируется. Ну, то есть как и было на 7.0.
Зато в отсутствие записи в fstab всё стало ещё интереснее - привод виден в ФМ, но даже не монтируется, говорит нет доступа.
У Вас, кстати, как? В fstab про привод чего-нибудь написано? Ибо эта запись кардинально меняет поведение.
Мда, мне никогда не нравилась вся эта автоматика касательно съемных устройств. Вечно она норовит сработать, когда её не спрашивают.
Посему вот за это
спасибо. Попробую - отпишусь.
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Патч, который я прикрепил к багрепорту, - это патч, накладываемый в Ubuntu. Это просто пример, как можно сделать. Естественно, он требует небольшой модификации для использования в Debian.
Перезагружались?
Добавляемое правило должно лишь включать in-kernel polling для сменных устройств. Если это произошло, но диск всё равно выезжает, не будучи размонтированным, - это другой вопрос.
Я так понимаю, монтирование осуществляется файловым менеджером? Попробуйте смонтировать командой $ udisks --mount /dev/устройство и проверьте.
Если же смонтированный с помощью udisks диск всё равно не размонтируется при извлечении, то это уже интереснее. Можете тогда запустить $ /sbin/udevadm monitor --property, вставить диск, смонтировать его, нажать кнопку извлечения, и вывод команды показать здесь? Если наличие строки в fstab у вас меняет поведение, то попробуйте оба варианта.
Я проверял по-всякому, и у меня разницы нет.
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Добавлю на всякий случай: после включения in-kernel polling необходимо перезапустить все процессы udisks, что были запущены ранее, иначе он всё ещё будет считать, что используется userspace polling, и потому - разблокировать лоток после монтирования, отчего сообщения DISC_EJECT_REQUEST посылаться не будут. Проще всего выполнить # pkill udisks; возможно, потребуется перезайти в DE.
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Сейчас проверил - работает. Вчера не работало. Может, и впрямь перезагрузку надо было, но я вроде делал, не помню.
По нажатию кнопки привода ФС отмонтируется, лоток выдвигается. Монтировал через ФМ.
Сейчас у меня разница состоит в том, что при наличии записи в fstab диск отмонтируется в любой момент (например, проигрывание).
Соответственно плеер ругается.
Если же записи в fstab нет, то система не отдаёт диск, пока он занят, то есть кнопка на приводе не срабатывает. Что в принципе радует. Именно этого мне и надо.
Единственное неудобство - привык я к команде mount из командной строки, здесь придется, видимо использовать udisks.
Попробовал смонтировать командой udisks --mount /dev/sr0. Результат такой же - не отдаёт диск, пока не отмонтируешь. Хорошо. Ну, чуть длиннее команда, чуть менее удобно.
А вот это
не сработало.
Если закомментировать IMPORT, то диск вообще не монтируется. Никак.
Если IMPORT оставить, а закомментировать {DISK_EJECT_REQUEST}, тогда диск монтируется, но потом по кнопке привода уже не отдаётся. Только командой eject. Кстати, вчера это поначалу работало как надо, потом перестало. Но это уже не актуально.
ПЫСЫ. Я тут попробовал монтировать диски командой pmount. Прекрасно монтируется и не отдаётся без спросу.
Тоже вариант. И как это я раньше не сообразил...
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Да, я ошибся: программа cdrom_id, запускаемая udev, не только блокирует привод, но и отдаёт информацию о диске. Поэтому правильно сделать так: в скопированном файле правил закомментировать то, что с EJECT_REQUEST, а у другого просто убрать опцию --lock-media - и можете монтировать, как хотите: хоть с fstab, хоть без.
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
Rootlexx писал(а): ↑24.06.2013 20:56Да, я ошибся: программа cdrom_id, запускаемая udev, не только блокирует привод, но и отдаёт информацию о диске. Поэтому правильно сделать так: в скопированном файле правила закомментировать то, что с EJECT_REQUEST, а у другого просто убрать опцию --lock-media - и можете монтировать, как хотите: хоть с fstab, хоть без.
Собственно, я пришел именно к такому решению, но у меня это приводит к тому, что диск можно извлечь без размонтирования
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Да, меня тоже такое положение вещей разочаровывает. Какие-то костыли везде.
Должно быть единообразие поведения: уж если лоток выдвигается, то диск должен размонтироваться всегда - или же не должен выдвигаться вообще. А сейчас то он вообще не размонтируется, то размонтируется, но лишь если был смонтирован с помощью udisks, а если просто командой mount - выдвинется, но останется смонтированным. И это, блин, всё в upstream! А чтобы разобраться во всём этом в условиях наличия отсутствия вменяемой документации, приходится лезть в исходники
udisks вообще не настраиваем фактически: чего стоит только безусловное разблокирование лотка при отсутствии in-kernel polling. А как, например, указать свои опции монтирования по умолчанию для сменных устройств? И вообще, почему этим всем занимается целый отдельный сервис, если можно было просто с помощью того же udev динамически добавлять/удалять записи в fstab для подключаемых/отключаемых устройств, и монтировать их уже простым вызовом mount? Зато теперь подключённое устройство нельзя смонтировать от обычного пользователя с помощью mount, но можно - с помощью udisks
Такое ощущение, что чем дальше, тем больше quick'n'dirty решения начинают преобладать над заранее продуманной архитектурой. Грустно, но факт...
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Совсем что ль никак? Ну опции-то он откуда-то берет, не хардкодом же они записаны...
В мане сказано, что можно передать опции монтирования. Правда насчёт умолчаний не знаю.
Динамическую запись в fstab помню по Мандриве. Ничего хорошего. Была там какая-то приблуда, которая этим занималась.
Не знаю, должны ли были эти записи динамически удаляться, но они оставались в fstab по одной на каждую новую флешку. Да ещё и с явно прописанными именами устройств. В результате для каждой флешки надо было помнить имя устройства и монтировать именно его. Иначе оно монтироваться не хотело. В общем, тоже ничего хорошего.
Ну я вот флешки давно уже монтирую/отмонтирую при помощи pmount/pumount - вполне нормально. А теперь, оказывается и диски тоже так можно (раньше нельзя было).
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Именно хардкодом.
fflatx писал(а): ↑26.06.2013 03:49Динамическую запись в fstab помню по Мандриве. Ничего хорошего. Была там какая-то приблуда, которая этим занималась.
Не знаю, должны ли были эти записи динамически удаляться, но они оставались в fstab по одной на каждую новую флешку. Да ещё и с явно прописанными именами устройств. В результате для каждой флешки надо было помнить имя устройства и монтировать именно его. Иначе оно монтироваться не хотело. В общем, тоже ничего хорошего.
Ну так дело не в принципе, а в кривой реализации. Естественно, записи должны удаляться при отключении устройства.
Да и не помню что-то я таких приблуд в Mandriva, хотя пользовался ей ещё с 2005LE. За Mandrake не скажу.
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Гкм... Ну, допустим, это какая-то начальная инициализация на случай отсутствия конфигов.
И что же на этом всё? Никакого способа это переопределить нет?
Посмотрел состав пакетов, посмотрел маны - конфигов не видать.
Оно конечно принимает опции командной строки, но...
Если всё так, то грустно.
Была у меня мысль выпилить этот udisks к чертям - не вышло. Там целая цепочка зависимостей.
Мда...
Было-было. Mandriva 2008. Вам видимо повезло не столкнуться с проблемой.
Записи добавлялись в fstab и оставались там. Udev тогда вроде там не было. Стало быть, это что-то другое.
Когда записей для внешних устройств в fstab стало больше трёх, начались нестыковки.
То ли на каждое устройство своя запись, то ли на каждый usb-порт - не помню, но помню, что мне руками пришлось удалять лишнее из fstab - чего-то там неправильно срабатывало.
-
Bizdelnick
- Модератор
- Сообщения: 21406
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Было дело. Насколько помню, это был не баг, а фича. При использовании небольшого числа флешек не напрягало, видимо на это и был расчёт.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Однако есть ещё надежда.
udisks-glue позволяет назначать событиям udisks пользовательские действия.
Имеет конфиг, кучу опций, в том числе и опции монтирования.
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
А без учета зависимостей нельзя? Тоже попробую, но мне чуть проще - зависимости учитываю я.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
В Debian нельзя, насколько я знаю. Пакетный дистрибутив.
Зависимости прописаны в пакетах.
Цепочка udisks -> libgdu0 ->gvfs-daemons->gvfs->libgnome2-0 без этого в общем, можно жить, но дальше в зависимостях уже куча всякой всячины, в том числе нужные программы.
Вы меня прямо заинтриговали. Это как же? Если для работы программы требуется библиотека, куда ж от неё деваться? Или там можно сделать так, что зависимости не пересекаются?
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
В Slackware управление пакетами осуществляется через pkgtools - pkgtool, {install,upgrade,remove,slack}pkg, и зависимости не проверяются. Вместо этого решение о установке любого пакета лежит на плечах администратора. Поэтому я (теоретически, потому что есть некоторый минимум пакетов, без которых работа системы невозможна вообще) могу удалить любой пакет из системы , равно как и поставить только часть пакетов, тем самым достигается более-менее оптимальный состав пакетов в зависимости от нужной функциональности. Если же какой -нибудь программе не хватает библиотеки, то программа не запустится. Диагностировать можно либо с помощью ldd, либо запустив программу из эмулятора терминала и проанализировав её вывод. В общих чертах, как-то так, не зря же система позиционируется как система для опытных пользователей
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Интересная штука. Это типа, если куча пакетов требует udisks, создаём фиктивный udisks и подсовываем.
А настоящий udisks давно уже прибили. Так? Не понятно только, как это работает.
Я не знаю, что такого есть в udisks, что от него зависит куча пакетов, но думаю, дело всё-таки в содержимом пакета, а не просто в его наличии. Да, я наивно полагаю, что мантейнеры не часто совершают глупости вроде ненужных зависимостей.
-
Bizdelnick
- Модератор
- Сообщения: 21406
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Тем более что большая часть зависимостей генерируется скриптами, которые писали не дураки.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
Потому я и написал "если очень хочется"
На беглый взгляд разделяемых библиотек в пакете udisks нет, так что падать от его отсутствия ничто не должно. А вот какой-то части функциональности можно и лишиться. Например, не будет работать (авто)монтирование в DE, а возможно, и вообще обнаружение внешних носителей.
Тем не менее, если очень хочется, можно превратить систему в слакварь. Но не нужно
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
Ну, не будет работать автомонтирование дисков в DE, и все. Падать от отсутствия udisks ничего и не должно - не такой он архиважный пакет. Тем более, это зависимости, нужные для работы самого udisks, а не для работы чего-нибудь еще. Плюс в Slackware все собирается так, чтобы дерево зависимостей было минимально ветвистым.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Извлечение диска без размонтирования
Да я, в общем-то не спорю. Я просто говорю, непонятно, как работает эта штука.Rootlexx писал(а): ↑27.06.2013 13:28Потому я и написал "если очень хочется" smile.gif.
На беглый взгляд разделяемых библиотек в пакете udisks нет, так что падать от его отсутствия ничто не должно. А вот какой-то части функциональности можно и лишиться. Например, не будет работать (авто)монтирование в DE, а возможно, и вообще обнаружение внешних носителей.
Тем не менее, если очень хочется, можно превратить систему в слакварь. Но не нужно smile.gif.
Если в результате отваливается часть нужных функций, то вряд ли это удовлетворит юзера. Значит, нужна замена.
К примеру.
Взяли udisks, заменили фиктивным пакетом, ничего не упало, часть функций отвалилась, посмотрели, не понравилось, вернули всё как было. Смысл?
Udisk-то хочется выпилить не потому, что функции его не нужны, а потому реализация не устраивает.
Замена-то есть для udisks? Чем восполнить то, что отвалилось? Я не знаю.
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
Я пока тоже не знаю, разве что udisks2. Но, похоже, он тоже не айс...
Я это в очередной раз перепроверил, поначалу действительно, было выключено и то, и другое. Я аж обрадовался, но не тут-то было, после включения in-kernel polling (патчем, найденным вами), записи в sysctl.conf
Код: Выделить всё
dev.cdrom.check_media = 1
dev.cdrom.lock = 1и перезагрузки(!) все остается по-прежнему: лоток наглухо блокируется, udevadm monitor показывает только событие change при вставке диска. Но хотя бы диск не отдает без размонтирования (собственно, так и было изначально), что уже плюс (и минус, это как посмотреть)....
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Извлечение диска без размонтирования
yars писал(а): ↑30.06.2013 19:25поначалу действительно, было выключено и то, и другое. Я аж обрадовался, но не тут-то было, после включения in-kernel polling (патчем, найденным вами), записи в sysctl.conf
Код: Выделить всё
dev.cdrom.check_media = 1 dev.cdrom.lock = 1
и перезагрузки(!) все остается по-прежнему: лоток наглухо блокируется, udevadm monitor показывает только событие change при вставке диска. Но хотя бы диск не отдает без размонтирования (собственно, так и было изначально), что уже плюс (и минус, это как посмотреть)....
Так, давайте по порядку.
- После вставки диск блокируется правилом udev в /lib/udev/rules.d/60-cdrom_id.rules:
Код: Выделить всё
IMPORT{program}="cdrom_id --lock-media $devnode" - При монтировании диск блокируется, если параметр sysctl dev.cdrom.lock равен 1.
- При монтировании с помощью udisks:
- если in-kernel polling выключен, то привод безусловно разблокируется после монтирования;
- если in-kernel polling включён, то состояние привода не меняется.
- При заблокированном лотке за извлечение по нажатию кнопки отвечает правило udev в /lib/udev/rules.d/60-cdrom_id.rules:
Код: Выделить всё
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
Принимая во внимание всё написанное выше, чтобы добиться такого поведения: диск не блокируется после вставки, но блокируется после монтирования и не извлекается до размонтирования - вам нужно:
- Убрать опцию --lock-media в первом правиле.
- Выставить значение параметра sysctl dev.cdrom.lock в 1.
- Включить in-kernel polling.
- Закомментировать второе правило.
Пожалуйста, проверьте, что вы всё выполнили.
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Извлечение диска без размонтирования
Ну вот, как и обещал, поднимаю эту тему. Имеем чистую Slackware 14.0 с Xfce, по умолчанию:
При этом диск не извлекается кнопкой на приводе, вне зависимости, смонтирован он или нет. Более того, после автоматического примонтирования диска udisks2 и его извлечения кнопочкой в Thunar'е лоток блокируется без диска намертво, помогает только перезагрузка (ну или я не нашел способа извлечь программно - eject как бы отрабатывает, но лоток не извлекается). Начинаю экспериментировать с информацией из с сообщения №57.
UPD: Поэкспериментировал.
In-kernel-polling включен, диск монтируется, но по кнопке на приводе не отдается. Эксперименты проводились без перезагрузок (просто перезапускал udisks, udev...). Попробую еще добавить в правила udev включение in-kernel-polling и перезагрузиться.
UPD2: Добавил, перезагрузился. Диск кнопкой не отдается (как и было изначально). Это хорошо, но хочется, чтобы диск по кнопочке размонтировался и отдался, а если это невозможно, выводить уведомление, что, мол, диск занят и отдать его нельзя. Вывод -- придется писать скриптик, который это реализует, затолкать его в правила udev и сделать как мне посоветовал вначале bormant - отключить блокировку диска по умолчанию.
UPD3: Комментирование строки с DISK_EJECT_REQUEST влияния не оказывает, раскомментировал обратно.
Код: Выделить всё
# cat /sys/module/block/parameters/events_dfl_poll_msecs
2000
# cat /sys/block/sr0/events
media_change eject_request
# cat /sys/block/sr0/events_poll_msecs
-1При этом диск не извлекается кнопкой на приводе, вне зависимости, смонтирован он или нет. Более того, после автоматического примонтирования диска udisks2 и его извлечения кнопочкой в Thunar'е лоток блокируется без диска намертво, помогает только перезагрузка (ну или я не нашел способа извлечь программно - eject как бы отрабатывает, но лоток не извлекается). Начинаю экспериментировать с информацией из с сообщения №57.
UPD: Поэкспериментировал.
Spoiler
Код: Выделить всё
/etc/udev/rules.d/60-cdrom_id.rules
# do not edit this file, it will be overwritten on update
ACTION=="remove", GOTO="cdrom_end"
SUBSYSTEM!="block", GOTO="cdrom_end"
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
# unconditionally tag device as CDROM
KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
# media eject button pressed
#ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
# import device and media properties and lock tray to
# enable the receiving of media eject button events
IMPORT{program}="cdrom_id $devnode"
# create default links to the first detected device
KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_CD_R}=="1", SYMLINK+="cdr", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_CD_R}=="1", SYMLINK+="cdwriter", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_CD_RW}=="1", SYMLINK+="cdrw", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_DVD_R}=="1", SYMLINK+="dvdr", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_DVD_R}=="1", SYMLINK+="dvdwriter", OPTIONS+="link_priority=-100"
KERNEL=="sr0", ENV{ID_CDROM_DVD_RW}=="1", SYMLINK+="dvdrw", OPTIONS+="link_priority=-100"
# create all other device links
KERNEL=="sr[0-9]*", ENV{ID_CDROM}=="1", SYMLINK+="cdrom%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_CD_R}=="1", SYMLINK+="cdr%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_CD_R}=="1", SYMLINK+="cdwriter%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_CD_RW}=="1", SYMLINK+="cdrw%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD_R}=="1", SYMLINK+="dvdr%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD_R}=="1", SYMLINK+="dvdwriter%n", OPTIONS+="link_priority=-100"
KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD_RW}=="1", SYMLINK+="dvdrw%n", OPTIONS+="link_priority=-100"
LABEL="cdrom_end"Код: Выделить всё
sysctl -q dev.cdrom.lock
dev.cdrom.lock = 1In-kernel-polling включен, диск монтируется, но по кнопке на приводе не отдается. Эксперименты проводились без перезагрузок (просто перезапускал udisks, udev...). Попробую еще добавить в правила udev включение in-kernel-polling и перезагрузиться.
UPD2: Добавил, перезагрузился. Диск кнопкой не отдается (как и было изначально). Это хорошо, но хочется, чтобы диск по кнопочке размонтировался и отдался, а если это невозможно, выводить уведомление, что, мол, диск занят и отдать его нельзя. Вывод -- придется писать скриптик, который это реализует, затолкать его в правила udev и сделать как мне посоветовал вначале bormant - отключить блокировку диска по умолчанию.
UPD3: Комментирование строки с DISK_EJECT_REQUEST влияния не оказывает, раскомментировал обратно.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
moonglow
- Сообщения: 90
- ОС: CentOS
Re: Извлечение диска без размонтирования
Fedora 19 LXDE, такое же поведение
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux