определение_и_настройка_аппаратной_части

Определение и настройка аппаратной части

  • HAL (сокр. от англ. Hardware Abstraction Layer) – более не разрабатываемый демон, представлявший слой аппаратных абстракций для Linux и некоторых других Unix-образных систем. Благодаря ему ОС может обращаться к устройствам через их абстрактные представления (конкретную инструкцию устройству будет передавать драйвер).
  • D-Bus – Представляет информацию о железе софту
  • udev –Управление устройствами для новых версий ядра Linux, являющийся преемником devfs, hotplug и HAL. Его основная задача — обслуживание файлов устройств (англ. device nodes) в каталоге /dev и обработка всех действий, выполняемых в пространстве пользователя при добавлении/отключении внешних устройств, включая загрузку firmware.

Менеджер устройств, пришедший на смену HAL.

  • работает на уровне пользователя (больше свободы действий)
  • Управляется событиями (а не опрашивает ядро по расписанию как HAL)
  • удобные файлы конфигурации (а не xml как у HAL)
  • содержит в системе только файлы активных устройств (а не всех устройств как HAL)
  • сохраняет имена устройств при переподключение

Инструменты для работы с udev – udevadm, в арсенале которого имеется большое количество различных опций:

Опция Описание опции
info получение информации из БД
trigger запросить события для устройства
settle дождаться завершения обработки
control управление демоном
monitor следить за событиями
test симулировать запуск события

Примеры использования udevadm: Получим информацию о сетевой карте

  • ключ -a – вывод атрибутов
  • ключ -a – путь
udevadm info -a -p /sys/class/net/ens160

Включаем мониторинг событий происходящих на уровне ядра (в данном случае наблюдалось включение-отключение флешки)

udevadm monitor --property --kernel

Протестируем события, которые могут произойти с блочным устройством

udevadm test /sys/block/sda/

sysfs – виртуальная файловая система. Экспортирует информацию о драйверах и устройствах на уровень пользователя. Монтируется в /sys

  • devices/ – все устройства ядра
  • bus/ – перечень шин
  • drivers/ – каталоги драйверов
  • block/ – каталоги блочных устройств
  • class/ – группировка устройств по классам

procfs — специальная файловая система, используемая в UNIX-подобных операционных системах. Позволяет получить доступ к информации из ядра о системных процессах. Необходима для выполнения таких команд как ps, w, top. Обычно её монтируют на /proc

Содержит информация о всех запущенных процессах

  • Создается в оперативной памяти при загрузке
  • Количество файлов зависит от конфигурации данной системы
  • Для работы нужны права суперпользователя
  • Внесения изменений сохраняются только до конца сеанса

Примеры использования

Получаем информацию о процессоре

cat /proc/cpuinfo

Посмотрит информацию обо всех смонтированных файловых системах

cat /proc/mounts

Покажет сколько одновременно открытых файлов может использовать пользователь

cat /proc/sys/fs/file-max

Изменим значение file-max

echo 1000000 > /proc/sys/fs/file-max

Посмотрим разрешена ли пересылка пакетов межу сетевыми картами

cat /proc/sys/net/ipv4/ip_forward
  • /dev/sd буква – жесткий диск в системах на ядре Linux
  • /dev/sd буква номер – раздел диска
  • /dev/sr номер – CD-ROM
  • /dev/eth номер – Сетевой интерфейс Ethernet
  • /dev/wlan номер – Сетевой интерфейс Wireless
  • /dev/lp номер – Принтеры
  • /dev/video номер – Устройство изображений, камеры, фотоаппараты и т.д.
  • /dev/bus/usb/000/номер – Устройство номер на шине USB первого контролера (000)
  • /dev/dsp – звуковой вывод
  • lsmod – информация о модулях ядра
  • lspci – информация об устройствах PCI
  • lspcmcia – информация об устройствах PCMCIA (для ноутбуков)
  • lsusb – информация о шине USB
  • lshal – база устройств HAL
  • lshw – детальная информация о комплектующих
  • lsmod – информация о модулях ядра
  • modinfo – информация о конкретном модуле
  • rmmod – удаление модуля ядра
  • insmod – установка модуля ядра
  • modprobe – деликатное удаление или добавление модулей

Для того чтобы устройство работало, ему нужен модуль ядра, т.е. драйвер.

Пример работы

Посмотрим какие у нас есть модули ядра

lsmod
...
sysimgblt              16384  1 drm_kms_helper
psmouse               155648  0
fb_sys_fops            16384  1 drm_kms_helper
...

Среди прочих модулей был замечен такой – psmouse, получим информацию о данном модуле

modinfo psmouse
filename:       /lib/modules/5.4.0-42-generic/kernel/drivers/input/mouse/psmouse.ko
license:        GPL
description:    PS/2 mouse driver
...

Видим что это драйвер PS/2. Удалим его

rmmod psmouse

проверим, действительно устройство отсутствует

lsmod | grep psmouse

Теперь попробуем его установить используя утилиту insmod

insmod psmouse
insmod: ERROR: could not load module psmouse: No such file or directory

Так как insmod не умеет работать с зависимостями. Для аккуратной установки используем утилиту modprobe, которая проверит все зависимости и установит модуль

modprobe psmouse

Проверяем, устройство появилось!

Основные понятия:

  • IRQ – Механизм прерываний. Сигнал от программного или аппаратного обеспечения, сообщающий процессору о наступлении какого-либо события, требующего немедленного внимания. Прерывание извещает процессор о наступлении высокоприоритетного события, требующего прерывания текущего кода, выполняемого процессором.
  • IO адреса – обмен информацией между устройствами и CPU
  • DMA – Прямой доступ к памяти (англ. direct memory access, DMA) Обращение к памяти минуя ОЗУ. Так как данные не пересылаются в ЦП и обратно, скорость передачи увеличивается

Все перечисленные выше технологи настраиваются автоматически, контроллером материнской платы.

Получим информацию о прерываниях

cat /proc/interrupts

Получить информацию об адресации IO по портам

cat /proc/ioports

Получить информацию об адресации IO в памяти

cat /proc/iomem

Получить информацию о DMA

cat /proc/dma
 4: cascade
  • PATA – (англ. Advanced Technology Attachment) или IDE (англ. Integrated Drive Electronics) — параллельный интерфейс подключения накопителей (гибких дисков, жёстких дисков и оптических дисководов) к компьютеру. В 1990-е годы был стандартом на платформе IBM PC; в настоящее время вытеснен своим последователем — SATA — и с его появлением получил название PATA (Parallel ATA).
  • SATA – (англ. Serial ATA) Последовательный интерфейс обмена данными с накопителями информации. SATA является развитием параллельного интерфейса ATA (IDE), который после появления SATA был переименован в PATA (Parallel ATA).
  • SCSI – Стандарт передачи данных. SCSI (англ. Small Computer System Interface, произносится «скази») — представляет собой набор стандартов для физического подключения и передачи данных между компьютерами и периферийными устройствами.
  • SAS – Serial Attached SCSI, Замена SCSI

Смотрим, что куда смонтировано

 blkid
/dev/sr0: UUID="2020-04-23-08-02-07-00" LABEL="Ubuntu-Server 20.04 LTS amd64" TYPE="iso9660" PTUUID="36b64baf" PTTYPE="dos"
/dev/sda2: UUID="ecf92244-9c11-4633-8fc1-ee48a7a905a7" TYPE="ext4" PARTUUID="e5d3495a-106d-49a0-b285-557eed8d28f7"
/dev/sda3: UUID="IuZpdo-8Lk9-Z7yd-7WdX-AEqc-oncR-rQnvqT" TYPE="LVM2_member" PARTUUID="04f32575-3552-447b-b1e4-d905f89a838a"
...
  • определение_и_настройка_аппаратной_части.txt
  • Последнее изменение: 2021/06/21 11:22
  • admin