Команды для определения подключённых устройств 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
Источники
Связанные темы
Структура каталогов linux(Debian)
Использование hydra для тестирования
Использование модуля pg_stat_statements в postgresql
Поиск уязвимостей и следов взлома в Linux
Управление планировщиком в Postgresql
Базовые понятие о настройках и безопасности в сети
Системные каталоги в Postgresql
Саздание сертификатов SSL (TLS) для сайта
Мониторинг событий в linux с помощью auditd
Мониторинг системы Linix с помощью getconf
Установка и настройка tftp сервера в Linux Ubuntu
Использование fail2ban в Linux






