Форум Зейского сообщества любителей ОС Linux и Unix
Тематические обсуждения *nix => Базовая настройка => Тема начата: Vena от Вторник, 15 Ноября, 2011, 10:59:15
-
По аналогии с решением по сетевым адаптерам (Изменение именования сетевых адаптеров в Debian (http://www.nixzeya.ru.net/wiki/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D1%85_%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80%D0%BE%D0%B2_%D0%B2_Debian)) нужно сделать жесткое закрепление файла подключения за конкретным девайсом на шине PCI, а именно имеется, например, четырёхчиповый видеозахват. Всё настроено и работает. Стоит добавить еще плату видео захвата, всё разлетается, а именно файлы устройств после загрузки соответствуют уже другому девайсу.
Нашел решение типа такого (http://karapuzz.blogspot.com/2009/12/blog-post.html). Рекомендуется править файл udev. Команда
udevadm info -a -p $(udevadm info -q path -n /dev/video0)выдаёт много инфы, однозначных значений не могу выявить, а именно ATTRS{vendor} и ATTRS{device} несколько для каждого video*
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/0000:03:0d.0/video4linux/video1':
KERNEL=="video1"
SUBSYSTEM=="video4linux"
DRIVER==""
ATTR{name}=="saa7130[1] video (Philips EUROP"
ATTR{index}=="0"
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/0000:03:0d.0':
KERNELS=="0000:03:0d.0"
SUBSYSTEMS=="pci"
DRIVERS=="saa7134"
ATTRS{vendor}=="0x1131"
ATTRS{device}=="0x7130"
ATTRS{subsystem_vendor}=="0x1131"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x048000"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00001131d00007130sv00001131sd00000000bc04sc80i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0':
KERNELS=="0000:02:0a.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{vendor}=="0x3388"
ATTRS{device}=="0x0021"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x060400"
ATTRS{irq}=="0"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00003388d00000021sv00000000sd00000000bc06sc04i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1e.0':
KERNELS=="0000:00:1e.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x244e"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x060400"
ATTRS{irq}=="0"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00008086d0000244Esv00000000sd00000000bc06sc04i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}=="1"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
для video0 :
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/0000:03:0c.0/video4linux/video0':
KERNEL=="video0"
SUBSYSTEM=="video4linux"
DRIVER==""
ATTR{name}=="saa7130[0] video (Philips EUROP"
ATTR{index}=="0"
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/0000:03:0c.0':
KERNELS=="0000:03:0c.0"
SUBSYSTEMS=="pci"
DRIVERS=="saa7134"
ATTRS{vendor}=="0x1131"
ATTRS{device}=="0x7130"
ATTRS{subsystem_vendor}=="0xffff"
ATTRS{subsystem_device}=="0xffff"
ATTRS{class}=="0x048000"
ATTRS{irq}=="22"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00001131d00007130sv0000FFFFsd0000FFFFbc04sc80i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0':
KERNELS=="0000:02:0a.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{vendor}=="0x3388"
ATTRS{device}=="0x0021"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x060400"
ATTRS{irq}=="0"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00003388d00000021sv00000000sd00000000bc06sc04i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1e.0':
KERNELS=="0000:00:1e.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x244e"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x060400"
ATTRS{irq}=="0"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00008086d0000244Esv00000000sd00000000bc06sc04i00"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}=="1"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
В общем не ясно каким из ATTRS{vendor} и ATTRS{device} воспользоваться? Там вообще значения для разных video одинаковы :( Или как вообще решить озвученную проблему?
-
Предполагаю, если девайсы одинаковы, то проблем не должно быть - на каждое устройство ядро загрузит свой экземпляр драйверов (модулей). Есть прикладная программа как-то различает устройства - максимум, проблема будет в перескакиваниях видеовходов с 1-го на 5-й и наоборот.
Что касается именований, здесь примерно описан процесс:
http://www.mythtv.org/wiki/Device_Filenames_and_udev
Для условий udev вероятнее всего можно взять и другие параметры нежели ATTRS{vendor} и ATTRS{device}.
В общем не ясно каким из ATTRS{vendor} и ATTRS{device} воспользоваться?
Это наверно нужно методом тыка изучить.