Переведите

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिन्दी अनुवाद करने के लिए/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian
Изображение XSLT 2.0 и справки программника XPath 2.0 (программник к программнику)
Изображение принципиальных схем операционной системы
Изображение разработки приложений радиотелеграфа Android
Изображение развития стерженя Линукс (3-ий вариант)

Введение к Udisks

В прошлом вызванное 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:

d-ноги screenshot

Шина системы на 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:

d-ноги screenshot

Полезная линия передачи команд инструмент 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.

d-ноги screenshot

Все которое необходимо для этого для работы что дистанционная система имеет рабочих сервера и 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 которого мы бедный человек обсуженный здесь как оно работа в процессе.

4 комментария к введению к Udisks

  • Я не могу понять вещь здесь .....

  • Joeman1

    Hey, я довольно заинтересован в udisks-tcp-мосте поэтому я могу использовать gnome-диск-общее назначение для того чтобы контролировать моего хозяина и гостей VM. Однако, я использую Ubuntu на моих сервере и Fedora 15 как клиент.

    Я сделал поиск apt-получать и вижу что udisks установлено и udisks-tcp-мост команды имеющийся. Я вижу от страницы человека что это обслуживание automagically начато когда ssh'es клиента к серверу. Это соединение ssh случилось бы прийти от gnome-диск-общего назначения?

    Спасибо, и хорошая статья!
    Джо

  • Gavin Engel

    @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, и люблю их.

Выйдите ответ