[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Демонстрационная станция



tataranovich@gmail.com пишет:
> ivman позволяет настроить реакцию системы на вставку/удаление
> конкретного устройства, типа устройств.
>   

Попробовал поработать с ivman и нарвался на странность - флеша не
монтируется сама.
Содержимое /etc/ivman/IvmConfigActions.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm";>
<ivm:Option name="checkOnInit" value="true" />
<ivm:Match name="ivm.mountable" value="true">
<ivm:Option name="mount" value="true" />
</ivm:Match>
<ivm:Match name="hal.info.category" value="storage">
<ivm:Match name="hal.storage.bus" value="usb">
<!-- <ivm:Match name="hal.block.is_volume" value="true"> -->
<ivm:Option name="mount" value="true" />
<ivm:Option name="exec" value="echo in >> /tmp/temp_log" />
<ivm:Option name="execun" value="echo out >> /tmp/temp_log" />
<!-- </ivm:Match> -->
</ivm:Match>
</ivm:Match>
</ivm:ActionsConfig>

С закоментированным блоком Match действия не выполняются вообще. Ниже
приведу вывод lshal по поводу флеши.
Содержимое /etc/ivman/IvmConfigBase.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivm:BaseConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm";>
<ivm:Option name="fork" value="true" />
<ivm:Option name="debug" value="false" />
<ivm:Option name="pidfile" value="/var/run/ivman/ivman.pid" />
<ivm:Option name="user" value="ivman" />
<ivm:Option name="group" value="plugdev" />
<ivm:Option name="mountcommand" value="pmount '$hal.block.device$'" />
<ivm:Option name="umountcommand" value="pumount '$hal.block.device$'" />
</ivm:BaseConfig>

Файлы IvmConfigConditions.xml и IvmConfigProperties.xml я не трогал.
При втыкании флешки в /var/log/messages попадает:
Sep 1 06:19:14 station01 kernel: usb 6-2: USB disconnect, address 8
Sep 1 06:19:56 station01 kernel: usb 6-2: new high speed USB device
using ehci_hcd and address 9
Sep 1 06:19:56 station01 kernel: usb 6-2: configuration #1 chosen from 1
choice
Sep 1 06:19:56 station01 kernel: scsi11 : SCSI emulation for USB Mass
Storage devices
Sep 1 06:20:01 station01 kernel: Vendor: Easy Model: Disk Rev: 1100
Sep 1 06:20:01 station01 kernel: Type: Direct-Access ANSI SCSI revision: 00
Sep 1 06:20:01 station01 kernel: SCSI device sdb: 3963904 512-byte hdwr
sectors (2030 MB)
Sep 1 06:20:01 station01 kernel: sdb: Write Protect is off
Sep 1 06:20:01 station01 kernel: SCSI device sdb: 3963904 512-byte hdwr
sectors (2030 MB)
Sep 1 06:20:01 station01 kernel: sdb: Write Protect is off
Sep 1 06:20:01 station01 kernel: sdb: sdb1
Sep 1 06:20:01 station01 kernel: sd 11:0:0:0: Attached scsi removable
disk sdb

lshal про флеш говорит следующее:
udi =
'/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518'
info.addons = {'hald-addon-storage'} (string list)
block.storage_device =
'/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518'
(string)
info.udi =
'/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518'
(string)
storage.partitioning_scheme = 'mbr' (string)
storage.removable.media_size = 2029518848 (0x78f80000) (uint64)
storage.requires_eject = false (bool)
storage.hotpluggable = true (bool)
info.capabilities = {'storage', 'block'} (string list)
info.category = 'storage' (string)
info.product = 'Disk' (string)
info.vendor = 'Easy' (string)
storage.size = 0 (0x0) (uint64)
storage.removable = true (bool)
storage.removable.media_available = true (bool)
storage.physical_device =
'/org/freedesktop/Hal/devices/usb_device_90c_1000_AA04012900007518_if0'
(string)
storage.lun = 0 (0x0) (int)
storage.firmware_version = '1100' (string)
storage.serial = 'Easy_Disk_AA04012900007518' (string)
storage.vendor = 'Easy' (string)
storage.model = 'Disk' (string)
storage.drive_type = 'disk' (string)
storage.automount_enabled_hint = true (bool)
storage.media_check_enabled = true (bool)
storage.no_partitions_hint = false (bool)
storage.bus = 'usb' (string)
block.is_volume = false (bool)
block.minor = 16 (0x10) (int)
block.major = 8 (0x8) (int)
block.device = '/dev/sdb' (string)
linux.hotplug_type = 3 (0x3) (int)
info.parent =
'/org/freedesktop/Hal/devices/usb_device_90c_1000_AA04012900007518_if0_scsi_host_scsi_device_lun0'
(string)
linux.sysfs_path_device = '/sys/block/sdb' (string)
linux.sysfs_path = '/sys/block/sdb' (string)

udi = '/org/freedesktop/Hal/devices/volume_uuid_4C2F_F9CD'
volume.unmount.valid_options = {'lazy'} (string list)
volume.mount.valid_options = {'ro', 'sync', 'dirsync', 'noatime',
'nodiratime', 'noexec', 'quiet', 'remount', 'exec', 'utf8',
'shortname=', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=',
'uid='} (string list)
org.freedesktop.Hal.Device.Volume.method_execpaths =
{'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject'}
(string list)
org.freedesktop.Hal.Device.Volume.method_argnames = {'mount_point fstype
extra_options', 'extra_options', 'extra_options'} (string list)
org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as',
'as'} (string list)
org.freedesktop.Hal.Device.Volume.method_names = {'Mount', 'Unmount',
'Eject'} (string list)
info.interfaces = {'org.freedesktop.Hal.Device.Volume'} (string list)
volume.ignore = false (bool)
info.udi = '/org/freedesktop/Hal/devices/volume_uuid_4C2F_F9CD' (string)
volume.partition.flags = {'boot'} (string list)
volume.partition.uuid = '' (string)
volume.partition.label = '' (string)
volume.partition.type = '0x0c' (string)
volume.partition.scheme = 'mbr' (string)
info.product = 'DSL' (string)
volume.partition.media_size = 2029518848 (0x78f80000) (uint64)
volume.partition.start = 32256 (0x7e00) (uint64)
volume.size = 2029486592 (0x78f78200) (uint64)
volume.num_blocks = 3963841 (0x3c7bc1) (int)
volume.block_size = 512 (0x200) (int)
volume.partition.number = 1 (0x1) (int)
info.capabilities = {'volume', 'block'} (string list)
info.category = 'volume' (string)
volume.is_partition = true (bool)
volume.is_disc = false (bool)
volume.linux.is_device_mapper = false (bool)
volume.is_mounted_read_only = false (bool)
volume.is_mounted = false (bool)
volume.mount_point = '' (string)
volume.label = 'DSL' (string)
volume.uuid = '4C2F-F9CD' (string)
volume.fsversion = 'FAT32' (string)
volume.fsusage = 'filesystem' (string)
volume.fstype = 'vfat' (string)
storage.model = '' (string)
block.storage_device =
'/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518'
(string)
block.is_volume = true (bool)
block.minor = 17 (0x11) (int)
block.major = 8 (0x8) (int)
block.device = '/dev/sdb1' (string)
linux.hotplug_type = 3 (0x3) (int)
info.parent =
'/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518'
(string)
linux.sysfs_path_device = '/sys/block/sdb/sdb1' (string)
linux.sysfs_path = '/sys/block/sdb/sdb1' (string)

Ясно видно что один из блоков про флеш вообще, а второй про раздел на
этой влеше. Выше я приводил пример про hal.block.is_volume который
отчегото не срабатывает.
В результате втыкания влешки действия exec и execun отрабатывают, но
флеш не монтируется. Но самое странное случилось когда я попытался
заглянуть в дэбаг ivman командой ?ivman -d?. Среди прочего команда вывела:
...
manager.c:977 (ivm_media_changed) Giving other programs a chance to mount...
manager.c:988 (ivm_media_changed) Attempting to mount device /dev/sdb1
manager.c:768 (ivm_run_command) Running: pmount '/dev/sdb1'
manager.c:1043 (ivm_media_changed) Device /dev/sdb1 is mounted at
/media/sdb1
IvmConfig/IvmConfigCommon.c:157 (ivm_device_is_mountable) UDI
/org/freedesktop/Hal/devices/volume_uuid_4C2F_F9CD is device /dev/sdb1
IvmConfig/IvmConfigCommon.c:312 (ivm_device_is_mountable) Won't try to
mount device /dev/sdb1, as it is already mounted
manager.c:825 (ivm_is_dvd) Checking for video DVD in device '/dev/sdb1'
mounted at '/media/sdb1'
manager.c:844 (ivm_is_dvd) /dev/sdb1 does not look like a video DVD
IvmConfig/IvmConfigCommon.c:157 (ivm_device_is_mountable) UDI
/org/freedesktop/Hal/devices/volume_uuid_4C2F_F9CD is device /dev/sdb1
IvmConfig/IvmConfigCommon.c:312 (ivm_device_is_mountable) Won't try to
mount device /dev/sdb1, as it is already mounted
IvmConfig/IvmConfigCommon.c:157 (ivm_device_is_mountable) UDI
/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518
is device /dev/sdb
IvmConfig/IvmConfigCommon.c:177 (ivm_device_is_mountable) Device
/dev/sdb can't be mounted because it is not a volume
manager.c:977 (ivm_media_changed) Giving other programs a chance to mount...
manager.c:1004 (ivm_media_changed)
/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518
wasn't mounted, by us or by others...
IvmConfig/IvmConfigCommon.c:157 (ivm_device_is_mountable) UDI
/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518
is device /dev/sdb
IvmConfig/IvmConfigCommon.c:177 (ivm_device_is_mountable) Device
/dev/sdb can't be mounted because it is not a volume
manager.c:768 (ivm_run_command) Running: echo in >> /tmp/temp_log
IvmConfig/IvmConfigCommon.c:157 (ivm_device_is_mountable) UDI
/org/freedesktop/Hal/devices/storage_serial_Easy_Disk_AA04012900007518
is device /dev/sdb
IvmConfig/IvmConfigCommon.c:177 (ivm_device_is_mountable) Device
/dev/sdb can't be mounted because it is not a volume
... и т.д.
При этом второй раз срабатывает команда exec и флешка таки монтируется в
/media/sdb1.
Как такую ситуацию правильно разруливать?


Reply to: