Команда lspci — это утилита в системах Linux, используемая для получения информации о шинах PCI и устройствах, подключенных к подсистеме PCI. Вы можете понять значение команды, рассмотрев слово lspci на две части. Первая часть ls — это стандартная утилита, используемая в Linux для вывода информации о файлах в файловой системе. Pci — вторая часть команды, поэтому вы можете естественно видеть, что команда lspci выводит информацию о подсистеме PCI так же, как команда ls выводит информацию о файловой системе.
В этой статье мы объясним основы PCI, PCIe и команды lspci для отображения информации в вашей системе.
PCI или Peripheral Component Interconnect — это интерфейс для добавления дополнительных аппаратных компонентов в компьютерную систему. PCIe или PCI Express — это обновленный стандарт, который используется сегодня. Например, предположим, что вы хотите добавить карту Ethernet к своему компьютеру, чтобы он мог получать доступ к Интернету и обмениваться данными. Карта нуждается в протоколе для связи с остальной частью внутренней системы, PCI может быть стандартным интерфейсом, используемым для добавления этой карты в вашу систему. Вам по-прежнему нужен драйвер для этой карты, чтобы ядро могло его использовать, однако PCI — это слот, а также шина и интерфейс, которые будут использоваться для добавления оборудования в систему со стандартным интерфейсом. Создание драйвера PCI linux будет следовать некоторым стандартным интерфейсам. Вы можете увидеть из структуры ниже стандартные методы, которые необходимо реализовать. Такие методы, как зондирование, удаление, приостановка, возобновление и т. д.
struct pci_driver { struct list_head node; const char *name; const struct pci_device_id *id_table; int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); void (*remove)(struct pci_dev *dev); int (*suspend)(struct pci_dev *dev, pm_message_t state); int (*resume)(struct pci_dev *dev); void (*shutdown)(struct pci_dev *dev); int (*sriov_configure)(struct pci_dev *dev, int num_vfs); const struct pci_error_handlers *err_handler; const struct attribute_group **groups; struct device_driver driver; struct pci_dynids dynids; };
PCI 3.0 может передавать данные со скоростью до 1 ГБ/сек на полосу. Различные устройства могут иметь более одной полосы, поэтому возможно, что отдельные устройства могут иметь скорость передачи данных в несколько гигабайт. Эти цифры всегда улучшаются по мере выхода новых версий спецификации и нового оборудования, поэтому всегда проверяйте наличие новейших и наиболее быстрых из возможных. Типы компонентов и гаджетов, которые вы можете купить с подключением к интерфейсу PCI, включают: адаптеры WIFI, Bluetooth, карты твердотельного хранилища NVME, видеокарты и многое другое.
Мы создали экземпляр Ubuntu 19.04 в облаке Google и теперь запущу команду lspci и посмотрю, что произойдет.
Вы видите по одной строке на устройство с числовым кодом и словесным описанием устройства. Фактически в этом выводе отображается 5 полей в каждой строке: слот, класс, поставщик, устройство и версия.
Итак, разбив первую строку, что у нас есть:
SLOT: 00: 00.0
Класс: Хост-мост
Производитель: Intel Corporation
Устройство: 440FX — 82441FX PMC
Revision: 02
И если посмотреть на слот 00: 04.0, это наш контроллер Ethernet, который выглядит как виртуальное устройство как часть виртуальной магии облачного развертывания Google.
Чтобы получить более подробную и подробную информацию о каждом слоте PCI, выполните следующую команду:
# lspci -vmm
Эта команда разбивает каждую строку на поля компонентов и позволяет анализировать каждое устройство с помощью более описательных меток.
Вы также можете попробовать опцию -v для более подробного вывода
# lspci -v
И используйте double v или tripple v для подробного вывода:
# lspci -vvv
Или попробуйте параметр -mm для формата вывода, читаемого сценарием.
# lspci -mm
Чтобы узнать, какой драйвер ядра используется для каждого устройства, запустите параметр -k.
Многие из моих устройств используют драйвер virtio-pci.
Наконец, вы даже можете увидеть шестнадцатеричный дамп «стандартной части конфигурационного пространства» для каждого устройства PCI. Вы должны быть настоящим хакером ядра, чтобы понять, как использовать эту информацию. -x — это то, что дает вам вывод дампа.
# lspci -x
Команда lspci — это стандартная команда Linux, которую можно использовать для вывода информации об устройствах, подключенных к PCI в вашей системе. Это может быть полезно, чтобы узнать, какое у вас периферийное оборудование. Он также очень полезен для разработчиков, создателей драйверов устройств и системных специалистов низкого уровня для запроса информации об устройствах, драйверах и системе. Наслаждайтесь использованием lspci.