Как обнаружить вставку DVD диска?

Была аналогичная проблема при обновлении с 12.04 до 16.04. В конце концов заставил его работать, но не помню точно, что я сделал (шаг 2 не был очевиден).

  1. Удалить старые zfs пакеты, включая PPA, см. Обновление до 16.04 LTS с сервера ubuntu 14.04 LTS с помощью ubuntu-zfs
  2. Удалить: spl-dkms и ( Я думаю) spl
  3. Переустановить zfs

6
задан 16.04.2020, 05:23

2 ответа

UDEV отправляет события для приводов CD / DVD (я только что проверил это с udevadm), поэтому вы должны иметь возможность либо написать сценарий UDEV, либо написать сценарий upstart, например:

start on block-device-added

task

script
   if [ `$DEV` -eq "/dev/sr0" ]; then
      # do something
   fi
end script

Возможно, вам следует быть осторожным при проверке состояния монтирования. Я разграбил это из моего аналогичного ответа , который немного более объяснительный.


При выполнении udevadm monitor --property --udev, вот вывод, который я получил, когда вставляю DVD (--property делает это довольно многословным, но позволяет точно знать, с чем вы имеете дело):

UDEV  [2251414.166711] change   /devices/pci0000:00/0000:00:1c.1/0000:07:00.0/ata17/host16/target16:0:0/16:0:0:0/block/sr0 (block)
ACTION=change
DEVLINKS=/dev/cdrom /dev/cdrw /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7240S /dev/disk/by-label/UT2004_DVD /dev/disk/by-path/pci-0000:07:00.0-scsi-0:0:0:0 /dev/dvd /dev/dvdrw
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:07:00.0/ata17/host16/target16:0:0/16:0:0:0/block/sr0
DEVTYPE=disk
DISK_MEDIA_CHANGE=1
GENERATED=1
ID_ATA=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_DVD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_FS_LABEL=UT2004_DVD
ID_FS_LABEL_ENC=UT2004_DVD
ID_FS_TYPE=iso9660
ID_FS_USAGE=filesystem
ID_FS_VERSION=Joliet\x20Extension
ID_MODEL=Optiarc_DVD_RW_AD-7240S
ID_MODEL_ENC=Optiarc\x20DVD\x20RW\x20AD-7240S\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:07:00.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_07_00_0-scsi-0_0_0_0
ID_REVISION=1.00
ID_SERIAL=Optiarc_DVD_RW_AD-7240S
ID_TYPE=cd
MAJOR=11
MINOR=0
SEQNUM=4400
SUBSYSTEM=block
TAGS=:udev-acl:
UDEV_LOG=3
UDISKS_PRESENTATION_NOPOLICY=0
USEC_INITIALIZED=10393360
5
ответ дан 16.04.2020, 05:23

Это правило работает для меня и должно быть более общим, чем правило, которое относится к устройству по идентификатору. Кроме того, он должен запускаться только один раз за вставку, а не запускаться при извлечении диска.

ACTION=="change", KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD}=="1", ENV{ID_CDROM_MEDIA_STATE}=="complete", ENV{ID_FS_TYPE}=="udf", RUN+="/usr/local/bin/dvd-automount"
ACTION=="change", KERNEL=="sr[0-9]*", ENV{ID_CDROM_DVD}=="1", ENV{ID_CDROM_MEDIA_STATE}=="complete", ENV{ID_FS_TYPE}=="iso9660", RUN+="/usr/local/bin/dvd-automount"

Сценарий монтирования, который я использую, выглядит следующим образом:

#!/bin/bash

sleep 5

if ! mount | grep -q /dev/sr0; then
  mount /dev/sr0 /media/cdrom0
fi
1
ответ дан 16.04.2020, 05:24

Теги

Похожие вопросы