LINUX.ORG.RU

Ни udiskie ни devmon не размонитируют извлеченный CDROM


0

1

В общем, попробовал выпилить hal из моей системы и столкнулся с тем, что без него работать невозможно. В частности, автомонтировщики udiskie и devmon не размонтируют диски ни при их извлечении, ни по команде eject, ни даже если вставить другой диск. Eject вообще не работает, диск не выдвигается.

★★★★★

Последнее исправление: Nxx (всего исправлений: 2)

udisks пишет «has media» даже если диск извлечен:

Showing information for /org/freedesktop/UDisks/devices/sr0
  native-path:                 /sys/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block/sr0
  device:                      11:0
  device-file:                 /dev/sr0
    presentation:              /dev/sr0
    by-id:                     /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7200S
    by-path:                   /dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0
  detected at:                 Втр 16 Авг 2011 18:23:16
  system internal:             0
  removable:                   1
  has media:                   1 (detected at Втр 16 Авг 2011 18:23:16)
    detects change:            1
    detection by polling:      1
    detection inhibitable:     1
    detection inhibited:       0
  is read only:                0
  is mounted:                  1
  mount paths:             /media/Samsung
  mounted by uid:              1000
  presentation hide:           0
  presentation nopolicy:       0
  presentation name:
  presentation icon:
  size:                        464955392
  block size:                  2048
  job underway:                no
  usage:                       filesystem
  type:                        iso9660
  version:                     Joliet\x20Extension
  uuid:
  label:                       Samsung
  optical disc:
    blank:                     0
    appendable:                0
    closed:                    0
    num tracks:                1
    num audio tracks:          0
    num sessions:              1
  drive:
    vendor:                    Optiarc
    model:                     Optiarc DVD RW AD-7200S
    revision:                  1.06
    serial:
    WWN:
    detachable:                0
    can spindown:              0
    rotational media:          Yes, unknown rate
    write-cache:               unknown
    ejectable:                 1
    adapter:                   /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2
    ports:
      /org/freedesktop/UDisks/adapters/0000_3a00_3a1f_2e2/host3
    similar devices:
    media:                     optical_cd
      compat:                  optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_ram optical_dvd_rw optical_mrw optical_mrw_w
    interface:                 scsi
    if speed:                  (unknown)
    ATA SMART:                 not available
Nxx ★★★★★
() автор топика

>попробовал выпилить hal из моей системы

Шёл 2011 год…

udiskie и devmon

Что это? Первое, наверное, udisks?

Eject вообще не работает

А от рута?

И да, USE=«consolekit policykit» стоят?

gentoo_root ★★★★★
()
Ответ на: комментарий от dhameoelin

> дистр какой?

openSUSE

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Что это? Первое, наверное, udisks?

Автомонтеры. Брал отсюда: https://wiki.archlinux.org/index.php/Udev#Automounting_UDisks_Wrappers

Какие преимущества перед hal даже в теории не понятно. И так и так в памяти сидит демон, который опрашивает устройство...

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>Автомонтеры.

Не нужны же. Монтировать должно DE с помощью ‘udisks --mount’, а размонтировать через ‘udisks --unmount’. Если DE с автомонтированием нет, то легко написать правило для udev, вызывающее ‘udisks --mount’.

Какие преимущества перед hal даже в теории не понятно.

Модульность, выпиливание ненужного функционала, дублирующего udev.

И так и так в памяти сидит демон, который опрашивает устройство...

Не опрашивает. Реагирует на события udev. А вот upower опрашивает периодически — получается реже, чем если бы были события при каждом обновлении состояния батарей.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

В общем, eject не работал из-за fam'а отключил fam - работает, и размонтирует, но только если щелкнуть на eject в GUI. Если просто извлечь диск физически, он не размонтируется, devmon не видит события «eject» :-\

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Монтировать должно DE с помощью ‘udisks --mount’, а размонтировать через ‘udisks --unmount’.

Так это ж только два DE могут.

Если DE с автомонтированием нет, то легко написать правило для udev, вызывающее ‘udisks --mount’.

Гм. Можно поподробнее?

Не опрашивает. Реагирует на события udev.

Ну хорошо, вот диск допустим, примонтирован. Чтобы это узнать, ДЕ следит за файлом /etc/mtab или за каталогом /media с помощью сервиса fam или прямого опроса. Чем это лучше hal'а?

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Модульность, выпиливание ненужного функционала, дублирующего udev.

Было: hald сидит в памяти и хлеба не просит

Стало: udiskie (написанный на Python) или devmon + fam + rpcbind (нужен для fam)

Итого, что меньше требует ресурсов?

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>Так это ж только два DE могут.

Xfce, GNOME, KDE как минимум.

Можно поподробнее?

SUBSYSTEMS==«block», ATTRS{removable}==«1», RUN+=«udisks --mount %k»

Не проверял.

Чтобы это узнать, ДЕ следит за файлом /etc/mtab или за каталогом /media с помощью сервиса fam или прямого опроса.

Нет. FAM уже везде выпилили, его заменил ядерный inotify. Поллинг тоже нигде уже не применяется.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> SUBSYSTEMS==«block», ATTRS{removable}==«1», RUN+=«udisks --mount %k»

Это куда нужно писать?

Нет. FAM уже везде выпилили, его заменил ядерный inotify.

Окей, inotify (почему-то думал, что fam современнее). Если отключен fam используется inotify. Тем не менее, вся эта пирамида жутко глючит, не монтирует или не размонтирует или не детектит момент монтирования.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Почему, например, при физическом извлечении диска udisks не кидает событиие eject?

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>Это куда нужно писать?

В правило udev'а куда-то в “/etc/udev/rules.d/[0-9][0-9]-.*\.rules”.

Если отключен fam используется inotify.

FAM вообще не используется.

Тем не менее, вся эта пирамида жутко глючит, не монтирует или не размонтирует или не детектит момент монтирования.

У меня ничего не глючит. Нефиг было ненужные программы устанавливать. Для монтирования нужны udev, udisks и файловый менеджер с поддержкой udisks для автомонтирования. Больше ничего не нужно.

gentoo_root ★★★★★
()
Ответ на: комментарий от Nxx

>Почему, например, при физическом извлечении диска udisks не кидает событиие eject?

Примонтированный дисковод лочится. С дисками я давно не работал, да и не извлекаю их кнопкой. С hal'ом он при этом размонтировался, что ли?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> файловый менеджер с поддержкой udisks для автомонтирования.

...которых раз два и обчелся.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

У меня вот такие рулесы, ничего не автомонтируется:

# Udev rules for udevmountd

# Skip 'add' events for device-mapper
ACTION=="add", SUBSYSTEM=="block", KERNEL=="dm-*", GOTO="skip_mount"
ACTION=="add", SUBSYSTEM=="block", KERNEL=="md*", GOTO="skip_mount"
# don't handle crypto devices, boot.crypto does that already (bnc#569942)
ACTION=="change", SUBSYSTEM=="block", KERNEL=="dm-*", ENV{DM_TARGET_TYPES}=="crypt", GOTO="skip_mount"
ACTION=="add|change", SUBSYSTEM=="block", ENV{FSTAB_OPTS}=="*nofail*", IMPORT="udevmountd"

ACTION=="add|change", ENV{FSCK_STATE}=="unknown|clean", RUN+="udevmountd add"
ACTION=="remove", ENV{FSTAB_OPTS}=="*nofail*", RUN+="udevmountd remove"

LABEL="skip_mount"

С дисками я давно не работал, да и не извлекаю их кнопкой. С hal'ом он при этом размонтировался, что ли

Конечно.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> FAM вообще не используется.

В общем, с этим inotify оно пропускает момент монтирования. Приходится после монтирования под рутом создавать папку или пустой файл в папке mount, чтобы оно еще раз просканировало mtab.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Разве вот эта команда не должна автоматом все монтировать?

 ACTION=="add|change", ENV{FSCK_STATE}=="unknown|clean", RUN+="udevmountd add" 

А она не монтирует.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>udevmountd

Хоспаде, это ещё что?

В общем, с этим inotify оно пропускает момент монтирования.

УМВР, почему то. Поставь уже PCmanFM, Nautilus, Thunar или Dolphin.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> Хоспаде, это ещё что?

/lib/udev/udevmountd

Поставь уже PCmanFM, Nautilus, Thunar или Dolphin.

не хочу

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Хоспаде, это ещё что?

Я так понимаю, это служба, которая должна заменять hald.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>/lib/udev/udevmountd

ОМГ, что это?! Почему у меня всё работает без никаких костылей?! У меня всего-то udev, udisks и нормальный FM.

не хочу

Зачем тогда тебе вообще udisks? Снеси его к чертям, он не нужен. Автомонтирование флешек можно запилить на чистом udev. В качестве готового решения — скрипт usbmount из дебиана.

gentoo_root ★★★★★
()
Ответ на: комментарий от Nxx

>Я так понимаю, это служба, которая должна заменять hald.

У меня этого вообще нет, и всё работает.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

А что, у тебя в рулесах так и написано «RUN+=„udisks --mount %k“ »?

В качестве готового решения — скрипт usbmount из дебиана.

чем оно лучше, чем udiskie или devmon из арча/убунты?

Nxx ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

> Автомонтирование флешек можно запилить на чистом udev.

А главное, чем он лучше, чем hal, который тоже действует через udev?

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>А что, у тебя в рулесах так и написано

У меня в рулесах ничего не написано, т.к. я пользуюсь файловым менеджером (по крайней мере, он запущен).

чем оно лучше, чем udiskie или devmon из арча/убунты?

Это просто скрипт на баше + правило udev. При этом работало всегда, где есть udev (никакие hal или udisks ему не нужны, их надо выпилить).

убунты

Там такой гадости, как udiskie или devmon, вообще нет.

gentoo_root ★★★★★
()
Ответ на: комментарий от Nxx

>А главное, чем он лучше, чем hal, который тоже действует через udev?

HAL — это большой немодульный неповоротливый кусок xml-г-на. usbmount — это маленький скрипт на баше, чтобы автомонтировать флешки, причём с возможностью тонкой настройки. А ещё это скрипт, который можно отредактировать.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Вот что там написано:

Users which would like an icon to appear when an USB device is plugged in should use the pmount and hal packages instead.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>Вот что там написано:

Каким ФМ пользуешься? Если тебе и значок на десктопе, и ФМ какой-то левый. usbmount просто монтирует, значки не нужны.

gentoo_root ★★★★★
()
Ответ на: комментарий от Nxx

>И похоже, этот usbmount с 2007 года не поддерживается, древнее чем hal.

И стабильнее. Чего там поддерживать, если по сути ничего не меняется? mount же не станет другим, и udev тоже. Если даже что-то поломают (вероятность 0.01%), то легко починить, т.к. это скрипт. Он просто запускается при срабатывании события udev (втыкании флешки), читает свой конфиг, в котором указаны опции монтирования для разных ФС, и монтирует через mount. Что тут поддерживать?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Посмотрел сейчас рулесы, которые там написаны - почти то же самое, что у меня уже есть... Только вместо udevmountd там usbmount.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

>Рулесы эти, похоже, там чисто для красоты.

Не-а. Они как раз вызывают скрипт, когда появляется или пропадает флешка.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

> Не-а. Они как раз вызывают скрипт, когда появляется или пропадает флешка.

В том-то и дело, что они ни на что не влияют...

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

Напишите правило обработки добавления устройства и укажите для него действие создавать к примеру файл с именем дата_время с секундами и вставьте мышку / флешку. Добейтесь работы этого скрипта. Дальше напишите свой обработчик, создающий точку монтирования по метку фс / uuid фс и вызывающую команду монтирования в соответствии с типом фс, всё это можно узнать из вывода, к примеру, команды blkid, или в /proc.

kostik87 ★★★★★
()
Ответ на: комментарий от gentoo_root

> Надо udev перезапустить.

перезагружался... еще теперь eject стал ругаться - говорит, только с hal'ом работает. Так что теперь сидюк вообще не размонтируешь без рута (физически вытащить - не размонтируется).

Nxx ★★★★★
() автор топика
Ответ на: комментарий от Nxx

Добавьте в правило монтирования cd приводов или файловых систем iso9660 и udf опции монтирования, позволяющие размонтировать их обычным пользовательям:

-o user,users

kostik87 ★★★★★
()
Ответ на: комментарий от Nxx

Чем вы монтируете cd накопитель, если udisk, то можно создать строску в /etc/fstab:

/dev/sr0   /media/sr0   auto user,users  0 0
и соответственно точку монтирования.

Если через правила udev, то редактируйте скрипт.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Или вместо /dev/sr0 указать /dev/cdrom - это ссылка, указывающая на cd накопитель.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

> создать строску в /etc/fstab:

Да вы что. И в пакет я тоже эту строчку упакую, да? Если что-то в fstab, то оно и так монтируется нормально.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от kostik87

> В какой пакет?

Чтобы у всех работало.

Чем вас не устравивает

Сидюков может быть два или три, а еще может быть 6 флешек одновременно воткнуто.

Nxx ★★★★★
() автор топика
Ответ на: комментарий от kostik87

И чем это в конце концов поможет-то? Оно автоматом монтироваться будет, если разрешить юзерам?

Nxx ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.