Работа с железом и драйверами

Взгляд изнутри

Модератор: Модераторы разделов

Ответить
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Работа с железом и драйверами

Сообщение sunny1983 »

Постепенно перехожу из класса начинающих пользователей в класс продвинутых. Думаю пора бы уже начать осваивать работу с модулями ядра. Итак, что знаю по этой теме, что в Linux любой драйвер представляет собой модуль ядра, который может быть либо частью монолитного ядра /boot/vmlinuz-<версия>, либо быть в виде отдельного модуля - файл *.ko в каталоге /lib/modules, в зависимости от того как пользователь скомпилировал ядро.

Вопрос 1: Обзор железа:
Я знаю, есть команда lspci, которая выдаёт список устройств, подключённых к шине pci. С ключём -v эта команда выдаст подробное описание, включая имя поставщика, имя устройства и имя используемого драйвера. С ключём -t показывает древовидную структуру. Но в этом дереве показывается только шина pci, а ведь есть ещё usb, модемы, принтеры, можно ли получить полное дерево, картинку аналогичную "Диспетчеру устройств" в WINDOWS?

Вопрос 2: Модули ядра:
В книгах написано,что модули ядра в /lib/modules можно динамически загружать в память командой insmod. В современном дистрибутиве вместо insmod используется modprobe. Для автомвтической загрузке модулей при загрузке системы используется файл /etc/modprobe.conf. Так в книге Эви Немета "Руководство администратора Linux" написано, что для для сетевых плат реальный идентификатор устройства и ссылка на соответствующий драйвер хранятся в файле /etc/modprobe.conf в строке alias. Я в настоящий момент работаю в дистрибутиве ALT Linux, вместо файла /etc/modprobe.conf у меня каталог /etc/modprobe.d в нём есть следующие файлы:

Код: Выделить всё

-rw-r--r-- 1 root root 2967 Май 18  2009 aliases
-rw-r--r-- 1 root root  458 Сен 11  2009 alsa-modindex
-rw-r--r-- 1 root root   88 Май 18  2009 arch
-rw-r--r-- 1 root root 1178 Май 18  2009 blacklist
-rw-r--r-- 1 root root   63 Дек 16  2009 blacklist-cups
-rw-r--r-- 1 root root  247 Май 18  2009 blacklist-edac
-rw-r--r-- 1 root root  834 Май 18  2009 blacklist-framebuffer
-rw-r--r-- 1 root root  261 Май 18  2009 blacklist-hwmon
-rw-r--r-- 1 root root  657 Май 18  2009 blacklist-net
-rw-r--r-- 1 root root  857 Май 18  2009 blacklist-watchdog
-rw-r--r-- 1 root root  390 Май 18  2009 install
-rw-r--r-- 1 root root  276 Май 18  2009 isapnp
-rw-r--r-- 1 root root  173 Май 18  2009 options

Строки содержащей eth0 ни в одном из этих файлов не обнаружено. Как тогда мне, например, переименовать eth1 в eth0?

Вопрос 3: Добавление поддержки устройств:
Есть конечно и универсальное решение этой проблемы - использование последних версий поддерживаемых дистрибутивов, где "всё включено". Но если дистрибутив менять не хочется, а в имеющимся поддержка конкретного устройства запаздывает, как добавить драйвер вручную. Конкретные примеры: Первый - в Knoppix на нетбуке ASUS EeePC 900HA не работает сеть. Есть готовое решение для дистрибутивов основанных на Debian, с сайта ASUS можно скачать deb-пакет, содержащий уже готовое ядро и заменить им существующее. Я сделал так, но eth0 у меня от этого не появился. Второй - у меня видео, встроенное в материнскую плату на чипсете nForce. В xorg.conf прописано использование драйвера "nv". Недавно прочитал, что с этим драйвером не работает видеоускорение и что нужно ставить проприетарный драйвер. Как это сделать? Но кроме встроенного видео у меня ещё есть встроенный SATA/RAID-контроллер и многое другое. Как определить использует ли моё железо свои полные возможности и правильные у меня драйвера? Третий - как перекомпилировать ядро так, чтобы в нём были только драйвера от моего железа, то есть, например, поддержка только чипсетов nVidia, а всякие Intel, Via, ATI выбросить, чтобы ядро меньше весило?
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Работа с железом и драйверами

Сообщение Lan4 »

Ответ 1. Кроме lspci есть еще lsusb, lscpu. Для дерева - lshw

Ответ 2. Правила для сетевых карт хранятся в файле /etc/udev/rules.d/70-persistent-net.rules (или аналогичный). Правкой данного файла возможно переименовывание интерфейсов.

Ответ 3.
Третий - как перекомпилировать ядро так, чтобы в нём были только драйвера от моего железа, то есть, например, поддержка только чипсетов nVidia, а всякие Intel, Via, ATI выбросить, чтобы ядро меньше весило?

Код: Выделить всё

make menuconfig

расставить флажки где надо.
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Работа с железом и драйверами

Сообщение Stauffenberg »

1. Да, еще есть hwinfo и ФС /proc
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Lan4 писал(а):
16.01.2011 18:44
Правила для сетевых карт хранятся в файле /etc/udev/rules.d/70-persistent-net.rules (или аналогичный).

То есть, чтобы устройство работало. необходимо:
1) Чтобы в ядре имелся правильный драйвер для него.
2) Драйвер был включён/прописан в modprobe
3) Драйвер был подхвачен демоном udev
Я правильно понял?
А как мне разобраться с конфигурациями modprobe и udev?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Работа с железом и драйверами

Сообщение Stauffenberg »

sunny1983 писал(а):
17.01.2011 14:53
Lan4 писал(а):
16.01.2011 18:44
Правила для сетевых карт хранятся в файле /etc/udev/rules.d/70-persistent-net.rules (или аналогичный).

То есть, чтобы устройство работало. необходимо:
1) Чтобы в ядре имелся правильный драйвер для него.
2) Драйвер был включён/прописан в modprobe
3) Драйвер был подхвачен демоном udev
Я правильно понял?

Не совсем. Если в ядре есть драйвер для устройства, то modprobe делать не надо. Она (modprobe) подружает модуль в ядро.

sunny1983 писал(а):
17.01.2011 14:53
А как мне разобраться с конфигурациями modprobe и udev?

Да начала загляние в man, потом спросите google, т.е. все как и обычно.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Stauffenberg писал(а):
17.01.2011 20:30
sunny1983 писал(а):
17.01.2011 14:53
А как мне разобраться с конфигурациями modprobe и udev?

Да начала загляние в man, потом спросите google, т.е. все как и обычно.

Спустя три месяца повторно переформулирую вопрос, потому как сейчас стало реально надо. Может форулировка "разобраться с конфигурацией udev" и неконкретно звучит, но как ещё может спросить человек, смутно представляющий что такое udev и о том, что он может и что не может. Вобщем, задача - пересоздать файлы устройств в /dev. Гугль говорит, что для этого используется /dev/MAKEDEV. Также гугль говорит, что в современных дистрибах /dev/MAKEDEV не нужен и всё делается через udev. В меня Debian Squeeze. С Lenny до Squeeze похоже обновился криво (файлы устройств в /dev пересоздались некорректно) и теперь система вроде работает нормально, но при загрузке идёт куча ошибок ядра и при этом упомянается /dev/sr0.
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Работа с железом и драйверами

Сообщение vr13 »

udevd - это демон в пользовательском пространстве, который отвечает за hotplug: получает события ядра об изменении конфигурации hardware и выполняет некоторый набор действий, описываемый правилами udev. результатом работы правил может быть загрузка определенного драйвера (модуля ядра), создание node-файла в /dev и тп. в общем случае - что угодно, имеющее смысл в linux

правила - текстовые файлы, обычно - в директориях /lib/udev/rules.d и /etc/udev/rules.d. при получении события ядра об изменении конфигурации, все файлы правил интерпретируются демоном в алфавитном порядке. например:

Код: Выделить всё

$ ls /etc/udev/rules.d/
10-virtualbox.rules          70-persistent-cd.rules   99-9cd.rules
60-fprint-autosuspend.rules  70-persistent-net.rules  99-fuse.rules
60-pcmcia.rules              91-usb_modeswitch.rules  99-zte.rules

понятно, что первым в этой директории выполнится 10-virtualbox.rules, а последним - 99-zte.rules

правила легко читаемы, например:

Код: Выделить всё

SUBSYSTEM!="usb", GOTO="serial_end"
ACTION=="add", \
  ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="gsm%n" \
  RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x31" \
  GOTO="serial_end"
...
LABEL="serial_end"

если событие не относится к подсистеме usb, идем в конец файла (и переходим к следующему, если таковой есть)
если событие - добавлено новое usb-устройство и это устройство 19d2:0031, то создается символическая ссылка /dev/gsmN и выполняется загрузка драйвера с нужными параметрами (modprobe usbserial ...)

правила составляются гуманоидным образом и для отладки, а также для понимания что происходит в ядре - в смысле событий, обрабатываемых udev, используется команда udevadm, которой можно, например,
* отслеживать события ядра:

Код: Выделить всё

# udevadm monitor --kernel
monitor will print the received events for:
KERNEL - the kernel uevent

KERNEL[1304503143.548023] add      /devices/pci0000:00/0000:00:1d.7/usb5/5-5 (usb)
...

* посмотреть атрибуты hotplugged-устройства:

Код: Выделить всё

# udevadm info --path=/devices/pci0000:00/0000:00:1d.7/usb5/5-5 --query=property
UDEV_LOG=3
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb5/5-5
MAJOR=189
MINOR=562
DEVNAME=/dev/bus/usb/005/051
DEVTYPE=usb_device
DRIVER=usb
DEVICE=/proc/bus/usb/005/051
PRODUCT=19d2/31/0
TYPE=0/0/0
BUSNUM=005
DEVNUM=051
SUBSYSTEM=usb
ID_VENDOR=ZTE_Incorporated
ID_VENDOR_ENC=ZTE\x2cIncorporated
ID_VENDOR_ID=19d2
ID_MODEL=ZTE_WCDMA_Technologies_MSM
ID_MODEL_ENC=ZTE\x20WCDMA\x20Technologies\x20MSM
ID_MODEL_ID=0031
ID_REVISION=0000
ID_SERIAL=ZTE_Incorporated_ZTE_WCDMA_Technologies_MSM_P673A3GLOD010000
ID_SERIAL_SHORT=P673A3GLOD010000
ID_BUS=usb
ID_USB_INTERFACES=:ffffff:080650:
DEVLINKS=/dev/char/189:562

проще говоря, при помощи udev вся информация об устройстве сохраняется в доступном для пользователя месте (/dev или там, где указывается в конфигурационном файле демона - обычно /etc/udev/udev.conf) для ее последующего использования и/или анализа

в текущих версиях udev идея hotplug обобщается: при старте системы все io устройства считаются hotplug и правила udev отрабатывают для каждого. диагностика, которую вы видите, скорее всего связана с ошибкой в правилах или некорректно работающем устройстве. понять проблему можно включив максимальную диагностику udev (в /etc/udev/udev.conf установить udev_log="info") и посмотреть, что будет писаться в журнал syslog или, если диагностика возникает до старта syslogd, в журнале ядра (читается командой dmesg)
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Такой вопрос. Команда "lshw -class display" выводит такую информацию:

Код: Выделить всё

  *-display UNCLAIMED
       description: VGA compatible controller
       product: RS880 [Radeon HD 4200]
       vendor: ATI Technologies Inc
       physical id: 5
       bus info: pci@0000:01:05.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:d0000000-dfffffff(prefetchable) ioport:c000(size=256) memory:fe9f0000-fe9fffff memory:fe800000-fe8fffff

Что это означает? Означает ли отсутствие в строке configuration записи driver= то, что для устройства отсутствует драйвер? Что нужно сделать, чтобы он появился?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Работа с железом и драйверами

Сообщение Stauffenberg »

sunny1983 писал(а):
05.03.2012 11:38
Такой вопрос. Команда "lshw -class display" выводит такую информацию:

Код: Выделить всё

  *-display UNCLAIMED
       description: VGA compatible controller
       product: RS880 [Radeon HD 4200]
       vendor: ATI Technologies Inc
       physical id: 5
       bus info: pci@0000:01:05.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:d0000000-dfffffff(prefetchable) ioport:c000(size=256) memory:fe9f0000-fe9fffff memory:fe800000-fe8fffff

Что это означает? Означает ли отсутствие в строке configuration записи driver= то, что для устройства отсутствует драйвер? Что нужно сделать, чтобы он появился?



Код: Выделить всё

> lspci | grep VGA
04:00.0 VGA compatible controller: nVidia Corporation G73 [GeForce 7300 GT] (rev a1)

> lspci -v -s 04:00.0 | grep driver
        Kernel driver in use: nouveau
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Подниму давно забытую тему. Тут проблемы с идентификацией железа. Поставил я Debian GNU/Linux Wheezy на ноутбук ASUS K73BY. "lshw -class bus" выдаёт:

Код: Выделить всё

  *-serial UNCLAIMED
       description: SMBus
       product: SBx00 SMBus Controller
       vendor: Advanced Micro Devices [AMD] nee ATI
       physical id: 14
       bus info: pci@0000:00:14.0
       version: 42
       width: 32 bits
       clock: 66MHz
       configuration: latency=0

lspci об этом устройсве говорит:

Код: Выделить всё

iskatel@iskatel-nb:~$ lspci -s 00:14.0 -v
00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 42)
        Subsystem: ASUSTeK Computer Inc. Device 102c
        Flags: 66MHz, medium devsel

Что это за устройсво такое и почему оно "UNCLAIMED"?

И второй вопрос по выводу lsusb:

Код: Выделить всё

iskatel@iskatel-nb:~$ lsusb -s 004:003 -v

Bus 004 Device 003: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0cf3 Atheros Communications, Inc.
  idProduct          0x3005 AR3011 Bluetooth
  bcdDevice            0.01
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          177
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0009  1x 9 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0011  1x 17 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0019  1x 25 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0021  1x 33 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1

Ничего из вывода не понятно: какой драйвер устройство использует, через какой файл в /dev к нему можно обращаться и, вообще, работает ли у меня bluetooth-модуль
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Работа с железом и драйверами

Сообщение vr13 »

sunny1983 писал(а):
09.02.2013 16:57
Подниму давно забытую тему.

да ладно вам - всего два года прошло. как вчера просто :)
Тут проблемы с идентификацией железа.

где? ни одной не увидел, кроме наверное таковой, связанной вашим непониманием. но это поправимо - всего лишь нужно поискать-почитать о:
  • smbus - system management bus. примитивно - это управляющая часть чипсета на специальной шине, идентичной i2c, которой управляют соответствующие модули ядра (в вашем случае, эти модули не загружены. почему - предстоит разбираться вам. скорее всего, нужно начинать с lm_sensors)
  • "драйверы" bluetooth. как известно, не все железки в linux имеют соответствующий спецфайл в /dev. если хотите понимать больше как это устроено, надо посмотреть в /sys (в /sys/class/bluetooth в частности, раз это пишется в разделе форума про ядро, то надо иметь представление о том, что называется kernel objects). иерархия компонент bluetooth в linux устроены так - [аппаратно-зависимый модуль ядра, например btusb] <-> [службы ядра bluetooth, не зависящие от железа - модуль bluetooth] <-> [демон взаимодействия с ядром из пакета bluez: bluetoothd] <-> [управляющий софт в пространстве пользователя: rfkill, blueman, gnome-bluetooth итп]

Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

vr13 писал(а):
09.02.2013 21:09
  • smbus - system management bus. примитивно - это управляющая часть чипсета на специальной шине, идентичной i2c, которой управляют соответствующие модули ядра (в вашем случае, эти модули не загружены. почему - предстоит разбираться вам. скорее всего, нужно начинать с lm_sensors)

Вот что мне выдал lm_sensors:

Код: Выделить всё

iskatel@iskatel-nb:~$ sudo sensors-detect
# sensors-detect revision 6031 (2012-03-07 17:14:01 +0100)
# System: ASUSTeK Computer Inc. K73BY [1.0] (laptop)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): YES
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   Success!
    (driver `k10temp')
AMD Family 15h thermal sensors...                           No
AMD Family 15h power sensors...                             No
Intel digital thermal sensor...                             No
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): YES
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (YES/no): YES
Probing for `National Semiconductor LM78' at 0x290...       No
Probing for `National Semiconductor LM79' at 0x290...       No
Probing for `Winbond W83781D' at 0x290...                   No
Probing for `Winbond W83782D' at 0x290...                   No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no): YES
Using driver `i2c-piix4' for device 0000:00:14.0: ATI Technologies Inc SB600/SB700/SB800 SMBus
Module i2c-dev loaded successfully.

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

Driver `k10temp' (autoloaded):
  * Chip `AMD Family 12h and 14h thermal sensors' (confidence: 9)

No modules to load, skipping modules configuration.

Unloading i2c-dev... OK
Unloading cpuid... OK

Подгружаются модули i2c-piix4, i2c-dev, k10temp, но всё равно остаётся UNCLAMED
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Работа с железом и драйверами

Сообщение vr13 »

sunny1983 писал(а):
10.02.2013 15:35
Подгружаются модули i2c-piix4, i2c-dev, k10temp, но всё равно остаётся UNCLAMED

модули, похоже потом выгружаются, т.к нечем управлять. что будет, если

Код: Выделить всё

# modprobe i2c-piix4
# lspci -k -s 00:14.0

?
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

vr13, не, ничего не меняется
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Упс! Только сейчас дошло. piix4 - это же чипсеты Intel, а у меня ATI
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Работа с железом и драйверами

Сообщение sunny1983 »

Что уж три недели ответов нет никаких в теме нет.

Я так и не понял, что делать с этим злосчастным "SMBus Controller".

Но появился ещё один вопрос. Я вот перечитал тему и так и не понял куда всё-таки udev записывает информацию о сопоставлении реальных устройств файлам устройств в /dev. Вот на виртуальном сервере в /dev вижу файлы sda, sdb, sdc. Хочу узнать о sdc, что это за диск, к какой он шине подключён, кто производитель, какие параметры? Где мне это смотреть?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2042
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Работа с железом и драйверами

Сообщение Stauffenberg »

sunny1983 писал(а):
06.03.2013 22:33
Что уж три недели ответов нет никаких в теме нет.

Я так и не понял, что делать с этим злосчастным "SMBus Controller".

Но появился ещё один вопрос. Я вот перечитал тему и так и не понял куда всё-таки udev записывает информацию о сопоставлении реальных устройств файлам устройств в /dev. Вот на виртуальном сервере в /dev вижу файлы sda, sdb, sdc. Хочу узнать о sdc, что это за диск, к какой он шине подключён, кто производитель, какие параметры? Где мне это смотреть?

Russian Linux Kernel Mailling List
There are some kernel geeks. They can help, I guess.
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
broom
Бывший модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: Работа с железом и драйверами

Сообщение broom »

sunny1983 писал(а):
06.03.2013 22:33
Вот на виртуальном сервере в /dev вижу файлы sda, sdb, sdc. Хочу узнать о sdc, что это за диск, к какой он шине подключён, кто производитель, какие параметры? Где мне это смотреть?

/sys/class/block/sd<N>
например, модель здесь: /sys/class/block/sda/device/model
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX
Контактная информация:

Re: Работа с железом и драйверами

Сообщение Olej »

sunny1983 писал(а):
06.03.2013 22:33
Но появился ещё один вопрос. Я вот перечитал тему и так и не понял куда всё-таки udev записывает информацию о сопоставлении реальных устройств файлам устройств в /dev. Вот на виртуальном сервере в /dev вижу файлы sda, sdb, sdc. Хочу узнать о sdc, что это за диск, к какой он шине подключён, кто производитель, какие параметры? Где мне это смотреть?


См. асинхронные уведомления и udev

+ Драйверы и модули ядра Linux (обновление)

/dev в этой цепочке уведомлений самое последнее звено:
- обнаружив изменения с устройствами, ядро отображает эти изменения в /sys
- любое изменение в /sys вызывает посылку уведомления по внутреннему сетевому сокету протокола netlink (есть в man)
- udev ловит уведомления...
- если у него (udev) записано соответствующее уведомлению правило - он делает отображение в /dev
Спасибо сказали:
Ответить