Команды для определения подключённых устройств Linux

Команды для определения подключённых устройств Linux

    Команды для определения подключённых устройств

    Две основные команды для определения подключённых устройств в системе Linux
    lspci - Отображает все устройства, подключенные в данный момент к шине PCI (Peripheral Component Interconnect).
    Устройства PCI могут быть как компонентами, подключёнными к материнской плате, например дисковым контроллером, так и платами расширения, устанавливаемыми в слот PCI, например внешней видеокартой.


    lsusb - Список USB-устройств (универсальная последовательная шина), подключенных к компьютеру в данный момент

    Вывод команд lspci и lsusb представляет собой список всех устройств PCI и USB, идентифицированных операционной системой. Однако устройство может быть ещё не полностью работоспособным, поскольку для управления каждой аппаратной частью требуется программный компонент. Этот программный компонент называется модулем ядра и может быть частью официального ядра Linux или добавлен отдельно из других источников.
    Модули ядра Linux, связанные с аппаратными устройствами, также называются драйверами, как и в других операционных системах.
    Драйверы для Linux не всегда поставляются производителем устройства. Хотя некоторые производители предоставляют собственные бинарные драйверы для отдельной установки, многие драйверы пишутся независимыми разработчиками.

    Шестнадцатеричные числа в начале каждой строки — это уникальные адреса соответствующего устройства PCI. Команда lspci показывает более подробную информацию о конкретном устройстве, если его адрес указан с параметром -s в сочетании с параметром -v

    lspci -s 03:00.0 -v

    Модуль ядра можно определить по строке kernel driver in use
    Другой способ проверить, какой модуль ядра используется для указанного устройства, — использовать опцию -k, доступную в более поздних версиях lspci

    lspci -s 01:00.0 -k 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) kernel driver in use: nvidia kernel modules: nouveau, nvidia_drm, nvidia

    Для выбранного устройства, платы графического процессора NVIDIA, lspci сообщает, что используемый модуль называется nvidia, а используемый драйвер ядра — nvidia. Все соответствующие модули ядра перечислены в строке kernel modules: nouveau, nvidia_drm, nvidia.


    Команда lsusb показывает доступные USB-каналы и подключённые к ним устройства. Как и в случае с lspci, опция -v выводит более подробную информацию. Для проверки можно выбрать конкретное устройство, указав его идентификатор в опции -d:

    sudo lsusb sudo lsusb -v -d 0458:6001 #С параметром -t команда lsusb отображает текущие сопоставления USB-устройств в виде иерархического дерева: sudo lsusb -t sudo lsusb -t -v -d 0458:6001

    Если подходящий модуль существует, его название указывается в конце строки для устройства, например Driver=btusb.
    Класс устройства определяет его общую категорию, например «устройство взаимодействия с человеком», «беспроводное устройство», «устройство конкретного производителя», «накопитель» и т. д.


    Чтобы проверить, какое устройство использует модуль btusb, указанный в предыдущем списке, необходимо указать номера шины и устройства в параметре -s команды lsusb
    В стандартной системе Linux в любой момент времени обычно загружен большой набор модулей ядра. Предпочтительный способ взаимодействия с ними — использование команд из пакета kmod, который представляет собой набор инструментов для решения распространённых задач, связанных с модулями ядра Linux, таких как вставка, удаление, вывод списка, проверка свойств, разрешение зависимостей и псевдонимов. Например, команда lsmod показывает все загруженные в данный момент модули:

    sudo lsmod

    Вывод команды lsmod разделён на три столбца:
    Module - Module name.
    Size - Amount of RAM occupied by the module, in bytes.
    Used by - Depending modules.
    В третьем столбце «Используется» указаны модули, для корректной работы которых необходим модуль из первого столбца.


    Команда modprobe может использоваться как для загрузки, так и для выгрузки модулей ядра. Чтобы выгрузить модуль и связанные с ним модули, если они не используются запущенным процессом, следует использовать команду modprobe -r.
    Если в качестве единственного аргумента указать имя модуля, команда modinfo отобразит описание, файл, автора, лицензию, идентификацию, зависимости и доступные параметры для данного модуля. Пользовательские параметры для модуля можно сделать постоянными, включив их в файл /etc/modprobe.conf или в отдельные файлы с расширением .conf в каталоге /etc/modprobe.d/
    Опция -p заставит команду modinfo отобразить все доступные параметры и проигнорировать остальную информацию

    #Выгрузка модуля modprobe -r snd-hda-intel #Подробная информация о модуле sudo modinfo -p nouveau

    Если модуль вызывает проблемы, его загрузку можно заблокировать с помощью файла /etc/modprobe.d/blacklist.conf. Например, чтобы предотвратить автоматическую загрузку модуля nouveau, в файл /etc/modprobe.d/blacklist.conf нужно добавить строку blacklist nouveau. Это необходимо сделать, если установлен проприетарный модуль nvidia и нужно отключить модуль nouveau по умолчанию.
    Вы можете изменить файл /etc/modprobe.d/blacklist.conf, который уже существует в системе по умолчанию. Однако предпочтительнее создать отдельный файл конфигурации /etc/modprobe.d/<имя_модуля>.conf, который будет содержать настройки, относящиеся только к данному модулю ядра.


    Информационные файлы и файлы устройств

    Команды lspci, lsusb и lsmod служат интерфейсами для чтения аппаратной информации, хранящейся в операционной системе. Такая информация хранится в специальных файлах в каталогах /proc и /sys. Эти каталоги являются точками монтирования файловых систем, которые находятся не в разделе устройства, а только в оперативной памяти, используемой ядром для хранения конфигурации во время работы и информации о запущенных процессах. Такие файловые системы не предназначены для обычного хранения файлов, поэтому они называются псевдофайловыми системами и существуют только во время работы системы.
    В каталоге /proc находятся файлы с информацией о запущенных процессах и аппаратных ресурсах. Вот некоторые из важных файлов в /proc для проверки оборудования:


    /proc/cpuinfo - Выводит подробную информацию о процессоре (ах), найденных операционной системой

    /proc/interrupts - Список номеров прерываний для каждого устройства ввода-вывода и каждого процессора

    /proc/ioports - Список используемых в данный момент регионов портов ввода/вывода.

    /proc/dma - Перечисляет используемые зарегистрированные каналы прямого доступа к памяти (DMA).

    Файлы в каталоге /sys выполняют те же функции, что и файлы в /proc. Однако каталог /sys предназначен для хранения информации об устройствах и данных ядра, связанных с аппаратным обеспечением, в то время как /proc также содержит информацию о различных структурах данных ядра, включая запущенные процессы и конфигурацию.

    Другой каталог, напрямую связанный с устройствами в стандартной системе Linux, — это /dev. Каждый файл в /dev связан с системным устройством, в частности с устройствами хранения данных. Например, устаревший жёсткий диск IDE, подключённый к первому каналу IDE на материнской плате, представлен файлом /dev/hda. Каждый раздел на этом диске будет обозначаться как /dev/hda1, /dev/hda2 и так до последнего найденного раздела.

    Со съёмными устройствами работает подсистема udev, которая создаёт соответствующие устройства в /dev. Ядро Linux фиксирует событие обнаружения оборудования и передаёт его процессу udev, который затем идентифицирует устройство и динамически создаёт соответствующие файлы в /dev, используя заранее заданные правила.

    В современных дистрибутивах Linux udev отвечает за идентификацию и настройку устройств, которые уже подключены к компьютеру при его включении (обнаружение холодного подключения), а также устройств, которые подключаются во время работы системы (обнаружение горячего подключения). Udev использует SysFS, псевдофайловую систему для хранения информации об оборудовании, которая монтируется в /sys

    Термин «горячее подключение» используется для обозначения обнаружения и настройки устройства во время работы системы, например при подключении USB-устройства. Ядро Linux поддерживает функцию горячего подключения с версии 2.6, что позволяет большинству системных шин (PCI, USB и т. д.) инициировать события горячего подключения при подключении или отключении устройства.

    При обнаружении новых устройств udev ищет подходящее правило в заранее заданных правилах, хранящихся в каталоге /etc/udev/rules.d/. Наиболее важные правила предоставляются дистрибутивом, но для конкретных случаев можно добавить новые.

    Устройства хранения

    В Linux устройства хранения данных обычно называются блочными устройствами, поскольку данные считываются на эти устройства и с них в виде блоков буферизованных данных разного размера и расположения
    Каждое блочное устройство идентифицируется файлом в каталоге /dev, причем название файла зависит от типа устройства (IDE, SATA, SCSI и т.д.) и его разделов
    Например, CD/DVD и гибкие диски будут иметь соответствующие названия в /dev: привод CD/DVD, подключенный ко второму каналу IDE, будет идентифицирован как /dev/hdc (/dev/hda и /dev/hdb зарезервированы для ведущего и ведомого устройств на первом канале Канал IDE) и старый дисковод гибких дисков будут идентифицированы как /dev/fdO, /dev/fd1 и т.д.
    Устройства IDE, SSD и USB-блоки будут иметь префикс sd
    Для дисков IDE будет использоваться префикс sd, но третья буква будет выбираться в зависимости от того, является ли диск ведущим или ведомым (в первом канале IDE ведущим будет sda, а ведомым — sdb).
    Разделы перечислены в цифровом виде. Пути /dev/sda1, /dev/sda2 и т.д. используются для первого и второго разделов блочного устройства
    Исключение из этого правила составляют карты памяти (SD-карты) и устройства NVMe (SSD, подключенные к шине PCI Express)
    Для SD-карт пути /dev/mmcblk0p1, /dev/mmcblk0p2 и т.д. используются для первого и второго разделов устройства, идентифицированного первым, и /dev/mmcblk1p1, /dev/mmcblk1p2 и т.д. используются для идентификации первого и второго разделов устройства, идентифицированного вторым
    Устройства NVMe получают префикс nvme, как в /dev/nvme0n1p1 и /dev/nvme0n1p2



    Источники
    Последнее изменение: 05.09.2026 12:01


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ