Название: Определение типа девайса Отправлено: cresta от Март 01, 2009, 21:28 Можно ли определить тип девайса под линуксом? Fixed, removable, cd-rom e.t.c....
Например для /dev/sda1 (или по его точке монтирования /mnt/winc) Название: Re: Определение типа девайса Отправлено: pastor от Март 01, 2009, 21:45 Смотри в сторону HAL: http://freedesktop.org/wiki/Software/hal
Название: Re: Определение типа девайса Отправлено: cresta от Март 01, 2009, 23:28 По-моему, это не совсем то.
Для использования libhal и предлагаемых им инструментов, нужно знать о девайсе больше, чем у меня есть. Например, вот вывод от hal-device информации о винчестере: Код: 90: udi = '/org/freedesktop/Hal/devices/pci_8086_2922_scsi_host_0_scsi_device_lun0' Здесь выводится информация о железке как таковой, без учета разделов /dev/xxx которые на ней присутствуют. Если использовать hal-find-by-property, то опять же из полученного результата никак не получить список разделов: Цитировать [cr@localhost warnspace]$ hal-find-by-property --key storage.drive_type --string disk /org/freedesktop/Hal/devices/storage_serial_USBest_USB2FlashStorage_00000000000004_0_0 /org/freedesktop/Hal/devices/storage_serial_SATA_ST3120026AS_3JT2HCKF /org/freedesktop/Hal/devices/storage_serial_SATA_ST3250410AS_6RYESR2P Более того, даже не определить, какой это disk: fixed или removable Название: Re: Определение типа девайса Отправлено: Alex Custov от Март 02, 2009, 04:53 По-моему, это не совсем то. Нет, это всё и даже больше :) Для использования libhal и предлагаемых им инструментов, нужно знать о девайсе больше, чем у меня есть. Например, вот вывод от hal-device информации о винчестере: Код: 90: udi = '/org/freedesktop/Hal/devices/pci_8086_2922_scsi_host_0_scsi_device_lun0' Здесь выводится информация о железке как таковой, без учета разделов /dev/xxx которые на ней присутствуют. libhal_drive_find_all_volumes, http://geexbox.org/~ben/list_shares.c Более того, даже не определить, какой это disk: fixed или removable свойство storage.removable можно получить с помощью обычного libhal, или смотреть в сторону libhal-storage, там куча всего. Название: Re: Определение типа девайса Отправлено: cresta от Март 02, 2009, 08:32 libhal-storage я таки проглядел, каюсь...
пойду разбираться. Название: Re: Определение типа девайса Отправлено: kuzulis от Март 02, 2009, 09:00 А вот тут смотрели ? Может поможет!
http://www.linux.org.ru/wiki/en/HAL (http://www.linux.org.ru/wiki/en/HAL) Название: Re: Определение типа девайса Отправлено: cresta от Март 02, 2009, 21:24 Спасибо всем!
Порылся по вашим ссылкам, почитал, сделал так: Нахожу устройства, сидящие на usb: Код: [cr@localhost hal-0.5.12rc1]$ hal-find-by-property --key storage.bus --string usb Затем для каждой точки монтирования нахожу uuid: Код: [cr@localhost hal-0.5.12rc1]$ hal-find-by-property --key volume.mount_point --string /media/disk Каждый из найденных uuid передаю дальше в dbus-send: Код: [cr@localhost hal-0.5.12rc1]$ dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/volume_uuid_CC21_0F55 org.freedesktop.Hal.Device.GetAllProperties Получаю вывод от dbus-send и ищу в нем имена usb-девайсов, полученных на первом шаге: Код: method return sender=:1.1 -> dest=:1.101 reply_serial=2 Нашёл - значит removable, если нет, проверяю поле volume.is_disc. которое равно true в случае cd-rom'a и false в случае винчестера. Такой вот геморройный алгоритм. Но и этот алгоритм на некоторых разделах даёт сбой: некоторые uuid dbus-send категорически отказывается принимать, возвещая об ошибке и ссылаясь на некие баги в прогах, использующих D-Bus: process 11609: arguments to dbus_message_new_method_call() were incorrect, assertion "_dbus_check_is_valid_path (path)" failed in file dbus-message.c line 1074. This is normally a bug in some application using the D-Bus library. Такие вот пирожки :( Что делать? libhal, которая советовалась выше, использовать пока не решился. Фиг его знает, как она состыкуется с моей системой. У меня установлена libhal1. Версия: 0.5.11-0.rc2.1mdv2008.1. Тот list_shares.c, который советовался выше, ссылается на <libhal.h> и <libhal-storage.h>, которых у меня нет. Ставить devel-пакет hal-0.5.12rc1? Название: Re: Определение типа девайса Отправлено: BRE от Март 02, 2009, 21:41 Сейчас посмотрел это:
Цитировать libhal_drive_find_all_volumes, http://geexbox.org/~ben/list_shares.c Почему ты от libhal-storage отказался, вроде все что тебе нужно делается в примере? Название: Re: Определение типа девайса Отправлено: cresta от Март 02, 2009, 21:44 Всё-таки стоит попробовать?
Просто был неудачный опыт замены системных либ на более новую версию, поэтому как-то стрёмно :( Название: Re: Определение типа девайса Отправлено: BRE от Март 02, 2009, 21:47 Всё-таки стоит попробовать? Ты переживаешь, что интерфейс libhal поменяют или что?Просто был неудачный опыт замены системных либ на более новую версию, поэтому как-то стрёмно :( Название: Re: Определение типа девайса Отправлено: cresta от Март 02, 2009, 22:10 Кроме интерфейса libhal через инклюды тянется ещё и весь dbus
Тупо использовать libhal.h и libhal-storage.h на имеющихся libhal.so и libhal-storage.so не катит: у меня нет кучи фалов, подключаемых через include <dbus/dbus.h>. Уже попробовал. Также пробовал компильнуть hal-0.5.12rc1 - тоже отсутствуют многие хидеры (usb.h, pci.h, etc) и ещё под конец конфигурирования error: PolicyKit not explicitly disabled and no PolicyKit found Название: Re: Определение типа девайса Отправлено: BRE от Март 02, 2009, 22:13 Кроме интерфейса libhal через инклюды тянется ещё и весь dbus Так может стоит доустановить необходимые devel пакеты?Тупо использовать libhal.h и libhal-storage.h на имеющихся libhal.so и libhal-storage.so не катит: у меня нет кучи фалов, подключаемых через include <dbus/dbus.h>. Уже попробовал. Также пробовал компильнуть hal-0.5.12rc1 - тоже отсутствуют многие хидеры (usb.h, pci.h, etc) и ещё под конец конфигурирования error: PolicyKit not explicitly disabled and no PolicyKit found Название: Re: Определение типа девайса Отправлено: Alex Custov от Март 02, 2009, 23:18 Неужели в Мандриве нельзя обновиться посредством пакетного менеджера? Не верю :)
Название: Re: Определение типа девайса Отправлено: cresta от Март 04, 2009, 09:51 К сожалению, не могу найти devel-пакетов для Mandriva 2008.1 :(
А имеющиеся у меня хидеры версии 0.5.12 к установленным в системе либам 0.5.11 не подходят. Видимо придётся пока отложить это дело Спасибо всем. |