Linux - статьи

Горячее подключение


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

  • связывание драйверов с новыми устройствами;
  • конфигурирование драйверов;
  • конфигурирование устройств;
  • конфигурирование подсистемы;
  • запуск приложений.

Они выполняются системными администраторами при помощи сценариев оболочки, которые именуются policy agents, и утилит. Сценарии используются в случаях, когда важна гибкость. К примеру, способы хранения и управления конфигурационными данными могут различаться в разных дистрибутивах. Особенно широко варьируются такие административные задачи, как настройка сети,- и часто, вместо логичной простоты, предпочтение отдается чрезмерной сложности. Управляет агентами программа /sbin/hotplug (не путать с "Архитектором" :) ). В большинстве случаев сценарии являются не чем иным, как общим клеем; в свою очередь, использование общего hotplug-каркаса представляется шагом к минимизации ненужных вариантов в таких административных средствах.

Первоначально hotplugging включала поддержку USB- и PCI- (Cardbus) устройств и могла автоматически конфигурировать некоторые общие сетевые интерфейсы. Позже была добавлена поддержка IEEE 1394 (Firewire/i.Link) и возможность закачки при необходимости микропрограмм для USB-устройств. Сейчас с hotplugging взаимодействует большинство других подсистем, и ее поддержка присутствует почти во всех современных дистрибутивах Linux, включая RedHat, Debian и United Linux. Большое количество отдельных пакетов использует свои собственные расширения для автоматизации таких операций, как закачка микропрограмм и настольная компоновка.

Начиная с ядра версии 2.4, hotplugging является стандартной подсистемой Linux; работает также с 2.2, а в 2.6 она интегрирована с драйверной моделью, так что любая шина (sysfs-adapted) или драйверный класс могут сообщать о hotplug-событиях, инициированных горячим добавлением или удалением устройств.

Работает подсистема следующим образом. Во время загрузки системы действует системный сервис /etc/rc.d/init.d/hotplug, который управляет инициализацией оборудования, включая "холодное" подключение (cold plugging), посредством вызова файлов /etc/hotplug/тип.rc для каждого типа устройства (usb, pci - для PCI и Cardbus; net - для сетевой организации ит.д.), поддерживаемого системой. Данные типы определены ядром Linux и передаются как первый аргумент к вызовам /sbin/hotplug.

По завершению инициализации вся hotplug-деятельность выполняется сценарием /sbin/hotplug. Ему помогают файлы /etc/hotplug/тип.agent, которые управляют выбором и загрузкой драйверных модулей, основываясь на содержащихся в них данных MODULE_DEVICE_TABLE. За загрузкой модулей следует выполнение драйверов и оборудование специфической инициализации программами /etc/hotplug/тип/модуль. Сценарии эти используются для установки разрешений, запуска демонов, закачки микропрограмм и т.п. Handmap-средства (файлы /etc/hotplug/тип.handmap) ассоциируют сценарии с устройствами, для которых отсутствуют драйверы ядерного режима; usermap-средства (/etc/hotplug/тип.usermap) позволяют конфигурировать устройства, использующие драйверы пользовательского режима. Наконец, необязательные журнальные файлы /etc/hotplug/*.agent служат для хранения записей о событиях, которые были некорректно обработаны.

Также доступно ПО diet hotplug, предназначенное для загрузки ОС с горячо подключаемых устройств. Это исполняемая бинарная версия /sbin/hotplug, не предоставляющая гибкости в администрировании, присущей сценарию,- но работающая в более ограниченной среде, где нельзя воспользоваться bash и схожими с ней инструментальными средствами.

на SourceForge.net.



Содержание раздела