What is hcl in linux

What is hcl in linux

Top10 любых типов устройств, с которыми не будет проблем в Linux

id Производитель id Устройство Всего
8086 Intel Corporation 244e 82801 PCI Bridge 46
10ec Realtek Semiconductor Co., Ltd. 8168 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 34
8086 Intel Corporation 27d8 NM10/ICH7 Family High Definition Audio Controller 23
8086 Intel Corporation 27ca NM10/ICH7 Family USB UHCI Controller #3 23
8086 Intel Corporation 27c9 NM10/ICH7 Family USB UHCI Controller #2 23
8086 Intel Corporation 27d0 NM10/ICH7 Family PCI Express Port 1 23
8086 Intel Corporation 27cb NM10/ICH7 Family USB UHCI Controller #4 23
8086 Intel Corporation 27cc NM10/ICH7 Family USB2 EHCI Controller 23
8086 Intel Corporation 27c8 NM10/ICH7 Family USB UHCI Controller #1 23
8086 Intel Corporation 27da NM10/ICH7 Family SMBus Controller 21

Top10 PCI устройств, с которыми не будет проблем в Linux

id Производитель id Устройство Всего
8086 Intel Corporation 244e 82801 PCI Bridge 46
10ec Realtek Semiconductor Co., Ltd. 8168 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 34
8086 Intel Corporation 27d8 NM10/ICH7 Family High Definition Audio Controller 23
8086 Intel Corporation 27ca NM10/ICH7 Family USB UHCI Controller #3 23
8086 Intel Corporation 27c9 NM10/ICH7 Family USB UHCI Controller #2 23
8086 Intel Corporation 27d0 NM10/ICH7 Family PCI Express Port 1 23
8086 Intel Corporation 27cb NM10/ICH7 Family USB UHCI Controller #4 23
8086 Intel Corporation 27cc NM10/ICH7 Family USB2 EHCI Controller 23
8086 Intel Corporation 27c8 NM10/ICH7 Family USB UHCI Controller #1 23
8086 Intel Corporation 27da NM10/ICH7 Family SMBus Controller 21

Top10 USB устройств, с которыми не будет проблем в Linux

id Производитель id Устройство Всего
0458 KYE Systems Corp. (Mouse Systems) 003a NetScroll+ Mini Traveler / Genius NetScroll 120 7
05e3 Genesys Logic, Inc. 1205 Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 4
0457 Silicon Integrated Systems Corp. 0151 Super Flash 1GB / GXT 64MB Flash Drive 3
09da A4Tech Co., Ltd. 0080 Unknown Device 2
046d Logitech, Inc. c046 RX1000 Laser Mouse 1
03ee Mitsumi 6441 Unknown Device 1
152d JMicron Technology Corp. / JMicron USA Technology Corp. 2329 JM20329 SATA Bridge 1
046d Logitech, Inc. c315 Classic Keyboard 200 1
12d1 Huawei Technologies Co., Ltd. 140c E180v 1
6993 Yealink Network Technology Co., Ltd. b001 VoIP Phone 1

Top10 отличных видеокарт

id Производитель id Устройство Всего
8086 Intel Corporation 29c2 82G33/G31 Express Integrated Graphics Controller 7
8086 Intel Corporation 0116 2nd Generation Core Processor Family Integrated Graphics Controller 5
10de NVIDIA Corporation 0110 NV11 [GeForce2 MX/MX 400] 5
5333 S3 Graphics Ltd. 8d04 VT8375 [ProSavage8 KM266/KL266] 4
8086 Intel Corporation a011 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller 4
8086 Intel Corporation 2a02 Mobile GM965/GL960 Integrated Graphics Controller (primary) 3
10de NVIDIA Corporation 0402 G84 [GeForce 8600 GT] 3
10de NVIDIA Corporation 0322 NV34 [GeForce FX 5200] 2
10de NVIDIA Corporation 0393 G73 [GeForce 7300 GT] 2
1002 Advanced Micro Devices, Inc. [AMD/ATI] 6740 Whistler [Radeon HD 6730M/6770M/7690M XT] 2

Top10 любых типов устройств, с которыми возможны проблемы в Linux

id Производитель id Устройство Всего
1022 Advanced Micro Devices, Inc. [AMD] 1100 K8 [Athlon64/Opteron] HyperTransport Technology Configuration 16
1022 Advanced Micro Devices, Inc. [AMD] 1101 K8 [Athlon64/Opteron] Address Map 16
1022 Advanced Micro Devices, Inc. [AMD] 1201 Family 10h Processor Address Map 8
1022 Advanced Micro Devices, Inc. [AMD] 1200 Family 10h Processor HyperTransport Configuration 8
1022 Advanced Micro Devices, Inc. [AMD] 1204 Family 10h Processor Link Control 8
1106 VIA Technologies, Inc. 3038 VT82xx/62xx UHCI USB 1.1 Controller 4
3538 Unknown Vendor 0901 Unknown Device 3
8564 Unknown Vendor 1000 Unknown Device 3
1022 Advanced Micro Devices, Inc. [AMD] 9601 RS880 Host Bridge 3
1106 VIA Technologies, Inc. 3104 USB 2.0 3
Читайте также:  Microsoft windows 10 home trial

Top10 PCI устройств, с которыми возможны проблемы в Linux

id Производитель id Устройство Всего
1022 Advanced Micro Devices, Inc. [AMD] 1100 K8 [Athlon64/Opteron] HyperTransport Technology Configuration 16
1022 Advanced Micro Devices, Inc. [AMD] 1101 K8 [Athlon64/Opteron] Address Map 16
1022 Advanced Micro Devices, Inc. [AMD] 1204 Family 10h Processor Link Control 8
1022 Advanced Micro Devices, Inc. [AMD] 1201 Family 10h Processor Address Map 8
1022 Advanced Micro Devices, Inc. [AMD] 1200 Family 10h Processor HyperTransport Configuration 8
1106 VIA Technologies, Inc. 3038 VT82xx/62xx UHCI USB 1.1 Controller 4
1106 VIA Technologies, Inc. 3104 USB 2.0 3
1022 Advanced Micro Devices, Inc. [AMD] 9601 RS880 Host Bridge 3
8086 Intel Corporation 3423 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers 2
1022 Advanced Micro Devices, Inc. [AMD] 9600 RS780 Host Bridge 2

Top10 USB устройств, с которыми возможны проблемы в Linux

Источник

Linux HCL — поддерживаемое оборудование

Делаем отчёт в MS Windows — получаем ответ в Linux.
http://vasilisc.com/hcl/detect.php

Сделал первую версию статистики, в дальнейшем исправим, подрихтуем, приукрасим.
http://vasilisc.com/hcl/stats.php

Многие видели сайты, посвящённые оборудованию в Linux. Сама мысль, что информация собрана в ручную или скриптами, но так или иначе людьми, которые не поленились и отправили отчёт о своём оборудовании с указанием «работает/не работает» — всё это наводило на меня уныние.

Ведь если вдуматься, то работающее оборудование в Linux обслуживает или само ядро или модуль ядра. А мы люди опять описываем на многочисленных сайтах, то что определил наш релиз Linux, точнее его новое ядро и окружение. То есть у ядра есть своя «база данных устройств», а мы её через наш человеческий фактор выносим на сайты.

Начал интересоваться как именно Linux обслуживает мои железяки и загружает тот или иной модуль для обслуживания конкретного устройства. Здесь и далее мы будем обсуждать только «PCI устройства», иными словами «всё что расположено на материнке».

В Линуксе есть команда lspci, которая выводит информацию об вашем оборудовании и какой «модуль» обслуживает конкретный компонент.
Типа так,
03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 01)
Kernel driver in use: r8169
Kernel modules: r8169

04:01.0 Ethernet controller [0200]: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] [1106:3106] (rev 86)
Kernel driver in use: via-rhine
Kernel modules: via-rhine

И меня терзала мысль, а как именно Линукс определяет, кто будет обслуживать устройство. В выше указанном примере сетевую карту «RTL8101E/RTL8102E PCI Express Fast Ethernet controller» будет обслуживать модуль r8169, а другую сетевую карту «VT6105/VT6106S [Rhine-III]» — модуль via-rhine.

Но они обе сетевые карты, хоть и разного производителя!
И как Linux их различает?
И как «знает» что для одной сетевой карты нужен один модуль, а для другой карты — другой модуль?

До этого момента я знал об идентификаторах оборудования, но не был силён в этой теме. Прочитав литературу, выяснилось что есть некие числа, которые определяют во-первых, класс устройства (далее Class Code — CC). То есть видеокарта это одно, а сетевая карта это другое и у них разные «числа класса устройств».

Читайте также:  Использование данных windows 10 можно ли отключить

Самое главное, что есть база описывающая, какой Class Code что значит, но об этом чуть позже.

Во-вторых, есть число, которое однозначно определяет производителя железяки и называется Vendor ID. У каждого производителя своё уникальное число.
В-третьих, есть число, которое однозначно определяет саму железяку и называется Device ID. У каждой железяки своё уникальное число, НО в пределах производителя!
Есть еще числа, но мы на этом остановимся, кому интересно, то подробности в википедии в статье PCI configuration space.

И так есть 3 числа, но пока не понятно как эти числа связаны с модулями, то есть какой модуль кого будет обслуживать. Сначала я выяснил, что большинство утилит, типа lspci, пользуется базой, в которой числа расшифровываются в понятные человеку описания.

База расположена в Ubuntu Linux по адресу /usr/share/misc/pci.ids и обновляется командой update-pciids. Благодаря этой базе, можно узнать что значат те или иные числа.

Следующая моя мысль была «покопаться в исходниках lspci», ведь как-то утилита выводит обслуживающий железяку модуль! Ковыряя исходники lspci выяснилось, что lspci использует виртуальную файловую систему sysfs в Linux. Изменив чуток исходники lspci и заставив выводить путь, откуда lspci берёт имя обслуживающего модуля, я увидел картину

То есть lspci банально читает псевдофайл driver из сконструированного пути в /sys/bus/pci/ и всё!
Линукс грузится, происходит инициализация устройств, sysfs заполняется псевдофайлами, которые описывают конкретный компьютер, а утилита lspci просто читает эти файлы . мдаааа.
Тут я понял, что тупик! От чего ушёл, к тому и пришёл. Время потрачено зря и толку ноль.

Но где-то всё таки есть «база», какой модуль и какие «числа» обслуживает. И я нашёл её — это файл modules.pcimap.
Файл имеет следующую структуру и наполнен данными:

Из файла modules.pcimap многое стало ясно! Определённый «класс устройства Class Code» + «производитель Vendor» + «устройство Device» определённо указывают на модуль, который будет обслуживать.

Решено было воплотить идею на сайте в виде скрипта, которому скармливают файл отчёт об оборудовании, а он выдаёт какое устройство, каким модулем будет обслуживаться. И тут меня посетила с дружественным визитом гениальная идея — файл-отчёт нужно создавать в MS Windows!

Если человек так или иначе загрузил Linux, то он сам увидит как его оборудование поддерживается. Нужно заманивать windows пользователей! Увидев, что его оборудование отлично поддерживается в Linux, многие задумаются — «а не попробовать ли мне установить Linux?»

Вся идея, вроде, была неплоха: «делаем в винде отчёт, а получаем какой результат будет в линуксе». В MS Windows есть утилита devcon.exe, которая поможет создать нужный файл-отчёт.

Но накидав черновик на сайте, «был опечален». Все было не так радужно, как представлялось вначале. На одних и тех же компьютерах были сделаны отчёты в MS Windows с помощью devcon.exe и в Ubuntu Linux с помощью lspci. На этих отчётах сразу «нарисовалась» проблема, что не все устройства «определялись» в макете сайта, который использовал первую версию базы данных, основанной на modules.pcimap. Сейчас кажется смешным, но я не сразу понял, что есть модули, которые занимаются группой устройств и охватывают, естественно, множество VendorID и DeviceID.

Модуль nvidiafb занимается только видеокартами, так как класс устройства 0x00030000 — это видеокарты. Но производитель должен быть nVidia, так как 0x000010de зарезервирован за этой фирмой. А вот 0xffffffff в поле device и говорит, что устройство-видеокарта может быть любой!

Читайте также:  Install linux firmware package

Модуль shpchp (Standard Hot Plug PCI Controller Driver) занимается всеми «PCI bridge» (0x00060400). Производитель и само устройство может быть любым, так как выставлено 0xffffffff.

Улучшив скрипт, улучшилось распознавание и настроение! Зелёным цветом выводились устройства, для которых найден обслуживающий их linux модуль. Красным цветом окрашивалось не найденое и было огромное желание сделать так, чтобы красного было как можно меньше.

Многое, но не всё, находится в файле modules.pcimap, который хранит связи между устройствами и модулями. У меня мелькнула ободряющая мысль — «а в исходниках ядра linux есть то, чего нет в modules.pcimap?». Оказалось есть!
Нужно разыскивать конструкции вида
PCI_DEVICE(0x8086,0x25F0)
PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8185)
в файлах исходниках ядра линукс. Если в каком-то файле в дереве исходниках линукса встречается конструкция PCI_DEVICE(), значит программный код этого исходника будет обслуживать данное устройство.

Очень лениво было писать программу, которая бы обходила дерево файлов и читая, разыскивала конструкции вида PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8185). Так же находила чему равно значение переменных, если вместо шестнадцатеричных чисел указана переменная, и заменяла имя переменной на её значение. Дал себе слово, что напишу позже такую программу на Питоне, а пока сваял баш-скриптик, который с помощью grep/sed и «такой-то матери» составил мне базу вида
/путь/к/файлу/модуля vendorid deviceid

И так у нас теперь «две базы». Ищем в базе «modules.pcimap», если не найден, то ищем в базе «исходники ядра линукс». К этому моменту хорошо улучшилось определение устройств.

Стало понятно, что нужно больше файлов-отчётов devcon и я решил обратиться к единомышленникам с forum.ubuntu.ru, которые очень сильно помогли, отправив мне множество различных отчётов. Какой-то период времени заняло тестирование, так как присланные отчёты показали множество моментов, которые я пропустил своими личными отчётами.

К этому времени нужно было решить что делать с устройствами к которым не нужны драйвера в полном смысле этого слова. Вывод lspci у таких устройств не показывал наличие задействованных модулей, но lspci легче! Lspci, редиска, просто читает псевдофайлы, а моему скрипту на сайте нужно что-то решить, когда в процессе разбора файла от devcon он найдёт упоминание об устройстве. Я решил добавить код, который отрабатывает когда поиск по двум базам заканчивается неудачно. Код простой, анализируется класс устройства и для таких устройств как память (0500), флеш-память (0501), контроллер памяти (0580), ISA которая теперь часть LPC Bus (0601) выводится информация, что «драйвер» не нужен.

К этому времени всё работало более-менее хорошо, нужно было делать красивую одёжку для скрипта php, так как чёрные буквы на белом фоне в 21 веке — не камильфо. Так как вебмастер из меня никакой, решил обратиться к другу, который в этом деле профи. Евгений Пашков потратил своё время и силы и создал интерфейс, который имитирует внешний вид Ubuntu, так как сайт по мимо основной задачи выполняет функцию «пропаганды дистрибутива Ubuntu среди пользователей MS Windows».

Пока Евгений ваял интерфейс, я озадачился безопасностью. Прочёл статьи о безопасном программировании в PHP и применил их на практике, всё таки есть процедура закачки файл-отчёта на сайт. Хакеры не дремлют и это нужно помнить.

Вот в принципе и всё.
В планах:
1) избавится от багов, которые вылезут при активном использовании сайта
2) написать всё таки программу для разбора исходников ядра линукс и пополнении базы
3) попробовать замахнутся на разбор и определение внешних устройств, таких как принтеры, сканеры и т.д и т.п.

Источник

Оцените статью