В прошлом вызванное Udisks (DeviceKit-дисками) замена для части функциональности которая использовала было обеспечено HAL deprecated now (слоем абстракции оборудования). Существенно абстракция для перечислять диск и запоминающие устройства и выполнять деятельности на их.
Udisks обеспечивает:
- Демон (udisks-демон) тот снабжает чёткие интерфейсы D-Bus которые можно использовать для того чтобы запросить и манипулировать диск и запоминающие устройства.
- Команд-линию инструмент (udisks), то можно использовать для того чтобы запросить и использовать демона.
Действия которые потребитель может выполнить использующ udisks могут быть ограниченны используя PolicyKit. Udisks полагается на стержене и udev где возможно но проводит голосование приборы которые не опубликовывают их собственные детали. Типично прибор DVD провожен голосование.
Некоторая история полезна для понимать где пригонки udisks в схему вещей на сегодняшних платформах Линукс. В днях старого времени (около 2003!), применения и настольные компьютеры не имели никакой путь получать знание случаев оборудования за исключением путем провождать голосование приборы. Молодой инженер, влюбленность Роберт, предложенная что стержень должен быть ответствен для снабубежать эту информацию userspace. Влюбленность spearheaded названное усилие, Проектом Utopia, более лучше интегрировать управление оборудования в настольный компьютер. Окончательное разрешение были технологиями сочетание из: случаи стерженя наслаивают для того чтобы опубликовать все от состояния прибора («ваш вентилятор обработчика терпит неудачу ") к случаям системы («была установлена новая ручка USB "), netlink (которое просто, низко надземное, быстрый канал связи от стерженя вне к потребител-космосу) и D-Bus. Если вы хотите больше данных по истории вопроса, то полуфинальная бумага, котор нужно прочитать на случаях слое стерженя и автобусной системе сообщения Потребител-космоса.
Contemporaneously Havoc Pennington начал непреодолимо взгляд управления оборудования на настольном компьютере Линукс который он обсудил в его работе оборудования бумажный делать как раз. В результате, Дэвид Zeuthen (в настоящее время на красном шлеме) начало проект HAL для того чтобы снабжать принципиальную схему Havoc. Над временем HAL эволюционировало от быть слоем абстракции оборудования к быть system-level демоном который связал совместно случаи, sysfs и udev hotplug стерженя, обеспечить применения с одиночным, всесторонним взглядом оборудования, доступным через унифицированный интерфейс. Первый отпуск HAL находился в 2003. Над N/A HAL было обнято всеми главными распределениями Линукс. В марте 2006, PolicyKit было разделено вне как независимый проект также поддерживаемый Дэвид Zeuthen.
К 2008, было востребовано что HAL имело «будет большим монолитовым unmaintainable беспорядком.» В результате, Дэвид Zeuthen решило произвести модульный слой абстракции оборудования вызванное DeviceKit для того чтобы заменить монолитовое зодчество HAL. Начальный отпуск DeviceKit находился в 2008 и включенных DeviceKit-дисках которое было демоном который обеспечил интерфейсы для того чтобы получить информацию и выполнить деятельности на запоминающих устройствах. DeviceKit было knoll смерти для HAL и, в результате, последний отпуск HAL было v0.5.15 в 2009. Интересно, DeviceKit само было очень недолговечным проектом потому что в декабре 2009 было объявлено что DeviceKit-диски были переименованы к udisks. Другие модули DeviceKit также были переименованы и закончено вверх под другие проекты и, в действительности, много функциональность HAL затем были слиты в udev. HAL теперь deprecated на всех главных распределениях Линукс и главным образом извлекалось от их codebases. Udisks все еще активно поддержано Дэвид Zeuthen при самая последняя версия (1.0.3) будучи выпусканным в июне 2011.
Понять udisks, вам также нужно иметь некоторое вникание D-Bus который взаимо- отростчатый механизм связи (IPC) для применений на одиночной машине для того чтобы поговорить к одину другого. Протокол D-Bus сердечника двухсторонний, асинхронный, бинарный протокол. Пока сразу применение к связи применения возможно, самое общее использование протокола через сервера шины сообщения D-Bus. Сервер соединен к каждому клиенту используя D-Bus, и направляет каждое сообщение от применения которое послало к своему предназначенному получателю. Каждое применение которое подвергает действию свои возможности на шине как обслуживание. Обслуживания на D-Bus подвергают действию вал предметов для того чтобы взаимодействовать с. Каждое обслуживание имеет путь корня; от корня приходят ветви, одно для каждого предмета обеспеченного тем обслуживанием. Каждый предмет на вале обслуживания addressable путем предмета. Пути предмета типично в форме имени обратн-домена, например org.freedesktop.UDisks.
Интерфейсы подряд между предметом и своими звонящими по телефону, больше как интерфейсы в C++, GObject, etc. интерфейс, как в большинств object-oriented программируя окружающих средах, определяют методы и свойства публично разоблачения предмета. В добавлении, интерфейсы D-Bus могут также содержать сигналы. Сигналы обеспечивают путь для предметов сообщить другие предметы о случаях что случаются к им: например, интерфейс двери мог снабдить сигнал другие возможно вызванные предметы когда он будет раскрыт, двер-раскрытыми. (Предмет управления здания мог слушать вне для двер-раскрытых сигналов, поэтому он знает когда специфическо двери раскрыт и закрын.)
Типично множественный active шин сообщения D-Bus в лбой момент. Эти можно разделить в 2 категории:
- Шина системы (канал системы AKA) которая платформ-широкая шина одиночного примера с ограничениями обеспеченностью на какие сообщения она будет признавать. Она использовала для system-wide сообщения и сообщения между настольным компьютером потребителя и операционной системой.
- Шина встречи (канал AKA приватный) создана для каждой встречи потребителя. Она позволяет применениям в пределах той встречи потребителя связывать друг с другом и с платформой.
Большой путь проверять обслуживание на D-Bus использовать инструмент доводки D-Bus D-Ног ` s Джон Palmieri графический. Здесь пример его контролируя шину системы на Fedora 15:
Шина системы на Fedora 15 расположена на unix: path=/var/run/dbus/system_bus_socket. Вы можете найти ваша шина встречи через вашу окружающую среду.
$ env | grep DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-58iznPau2Z,guid=32abe0fedb01bd5a92019a1e00000048
В этом особом случае вы вошли бы следующий шнур в D-Ноги: unix: abstract=/tmp/dbus-58iznPau2Z, guid=32abe0fedb01bd5a92019a1e00000048.
Заметьте справку к вызванной линии передачи команд /usr/libexec/udisks-daemon в вышеуказанном изображении. Этот демон обеспечивает обслуживание org.freedesktop.UDisks на шине сообщения системы. Вы должны никогда начать этого демона по мере того как он автоматически будет начат демоном шины сообщения D-Bus (dbus-демоном) когда применение вызывает в обслуживание org.freedesktop.UDisks.
$ ps -ef | grep udisk root 1585 1 0 Aug16 ? 00:00:02 /usr/libexec/udisks-daemon root 1587 1585 0 Aug16 ? 00:00:03 udisks-daemon: polling /dev/sdb /dev/sr0
Вы можете также удвоить для того чтобы щелкнуть дальше любой метод на обслуживаниях вы открываете для того чтобы призвать метод. Например, здесь выход метода EnumerateDevices обслуживания org.freedesktop.UDisks:
Полезная линия передачи команд инструмент dbus-монитор который показывает сигналы посланные мимо и сообщения посланные к шине D-Bus. Призовите его с:
dbus-monitor --system
для шины системы или
dbus-monitor --session
для вашей шины встречи.
Если вы хотите перечислить имеющиеся обслуживания от линии передачи команд, то вы можете сделать так используя dbus-посылаете. Здесь некоторый из выхода на Fedora 15:
# dbus-send --system --print-reply --reply-timeout=2000 --type=method_call --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
method return sender=org.freedesktop.DBus -> dest=:1.618 reply_serial=2
array [
string "org.freedesktop.DBus"
string "org.freedesktop.systemd1"
string "org.freedesktop.NetworkManager"
string "com.redhat.ifcfgrh1"
string "org.freedesktop.ModemManager"
string "org.freedesktop.RealtimeKit1"
string "org.freedesktop.Accounts"
string "org.freedesktop.PolicyKit1"
string "org.bluez"
string ":1.592"
string "org.freedesktop.PackageKit"
string "com.redhat.NewPrinterNotification"
string "com.redhat.PrinterDriversInstaller"
string ":1.615"
string "org.gnome.DisplayManager"
string ":1.616"
string "org.freedesktop.Avahi"
string ":1.618"
string "org.freedesktop.ConsoleKit"
string "org.freedesktop.UDisks"
string "org.freedesktop.UPower"
.....
]
Заметьте обслуживание org.freedesktop.UDisks.
Попробуйте контролировать вашу шину встречи пока вы вводите ручку USB. Довольно много информация outputted. Здесь начальная подача сообщения от времени ручка USB введена к как раз перед Nautilus призван:
signal sender=org.freedesktop.DBus -> dest=:1.156 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.156"
method call sender=:1.156 -> dest=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='method_call'"
method call sender=:1.156 -> dest=org.freedesktop.DBus serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='method_return'"
method call sender=:1.156 -> dest=org.freedesktop.DBus serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='error'"
signal sender=:1.36 -> dest=(null destination) serial=104 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=DriveChanged
string "org.gtk.Private.GduVolumeMonitor"
string "0xb56410"
struct {
string "0xb56410"
string "Kingston DataTraveler 2.0"
string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable drive"
boolean true
boolean true
boolean true
boolean true
boolean true
boolean false
boolean false
boolean true
uint32 1
array [
string "0xb66c40"
]
array [
dict entry(
string "unix-device"
string "/dev/sdc"
)
]
}
signal sender=:1.36 -> dest=(null destination) serial=105 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=DriveConnected
string "org.gtk.Private.GduVolumeMonitor"
string "0xb56410"
struct {
string "0xb56410"
string "Kingston DataTraveler 2.0"
string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable drive"
boolean true
boolean true
boolean true
boolean true
boolean true
boolean false
boolean false
boolean true
uint32 1
array [
string "0xb66c40"
]
array [
dict entry(
string "unix-device"
string "/dev/sdc"
)
]
}
signal sender=:1.36 -> dest=(null destination) serial=106 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=VolumeAdded
string "org.gtk.Private.GduVolumeMonitor"
string "0xb66c40"
struct {
string "0xb66c40"
string "1littlegeek"
string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable drive"
string ""
string ""
boolean true
boolean true
string "0xb56410"
string ""
array [
dict entry(
string "unix-device"
string "/dev/sdc1"
)
dict entry(
string "label"
string "1littlegeek"
)
dict entry(
string "uuid"
string "1711-0DC4"
)
]
}
method call sender=:1.34 -> dest=org.gtk.Private.GduVolumeMonitor serial=13 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=VolumeMount
string "0xb66c40"
string ""
uint32 0
string "2297:4"
method call sender=:1.42 -> dest=org.freedesktop.DBus serial=23 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/gnome/deja-dup/'"
method call sender=:1.42 -> dest=org.freedesktop.DBus serial=24 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/gnome/deja-dup/'"
signal sender=:1.36 -> dest=(null destination) serial=107 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=VolumeChanged
string "org.gtk.Private.GduVolumeMonitor"
string "0xb66c40"
struct {
string "0xb66c40"
string "1littlegeek"
string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable drive"
string ""
string ""
boolean true
boolean true
string "0xb56410"
string "0xb7a240"
array [
dict entry(
string "unix-device"
string "/dev/sdc1"
)
dict entry(
string "label"
string "1littlegeek"
)
dict entry(
string "uuid"
string "1711-0DC4"
)
]
}
signal sender=:1.36 -> dest=(null destination) serial=108 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=MountAdded
string "org.gtk.Private.GduVolumeMonitor"
string "0xb7a240"
struct {
string "0xb7a240"
string "1littlegeek"
string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable drive"
string ""
string "file:///media/1littlegeek"
boolean true
string "0xb66c40"
array [
]
}
signal sender=:1.29 -> dest=(null destination) serial=234 path=/org/gtk/gio/DesktopAppInfo; interface=org.gtk.gio.DesktopAppInfo; member=Launched
array of bytes [
2f 75 73 72 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 2f
6e 61 75 74 69 6c 75 73 2e 64 65 73 6b 74 6f 70 00
]
string ":0"
int64 28949
array [
string "file:///media/1littlegeek"
]
array [
dict entry(
string "startup-id"
variant string "gnome-settings-daemon-2297-ultra.fpmurphy.xcom-nautilus-3_TIME0"
)
dict entry(
string "origin-prgname"
variant array of bytes [
67 6e 6f 6d 65 2d 73 65 74 74 69 6e 67 73 2d 64 61 65 6d 6f 6e
00
]
)
dict entry(
string "origin-pid"
variant int64 2297
)
]
Это на настольном компьютере GNOME Fedora 15. Заметьте что никакая справка к udisks везде. Вместо работа сделана членом MountAdded org.gtk. Private.GduVolumeMonitor которое часть GVFS (системы файлов GNOME фактически). KDE, XFCE, LXDE и другие настольные компьютеры все обеспечивают их собственные механизмы и обходят udisks в большой или меньше объем. То не значит что вы не можете использовать udisks; оно как раз значит что вам отдавали себе отчет других механизмов. Udisks вероятно само полезно в окружающих средах которые не имеют настольный компьютер.
Главным образом линия передачи команд общее назначение для взаимодействовать с udisks-демоном udisks. Она имеет большое количество вариантов.
$ udisks --help Usage: udisks [OPTION...] udisks commandline tool Help Options: -h, --help Show help options Application Options: --enumerate Enumerate objects paths for devices --enumerate-device-files Enumerate device files for devices --dump Dump all information about all devices --monitor Monitor activity from the disk daemon --monitor-detail Monitor with detail --show-info Show information about a device file --inhibit-polling Inhibit polling --inhibit-all-polling Inhibit all polling --poll-for-media Poll for media --set-spindown Set spindown timeout for drive --set-spindown-all Set spindown timeout for all drives --spindown-timeout Spindown timeout in seconds --inhibit Inhibit the daemon --mount Mount the given device --mount-fstype Specify file system type --mount-options Mount options separated by comma --unmount Unmount the given device --unmount-options Unmount options separated by comma --detach Detach the given device --detach-options Detach options separated by comma --eject Eject the given device --eject-options Eject options separated by comma --ata-smart-refresh Refresh ATA SMART data --ata-smart-wakeup Wake up the disk if it is not awake --ata-smart-simulate Inject libatasmart BLOB for testing
Используйте вариант emunerate для того чтобы перечислить приборы что демон контролирует:
# udisks --enumerate /org/freedesktop/UDisks/devices/dm_2d0 /org/freedesktop/UDisks/devices/dm_2d1 /org/freedesktop/UDisks/devices/dm_2d2 /org/freedesktop/UDisks/devices/dm_2d3 /org/freedesktop/UDisks/devices/sdb /org/freedesktop/UDisks/devices/sdb1 /org/freedesktop/UDisks/devices/sr0 /org/freedesktop/UDisks/devices/sda /org/freedesktop/UDisks/devices/sda1 /org/freedesktop/UDisks/devices/sda2 /org/freedesktop/UDisks/devices/sda3
Используйте вариант монитора для того чтобы наблюдать деятельность в реальное временя.
# udisks --monitor Monitoring activity from the disks daemon. Press Ctrl+C to cancel. added: /org/freedesktop/UDisks/devices/sdc added: /org/freedesktop/UDisks/devices/sdc1 job-changed: /org/freedesktop/UDisks/devices/sdc1 changed: /org/freedesktop/UDisks/devices/sdc1 job-changed: /org/freedesktop/UDisks/devices/sdc1
Здесь что показано когда ручка USB введена:
added: /org/freedesktop/UDisks/devices/sdc
Showing information for /org/freedesktop/UDisks/devices/sdc
native-path: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host13/target13:0:0/13:0:0:0/block/sdc
device: 8:32
device-file: /dev/sdc
presentation: /dev/sdc
by-id: /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_5B7A1000ABCA-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Fri 12 Aug 2011 09:57:59 PM EDT
system internal: 0
removable: 1
has media: 1 (detected at Fri 12 Aug 2011 09:57:59 PM EDT)
detects change: 1
detection by polling: 1
detection inhibitable: 1
detection inhibited: 0
is read only: 0
is mounted: 0
mount paths:
mounted by uid: 0
presentation hide: 0
presentation nopolicy: 0
presentation name:
presentation icon:
size: 4127195136
block size: 512
job underway: no
usage:
type:
version:
uuid:
label:
partition table:
scheme: mbr
count: 1
drive:
vendor: Kingston
model: DataTraveler 2.0
revision: PMAP
serial: 5B7A1000ABCA
WWN:
detachable: 1
can spindown: 0
rotational media: Yes, unknown rate
write-cache: unknown
ejectable: 0
adapter: Unknown
ports:
similar devices:
media:
compat:
interface: usb
if speed: 480000000 bits/s
ATA SMART: not available
added: /org/freedesktop/UDisks/devices/sdc1
Showing information for /org/freedesktop/UDisks/devices/sdc1
native-path: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host13/target13:0:0/13:0:0:0/block/sdc/sdc1
device: 8:33
device-file: /dev/sdc1
presentation: /dev/sdc1
by-id: /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_5B7A1000ABCA-0:0-part1
by-id: /dev/disk/by-uuid/3520-FE20
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
detected at: Fri 12 Aug 2011 09:57:59 PM EDT
system internal: 0
removable: 0
has media: 1 (detected at Fri 12 Aug 2011 09:57:59 PM EDT)
detects change: 0
detection by polling: 0
detection inhibitable: 0
detection inhibited: 0
is read only: 0
is mounted: 0
mount paths:
mounted by uid: 0
presentation hide: 0
presentation nopolicy: 0
presentation name:
presentation icon:
size: 4124180480
block size: 512
job underway: no
usage: filesystem
type: vfat
version: FAT32
uuid: 3520-FE20
label: 1LITTLEGEEK
partition:
part of: /org/freedesktop/UDisks/devices/sdc
scheme: mbr
number: 1
type: 0x0c
flags: boot
offset: 31744
alignment offset: 0
size: 4124180480
label:
uuid:
job-changed: /org/freedesktop/UDisks/devices/sdc1
job underway: FilesystemMount, initiated by uid 502
changed: /org/freedesktop/UDisks/devices/sdc1
Showing information for /org/freedesktop/UDisks/devices/sdc1
native-path: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host13/target13:0:0/13:0:0:0/block/sdc/sdc1
device: 8:33
device-file: /dev/sdc1
presentation: /dev/sdc1
by-id: /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_5B7A1000ABCA-0:0-part1
by-id: /dev/disk/by-uuid/3520-FE20
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
detected at: Fri 12 Aug 2011 09:57:59 PM EDT
system internal: 0
removable: 0
has media: 1 (detected at Fri 12 Aug 2011 09:57:59 PM EDT)
detects change: 0
detection by polling: 0
detection inhibitable: 0
detection inhibited: 0
is read only: 0
is mounted: 1
mount paths: /media/1LITTLEGEEK
mounted by uid: 502
presentation hide: 0
presentation nopolicy: 0
presentation name:
presentation icon:
size: 4124180480
block size: 512
job underway: no
usage: filesystem
type: vfat
version: FAT32
uuid: 3520-FE20
label: 1LITTLEGEEK
partition:
part of: /org/freedesktop/UDisks/devices/sdc
scheme: mbr
number: 1
type: 0x0c
flags: boot
offset: 31744
alignment offset: 0
size: 4124180480
label:
uuid:
job-changed: /org/freedesktop/UDisks/devices/sdc1
job underway: no
Вспомните что udisks абстракция для, между прочим, выполнять деятельности на приборах блока. Так вы можете сделать вещи как восстановляете информацию о приборе или держателе или unmount прибор.
Используйте вариант показывать-info для того чтобы восстановить информацию о приборе.
# udisks --show-info /dev/sr0
Showing information for /org/freedesktop/UDisks/devices/sr0
native-path: /sys/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sr0
device: 11:0
device-file: /dev/sr0
presentation: /dev/sr0
by-id: /dev/disk/by-id/ata-HP_DVD_Writer_1070d
by-path: /dev/disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0
detected at: Fri 19 Aug 2011 12:00:11 PM EDT
system internal: 0
removable: 1
has media: 0
detects change: 1
detection by polling: 1
detection inhibitable: 1
detection inhibited: 0
is read only: 0
is mounted: 0
mount paths:
mounted by uid: 0
presentation hide: 0
presentation nopolicy: 0
presentation name:
presentation icon:
size: 0
block size: 0
job underway: no
usage:
type:
version:
uuid:
label:
drive:
vendor: HP
model: HP DVD Writer 1070d
revision: LH23
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/host1
similar devices:
media:
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
В наше время кажется, что будет предпочитаемый путь установки или unmounting систем файлов без доступа корня udisks. Установить прибор:
# udisks --mount /dev/sdc1 Mounted /org/freedesktop/UDisks/devices/sdc1 at /media/1littlegeek
Вы можете передать варианты держателя к udisks. Например:
# udisks --mount /dev/sdc1 --mount-fstype=vfat
К unmount прибор:
# udisks --unmount /dev/sdc1
Кстати, udisks общего назначения не обеспечивает никакие варианты для того чтобы увеличить verbosity или позволить отлаживайте выход, и не напишите что-нибыдь к syslog или любому другому журналу.
Вы можете отдаленно управлять дисками используя udisks, udisks-tcp-мост и ssh. Это как программа обслуживания дисков GNOME (Palimpsest) могл управлять дисками на дистанционных серверах. Например здесь screenshot куда Palimpsest отдаленно достигает диска на системе адрес IPv4 которой 192.168.0.114.
Все которое необходимо для этого для работы что дистанционная система имеет рабочих сервера и udisks-tcp-моста ssh установлено. Если вы клиент Fedora 15, то вам также нужно установить пакет openssh-askpass так, что Palimpsest сможет попросить вы пароль если необходимо. В противном случае вы увидите «ssh_askpass: exec (/usr/libexec/openssh/ssh-askpass): Отсутствие такого сообщения архива или директории».
Здесь как Palimpsest внутренне устанавливает - вверх по соединению:
- Клиент устанавливает - вверх по серверу D-Bus на порте LOCAL_PORT (в ряде 9000 до 10000)
- Клиент создает большой произвольно-пронумерованный СЕКРЕТ
- Клиент создает соединение ssh к серверу спрашивая порт-переднее к клиенту: LOCAL_PORT используя - r 0: localhost: LOCAL_PORT
- Клиент parses REMOTE_PORT и запускает udisks-tcp-мост - REMOTE p на сервере и после этого пишет СЕКРЕТ и после этого newline
- Сервер (через мост) соединяется к клиенту: LOCAL_PORT
- Сервер призывает метод org.freedesktop.UDisks.Client.Authorize с СЕКРЕТОМ
- Клиент проверяет СЕКРЕТ. Если неправильно сервер disconnected, то в противном случае собрание установлено.
Очень близкие отношения между udisks и udev. Нормально, на самомоднейших настольных компьютерах когда новые введенные ручка USB или DVD, оно автоматически установлены и менеджере архива после этого показывает из-за правила в базе данных udev. Предположите, вместо, что вы хотите что не установленные ручка USB или DVD, котор нужно проигнорировать и. Как вы установили бы вашу систему для того чтобы сделать это?
Поиск интернета возвратит много страниц соединений которые подразумевают показать вам как сделать это. Догадка что? 99.99% из описанных методов неправильн насколько самомоднейшие версии Линукс обеспокоенный. Большинство разрешений просто не работало потому что документация ссылается к устарелый версиям udev, HAL (слоя абстракции оборудования), DBus или разрешений основанных на PolicyKit или gsettings
Просто метод который я находил создать низкий пронумерованный архив (я вызываю мои 10-local.rules) в /etc/udev/rules.d содержа следующее правило:
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*|sr", ENV{UDISKS_PRESENTATION_HIDE}="1"
Закрутка на вышеуказанном правиле применилась бы к a киоск-как LiveCD содержа перегородку упорних данных для того чтобы ограничить установку к /dev/sda *:
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[b-e]*|sr", ENV{UDISKS_PRESENTATION_HIDE}="1"
Свойства прибора в базе данных udev которые влияют на деятельности udisks включают следующее:
- UDISKS_PRESENTATION_HIDE: Если комплект до 1, это намек к програмному обеспечению, то уровня представления что прибор не должен быть показан к потребителю.
- UDISKS_PRESENTATION_NOPOLICY: Если комплект до 1, это намек к програмному обеспечению, то уровня представления что прибор не должен быть automounted или автоматическ-собран.
- UDISKS_DISABLE_POLLING: Если комплект до 1, выводит полинг из строя приводов для изменений средств, то для приборов которые не посылают вне сами по себе извещений средств.
- UDISKS_PRESENTATION_NAME: Имя, котор нужно использовать для прибора представляя его к потребителю.
- UDISKS_PRESENTATION_ICON_NAME: Икона, котор нужно использовать представляя прибор к потребителю.
Прочитайте udisks (7) manpage для полного списка и больше деталей.
Если вы хотите больше информации о udisks, то вы заканчивали связь freedesktop.org. Кстати, там также ( версия 1.90.0) спецификация udisks2 которая использует имя шины org.freedesktop.UDisks2 которого мы бедный человек обсуженный здесь как оно работа в процессе.






























Я не могу понять вещь здесь .....
Wally, то поистине несчастливо!
Hey, я довольно заинтересован в udisks-tcp-мосте поэтому я могу использовать gnome-диск-общее назначение для того чтобы контролировать моего хозяина и гостей VM. Однако, я использую Ubuntu на моих сервере и Fedora 15 как клиент.
Я сделал поиск apt-получать и вижу что udisks установлено и udisks-tcp-мост команды имеющийся. Я вижу от страницы человека что это обслуживание automagically начато когда ssh'es клиента к серверу. Это соединение ssh случилось бы прийти от gnome-диск-общего назначения?
Спасибо, и хорошая статья!
Джо
@fpmurphy вы признаваете запросы (оплащенные или бесплатные) для выдвижений раковины Gnome? Я был бы заинтересован в оплачивать что я могу для работы на выдвижении раковины Gnome которое делает это:
http://www.webupd8.org/2011/02/unity-mockup-menu-integrated-in-window.html
Существенно, меню и название app сконденсированы в такую же горизонтальную плоскость. Возможно меню исчезли бы (подобно к меню всеединства Ubuntu глобальный) когда moused сверх. Но возможно не.
Я действительно люблю раковину Gnome но фишки пары что я влюбленность *really* имел. И то одно из их.
Другое выдвижение я дорог полюбил бы иметь имеет иконы на окн-thumbnails обзора, как выставки этого быстрые модель-макета:
https://lh3.googleusercontent.com/-odJfPcBR5fg/TnwqLCLq2mI/AAAAAAAAAno/qQvlwwK1ZM0/s640/gnome-panel-icon-concept.png
Так, снова, вы признаваете запросы для выдвижений, оплащенные или бесплатные? Также, я желаю сказать благодарю вас для организовать выдвижения. Я использую несколько из их в Fedora, и люблю их.