Выгорание HDMI интерфейса. Системы водоснабжения многоквартирного дома: типы сетей и схемы. Горячее и холодное водоснабжение Горячее и холодное подключение устройств

Оригинал: Some Nifty udev Rules and Examples
Авторы: Vimal Daga, Davender Singh
Дата публикации: 28 Июня 2012 г.
Перевод: А.Панин
Дата публикации перевода: 23 октября 2012 г.

Благодаря системе udev, которую разработали Greg Kroah-Hartman, Kay Sievers и Dan Stekloff, процесс подключения flash-накопителей, жестких дисков, камер и мобильных телефонов к системе под управлением ОС Linux стал простым и управляемым как никогда раньше. Впервые реализованная в ядре Linux версии 2.6, система udev обрабатывает как горячее подключение устройств к работающей системе, так и холодное подключение устройств (присоединенных до включения системы). В этой статье мы рассмотрим процесс динамического создания файлов устройств в каталоге /dev и приведем несколько примеров настроек, пригодных для использования или просто для развлечения.

Под udev понимается реализация файловой системы устройств devfs в пространстве пользователя. Система включает в себя службу udevd , файлы настроек и файлы правил, используемые для динамического управления файлами устройств Linux, находящимися в директории /dev , в ответ на события, генерируемые ядром (uevents). Udev с успехом полностью заменила старую реализацию devfs начиная с ядра Linux версии 2.6.

Для чего же понадобилась полностью переработанная реализация системы управления файлами устройств? И почему внедрение udev было столь успешным? Для получения ответа необходимо рассмотреть историю развития интерфейсов драйверов устройств ОС Linux.

С каждым файлом устройства связано два 8-битных значения: младший идентификатор (minor number) и старший идентификатор (major number). Каждый драйвер устройства имеет старший идентификатор; и все файлы устройств, работающих под управлением этого драйвера имеют одинаковый старший идентификатор. Младшие идентификаторы устройств различны у разных устройств, работающих под управлением этого драйвера.

В ранних версиях Linux файловая система /dev содержала по одному статическому файлу для каждого устройства, которое могло бы быть подключено к системе (и управлялось бы драйвером устройства). К сожалению, этот подход имел ряд проблем: было недостаточно значений идентификаторов для присвоения всем возможным устройствам, в особенности в условиях растущего количества поддерживаемых устройств. Также, наличие более 18000 файлов устройств требовало большого количества дополнительного дискового пространства. Эти проблемы были решены путем предоставления возможности udev игнорировать значения младшего и старшего идентификатора файлов устройств.

При горячем подключении устройств, таких как оборудование с интерфейсом USB, не было постоянства при присвоении названия и идентификатора файлу устройства. К примеру, на системе с двумя USB-принтерами, один из принтеров может быть представлен файлом /dev/usb/lp0 , а другой файлом /dev/usb/lp1 - но при этом нет точного понимания, какой из принтеров представлен тем или иным файлом. Это поведение могло меняться в зависимости от того, какое из устройств было включено при загрузке компьютера или подключено раньше - или может меняться в зависимости от того, подключено ли устройство к USB-разветвителю или напрямую к USB-порту системы. Такое поведение всегда разочаровывало и сбивало с толку пользователей. Система udev позволяет задать постоянное имя устройства при помощи правил.

Другие возможности udev решают множество проблем, доставшихся в наследство от devfs:

  • udev работает в пространстве пользователя, сокращая количество и сложность кода ядра.
  • udev позволяет назначать постоянное имя устройства, не зависящее от порядка включения устройств и расположения устройства на шине.
  • udev динамически изменяет файлы в директории /dev , создавая файлы только для тех устройств, которые присутствуют и подключены к системе. Также возможно назначение произвольных имен устройств при помощи символических ссылок на файлы устройств.
  • udev предоставляет информацию об устройстве приложениям пользовательского пространства, убирая необходимость доступа к внутренним структурам ядра для получения данной информации.

Как работает udev

Служба udevd слушает netlink-сокет в ожидании событий, генерируемых ядром при подключении или отключении устройства. Вы можете наблюдать за этими событиями при помощи команды udevmonitor - запустите ее, подключите USB-устройство, например, flash-накопитель, и отключите его (в новейших дистрибутивах может не быть программы udevmonitor - в этом случае используйте udevadm .)

Во время запуска udev монтирует файловую систему tmpfs в в директорию /dev . После этого файлы устройств копируются из директории /lib/udev/device в директорию /dev и udev начинает принимать события ядра для устройств с холодным подключением. Директория /etc/udev/rules.d используется для изменения параметров устройств, создания символических ссылок на файлы устройств и выполнения других действий. Для устройств, использующих горячее подключение, udevd принимает события ядра при помощи D-Bus, после чего получает атрибуты нового устройства из файловой системы /sys и применяет правила в зависимости от атрибутов - после этого создается файл устройства в файловой системе /dev . Udev также позволяет подгружать предназначенные для этого драйверы устройств при помощи механизма "modalias".

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

Udev предоставляет возможность изменять свое поведение на основе правил и конфигурационных файлов. Вы можете переопределить принцип работы правил, поставляемых в комплекте с системой (обычно находящихся в /lib/udev/rules.d ) или добавить индивидуальные и специфические возможности, удовлетворяющие вашим потребностям. Правила можно добавлять в директорию /etc/udev/rules.d/ - директорию для индивидуальных пользовательских правил.

Создавайте свои правила (которые назначают имя файла устройства, создают символические ссылки, устанавливают права доступа и выполняют другие необходимые вам действия) в этой директории. Для того, чтобы удостоверится, что правило предшествует остальным, убедитесь, что имя файла начинается с числа, меньшего, чем остальные правила, которые должны выполняться после него - например, 10-local.rules .

Отключить учетную запись пользователя root до того момента, как администратор подключит свой USB-диск

BUS=="usb", SUBSYSTEM=="block", PROGRAM="/bin/enable_root_login"

Для того, чтобы это правило работало, вам необходимо разработать приложение или сценарий оболочки с заданным именем, для того, чтобы получать серийный номер устройства, подключенного к системе и сравнивать его с известным серийным номером устройства администратора. В случае совпадения серийных номеров, программа удалит строку auth requisite pam_deny.so из файла /etc/pam.d/login , что позволит вход в систему под учетной записью пользователя root. В случае подключения других USB-устройств, никаких изменений файлов произведено не будет. Напротив, как только USB-носитель будет отключен, эта строка будет снова добавлена в файл.

Это правило было протестировано на дистрибутиве RHEL 5.0 и прекрасно работало, тем не менее, при использовании команды su или при входе в однопользовательском режиме при загрузке это правило не будет работать. Для запрета входа под учетной записью пользователя root при использовании команды su , можно сделать следующее:

  1. Отредактировать файл /etc/security/access.conf , добавив строку root: ALL .
  2. Отредактировать файл /etc/pam.d/system-auth , добавив в качестве второй строки account required pam_access.so .
  3. Отредактировать файл /etc/pam.d/su и сделать первой строкой этого файла строку account include system_auth .

Эти действия, конечно же, должны производиться программой enable_root_login . После проверки серийного номера USB-устройства на принадлежность администратору, программа должна убрать все сделанные изменения в файлах, а в том случае, если присоединенное устройство не принадлежит администратору, произвести все вышеприведенные действия над файлами.

Эти действия не спасут от входа под учетной записью пользователя root в однопользовательском режиме, тем не менее, вы можете установить пароль на загрузчик GRUB для предотвращения простого доступа к однопользовательскому режиму.

Для получения информации о серийном номере устройства, названии устройства, идентификаторе поставщика, названии производителя и других параметрах можно использовать следующую команду: udevinfo -a -p /sys/block/sdb

В новейших дистрибутивах программы udevinfo может не быть - в этом случае следует использовать udevadm вместо udevinfo .

Отключить все USB-порты

BUS=="usb", OPTIONS+="ignore_device"

Итогом выполнения этого правила будет отключение всех устройств, подсоединенных к USB-портам вашей системы - USB-принтеры, клавиатуры и мыши не будут работать. Будьте осторожны при использовании!

Отключить все блочные устройства, присоединенные к USB-портам

BUS=="usb", SUBSYSTEM=="block", OPTIONS+="ignore_device"

Это правило отключает распознавание блочных устройств, подсоединенных к USB-портам. Это правило может быть полезным для улучшения безопасности данных и конфиденциальности в организации.

Назначить постоянное имя файлу устройства второго IDE-диска

Замените sdb в том случае, если хотите применить правило к другому диску.

Игнорировать второй USB SCSI/IDE-диск, подключенный по USB

KERNEL=="sdb", NAME="my_spare"

BUS=="usb", KERNEL=="hdb", OPTIONS+="ignore_device"

Добавить символическую ссылку на заданный файл устройства USB-мыши

SUBSYSTEM=="input", BUS=="usb", SYSFS{serial}=="0000:00:1d.0", SYMLINK+=="MY-USB-MOUSE"

Изменить имя файла устройства на основании производителя устройства

BUS=="usb", SYSFS{manufacturer}=="JetFlash", NAME="UNIVERSE"

Это правило изменяет имя файла устройства на "UNIVERSE" в том случае, если производителем USB-накопителя является JetFlash.

Выборочно разрешить использование блочных USB-устройств при помощи специальной программы

BUS=="usb", SUBSYSTEM=="block", PROGRAM="/bin/usbc.jar", RESULT!="my", OPTIONS+="ignore_device"

В том случае, если программа выводит "my", устройство может использоваться, в противном случае устройство игнорируется.

Представим обычное утро в одной из многоэтажек спального района нашего любимого города: унитаз, душ, побриться, чай, почистить зубы, воды коту (или в любом другом порядке) - и на работу… Все на автомате и не задумываясь. До тех пор, пока из крана холодной воды - течет холдная вода, а из грячей - горячая. А бывает откроешь холодную, а оттуда - кипяток!!11#^*¿>.

Давайте разбираться.

Холодное водоснабжение или ХВС

Местная насосная станция подаёт воду в магистраль из сети водоканала. Большая подающая труба входит в дом и заканчивается задвижкой, после которой идёт водомерный узел.

Если говорить коротко, то водомерный узел состоит из двух задвижек, сетчатого фильтра и счётчика.



В некоторых есть дополнительно обратный клапан

и обвод водомера.

Обвод водомера представляет из себя дополнительный счётчик с задвижками, который может питать систему, если основной водомер обслуживается. После счётчиков вода подаётся в домовую магистраль


где распределяется по стоякам, которые ведут воду в квартиры по этажам.



Какое давление в системе?

9-ти этажки

Дома высотой до 9 этажей имеют нижний розлив снизу вверх. Т.е. от водомера по большой трубе вода уходит по стоякам до 9-го этажа. Если у водоканала настроение хорошее, то на вводе нижней зоны должно быть примерно 4 кг/см2 . С учётом падения давления в один килограмм на каждые 10 метров водяного столба жители 9-го этажа получат приблизительно 1 кг давления, что считается нормой. На практике же в старых домах давление на вводе составляет всего 3,6 кг. И жители 9го этажа довольствуются ещё меньшим давлением чем 1кг/см2

12-20 этажей

Если дом выше 9-ти этажей, например 16 этажей, то такая система делится 2 зоны. Верхняя и нижняя. Где для нижней зоны сохраняются те же условия, а для верхней давление поднимают примерно до 6 кг. Чтобы воду поднять на самый верх в подающую магистраль, а с ней вода стояками идёт до 10-го этажа. В домах выше 20-ти этажей подача воды может делится на 3 зоны. При такой схеме подачи, вода в системе не циркулирует, стоит на подпоре. В квартире многоэтажки в среднем мы получаем давление от 1 до 4 кг. Бывают и другие значения но сейчас мы их рассматривать не будем.

Горячее водоснабжение или ГВС

В некоторых малоэтажных домах горячая вода подключена по такой же схеме, стоит на подпоре без циркуляции, этим и объясняется то, что при открытии крана с горячей водой, какое-то время идёт холодная, остывшая вода. Если взять тот же дом в 16 этажей то в таком доме система ГВС устроена иначе. Горячая вода как и холодная так же подаётся в дом по большой трубе, и после счётчика идёт в домовую магистраль

которая поднимает воду, на чердак где она распределяется по стоякам и опускается в самый низ в обратную магистраль. Кстати, счётчики ГВС считают не только объём утерянной (потреблённой) воды в доме. Эти счётчикитак же считают потери температуры (гигоколории)

Температура теряется при проходе воды через квартирные полотенцесушители, которые и играют роль стояков.

При такой схеме, горячая вода всегда циркулирует. Стоит вам открыть кран, горячая вода уже здесь. Давление в такой системе примерно 6-7 кг. на подаче и чуть ниже на обратке для обеспечения циркуляции.

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

HotPlug - горячее подключение) - термины означающие отключение или подключение электронного оборудования в/к (компьютерной) системе во время её работы без выключения питания и остановки (системы) (HotPlug), а также замену (переподключение) блока в целом (Hot Swap ). Также существует термин, обозначающий противоположность горячей замене - Холодная замена , то есть все (пере)подключения производятся после остановки системы и снятия напряжения (остаточного потенциала).

Оборудование делится по этому принципу на допускающее горячую замену и не допускающее .

История

Ранее оборудование, предназначенное для подключением во время работы, связанного с заменой, использовалось только в дорогих системах и считалось сложным в проектировании. В последнее время подобные системы стали распространенными даже на недорогих компьютерах.

  • Предназначены для горячей замены и, следовательно, поддерживают горячую замену стандарты PCMCIA , USB , FireWire , Fibre Channel и eSATA.
    Среди устройств этого типа - флеш-накопители , некоторые жесткие диски в том числе для массивов в серверах, карты расширения форматов PCI-X , PCI Express , ExpressCard (PCMCIA, также ранее называемые PC Cards), находящие применение в ноутбуках и даже некоторые блоки питания.
  • Не поддерживает полноценную горячую замену дисковые интерфейсы SATA и полностью не поддерживает протокол IDE (IDE поддерживает горячее подключение) .

Конструкция системы

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

Некоторые схемы горячей замены требуют предварительно выполнения команды на отсоединение, что упрощает их конструкцию, однако угрожает целостности данных, если устройство не будет отсоединено правильным способом или в нем возникнет ошибка.

Более сложные схемы обладают запасом избыточности и легко восстанавливают данные при внезапном отключении устройства.

Термин «горячая замена» используется в двух значениях. С одной стороны, он обозначает возможность отсоединить или присоединить устройство без отключения питания. С другой стороны, он также может подразумевать еще и автоматическое определение устройства при подсоединении. Первое значение термина распространяется на интерфейсы RS-232 , FireWire и простейшие реализации SCSI , второе значение - на USB, FireWire, PCI Express и сложные варианты SCSI.

Конструкция гнезда

Крайние контактные площадки питания сделаны длиннее внутренних сигнальных

В большинстве современных устройств, допускающих горячую замену, используются подвижные контакты. Один из них делается длиннее других, чтобы первым входить в контакт с присоединяемой частью, через него подключается заземляющий провод. Остальные контакты делаются короче, всего может быть до 3 различных длин. Задержка между подключением первого контакта и последующих составляет от 25 до 250 миллисекунд.

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

Вот пример типичной последовательности подключения:

  1. Замыкаются наиболее длинные контакты (заземление). Тем самым достигается электрическая безопасность соединения и защита от статического заряда.
  2. Замыкаются длинные или средние контакты предварительного питания. Заряжаются входные контуры цепей питания.
  3. Подключаются короткие контакты питания.
  4. Соединение считается установленным. Включается сигнал инициализации питания.
  5. Цепь мягкого включения питания подает напряжение на устройство.
  6. Задержка в десятки миллисекунд.
  7. Цепь питания закончила мягкое подключение. Выключается сигнал инициализации питания.
  8. Устройство начинает полноценную работу.

Особую трудность представляет соединение нескольких устройств, так как подсоединение второго, третьего устройства может нарушать работу уже подключенного. Для борьбы с этим явлением используют фильтры в выходных цепях или временное логическое отключение передачи данных.

Горячее подключение в программном обеспечении

Термин «горячее подключение» также используется применительно к программному обеспечению и означает возможность изменять программу без остановки ее выполнения. Такую возможность поддерживают лишь несколько языков программирования , включая Lisp , Erlang и Smalltalk . Язык Java поддерживает эту возможность только в процессе работы отладчика (Java Platform Debugger Architecture, JPDA).

Предметно ориентированный язык программирования 1С v8 предоставляет возможность изменять код при работающей программе. (http://v8.1c.ru/overview/release_8_1_5/administration.htm раздел "Обновление частей конфигурации"). Так как компиляция отдельных модулей происходит в момент исполнения программы, и при изменении модуля он компилируется в сеансе заново, это не совсем "горячее подключение".Нужно заново создать сеанс, чтобы изменения вступили в силу, и только для этого пользователя (другим надо перезапустить новый сеанс). В версии v7 эта возможность также присутствовала при использовании дополнительных программных средств (http://openconf.1cpp.ru/vk/turbomd/) и штатной командой #ЗагрузитьИзФайла....(требуется только заново открыть форму или отчет). Вообще при использовании интерпретируемых языков программирования (с сохранением текстов программ внутри модулей) " горячее подключение" реализуется просто заменой текстов.

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

Динамические устройства

Наиболее частое использование значение термина "горячее подключение" происходит при обсуждении того факта, что большинство всех компьютерных систем теперь может обрабатывать устройства, которые появляются или исчезают, когда система включена. Это очень отличается от компьютерных систем лишь несколько лет назад, когда программисты знали, что им необходимо сканировать все устройства только во время загрузки и им никогда не приходилось беспокоиться о своих устройствах, исчезающих при отключении питания для всей машины. Теперь, с появлением USB, CardBus PCMCIA, IEEE1394 и PCI контроллеров горячего подключения ядру Linux необходимо иметь способность работать надежно, независимо от того, какое оборудование добавляется или удаляется из системы. Это ложится дополнительным бременем на автора драйвера устройства, поскольку теперь они должны всегда работать с устройством, внезапно вырываемым из подчинения без предварительного уведомления.

Каждый тип шины обрабатывает потерю устройства по-разному. Например, когда PCI, CardBus или PCMCIA устройство удаляется из системы, это обычно происходит до того, как драйвер был уведомлен об этом действии через свою функцию remove . Прежде, чем это случается, все чтения из PCI шины возвращают все биты установленными. Это означает, что драйверам необходимо всегда проверять значение данных, которые они прочитали из шины PCI и быть в состоянии должным образом обработать значение 0xff .

Пример этого можно увидеть в драйвере drivers/usb/host/ehci-hcd.c , который представляет собой PCI драйвер для платы контроллера USB 2.0 (High-Speed). Он имеет следующий код в своём основном цикле установления связи для обнаружения, что плата контроллера была удалена из системы:

result = readl(ptr);

if (result == ~(u32)0) /* карта удалена */

Return -ENODEV;

Для драйверов USB, когда устройство, с которым связан USB драйвер удалено из системы, все ожидающие urb-ы, которые были отправлены в устройство, сначала заканчиваются неудачей с ошибкой -ENODEV . Драйвер должен распознать эту ошибку и надлежащим образом очистить весь ожидающий ввод/вывод, если он имеет место.

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

Утилита /sbin/hotplug

Как упоминалось ранее в этой главе, когда устройство добавляется или удаляется из системы, генерируется "событие горячего подключения". Это означает, что ядро вызывает программу пользовательского пространства /sbin/hotplug . Эта программа, как правило, очень небольшой скрипт bash, который просто передаёт выполнение списку других программ, которые находятся в дереве каталога /etc/hotplug.d/ . Для большинства дистрибутивов Linux этот скрипт выглядит следующим образом:

DIR="/etc/hotplug.d"

for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do

If [ -f $I ]; then

Test -x $I && $I $1 ;

done

exit 1

Другими словами, скрипт ищет все программы имеющие суффикс .hotplug , которые могут быть заинтересованы в этом событии и вызывает их, передавая им ряд различных переменных окружения, которые были установлены ядром. Более подробная информация о работе скрипта /sbin/hotplug можно найти в комментариях к программе и на странице руководства hotplug(8) .

Как упоминалось ранее, /sbin/hotplug вызывается при создании или уничтожении kobject-а. Программа горячего подключения вызывается с одним аргументом командной строки, представляющим название для данного события. Основное ядро и определённая подсистема также участвуют в установке набора переменных окружения (смотрите ниже) с информацией о том, что только что произошло. Эти переменные используются в программах горячего подключения, чтобы определить, что только что произошло в ядре, и есть ли какое-то специальное действие, которое должно иметь место.

Аргумент командной строки, переданный в /sbin/hotplug , является именем, связанным с этим событием горячего подключения, как определено kset-ом, назначенным для kobject. Это имя может быть установлено вызовов функции name , которая является частью структуры hotplug_ops kset-а, описанной ранее в этой главе; если эта функция отсутствует или никогда не вызывалась, используется название самого kset-а.

Переменными окружения по умолчанию, которые всегда устанавливаются для программы /sbin/hotplug , являются:

ACTION

Строка add (добавить) или remove (удалить), в зависимости от того, был ли данный объект только что создан или уничтожен.

DEVPATH

Путь к каталогу в файловой системе sysfs, который указывает на kobject, который в настоящее время либо создан, либо уничтожен. Обратите внимание, что точка монтирования файловой системы sysfs не добавлена к этому пути, так что её определение предоставлено сделать программе пользовательского пространства.

SEQNUM

Порядковый номер для этого события горячего подключения. Порядковый номер представляет собой 64-х разрядное число, которое увеличивается с каждым генерируемым событием горячего подключения. Это позволяет пользовательскому пространству отсортировать события горячего подключения в том порядке, в котором их генерирует ядро, так как для программ пространства пользователя возможна работа не по порядку.

SUBSYSTEM

Та же строка, передаваемая в качестве аргумента командной строки, как описано выше.

Ряд различных шинных подсистем для вызова /sbin/hotplug добавляют свои собственные переменные окружения, когда связанное с шиной устройство было добавлено или удалено из системы. Они делают это в своём обратном вызове горячего подключения, указанном в struct kset_hotplug_ops , назначенной этой шине (как описано в разделе "Операции горячего подключения"). Это позволяет пользовательскому пространству иметь возможность автоматической загрузки необходимых модулей, которые могут быть необходимы для управления устройством, которое было обнаружено на шине. Вот список разных типов шин и переменных окружения, которые они добавляют для вызова /sbin/hotplug .

IEEE1394 (FireWire)

Все устройства на шине IEEE1394, также известной как FireWire, имеют параметр имени для /sbin/hotplug и переменная окружения SUBSYSTEM устанавливается в значение ieee1394 . Подсистема Ieee1394 также всегда добавляет следующие четыре переменные окружения:

VENDOR_ID

24-х разрядный идентификатор поставщика для устройства IEEE1394.

MODEL_ID

24-х разрядный идентификатор модели для устройства IEEE1394.

GUID

64-х разрядный GUID для этого устройства.

SPECIFIER_ID

24-х разрядное значение, определяющее владельца спецификации протокола для этого устройства

VERSION

Значение, которое определяет версию спецификации протокола для этого устройства.

Сеть

Все сетевые устройства создают сообщение горячего подключения, когда устройство зарегистрировано или разрегистрировано в ядре. Вызов /sbin/hotplug имеет параметр имени и переменная окружения SUBSYSTEM устанавливается в значение net и добавляет только следующую переменную окружения:

INTERFACE

Имя интерфейса, который был зарегистрирован или разрегистрирован из ядра. Примерами его являются lo и eth0 .

PCI

Любые устройства на шине PCI имеют параметр имени и переменная окружения SUBSYSTEM устанавливается в значение pci . Подсистема PCI также всегда добавляет следующие четыре переменные окружения:

PCI_CLASS

Номер PCI класса для данного устройства, в шестнадцатеричном виде.

PCI_ID

Идентификаторы поставщика и устройства PCI для данного устройства, в шестнадцатеричном виде, объединенные в формате vendor:device .

PCI_SUBSYS_ID

Идентификаторы поставщика и подсистемы PCI, объединенные в формате subsys_vendor:subsys_device .

PCI_SLOT_NAME

"Имя" слота PCI, которое даётся устройству ядром в формате domain:bus:slot:function . Примером может быть 0000:00:0d.0 .

Ввод

Для всех устройств ввода (мышь, клавиатуры, джойстики и так далее), сообщение горячего подключения генерируется, когда устройство добавляется и удаляется из ядра. Параметр /sbin/hotplug и переменная окружения SUBSYSTEM устанавливаются в значение input . Подсистема ввода также всегда добавляет следующие переменные окружения:

PRODUCT

Многозначная строка, перечисляющая значения в шестнадцатеричном виде, без ведущих нулей, в формате bustype:vendor:product:version .

Следующие переменные окружения могут присутствовать, если устройство их поддерживает:

NAME

Название устройства ввода, как задано устройством.

PHYS

Физический адрес устройства, который подсистема ввода дала этому устройству. Он должен быть стабильным, зависящим от местонахождения шины, на которую было подключено устройство.

Все они происходят из дескриптора устройства ввода и устанавливаются в соответствующие значения, если данное устройство ввода его поддерживает.

USB

Любые устройства на шине USB имеют параметр имени и переменная окружения SUBSYSTEM устанавливается в значение usb . Подсистема USB также всегда добавляет следующие переменные окружения:

PRODUCT

Строка в формате idVendor/idProduct/bcdDevice

TYPE

Строка в формате bDeviceClass/bDeviceSubClass/bDeviceProtocol , которая определяет эти зависимые от устройства USB поля.

Если поле bDeviceClass установлено в 0, также устанавливается следующая переменная окружения:

INTERFACE

Строка в формате bInterfaceClass/bInterfaceSubClass/bInterfaceProtocol , которая определяет эти зависимые от устройства USB поля.

Если выбрана опция сборки ядра CONFIG_USB_DEVICEFS , который выбирает, что файловая система usbfs будет собрана в ядре, также устанавливается следующая переменная окружения:

DEVICE

Строка, которая показывает, где находится устройство в файловой системе usbfs . Эта строка имеет формат /proc/bus/usb/USB_BUS_NUMBER/ SB_DEVICE_NUMBER , в котором USB_BUS_NUMBER является трёхзначным номером шины USB, к которой подключено устройство, а USB_DEVICE_NUMBER является трёхзначным номером, который был назначен ядром для этого USB устройства.

SCSI

Все SCSI устройства создают событие горячего подключения, когда SCSI устройство создано или удалено из ядра. Вызов /sbin/hotplug имеет параметр имени и переменная окружения SUBSYSTEM установлена в значение scsi для каждого SCSI устройства, которое добавляется или удаляется из системы. Никакие дополнительные переменные окружения не добавляться системой SCSI, но она упоминается здесь потому, что существует специальный SCSI скрипт в пространстве пользователя, который может определить, что SCSI драйверы (дисковода, ленточного накопителя, обычный и т.д.) должны быть загружены для указанного устройства SCSI.

Установочные станции ноутбуков

Если поддерживающая Plug-and-Play установочная (док) станция ноутбука добавлена или удалена из работающей системы Linux (путём включения ноутбука в станцию, или его удаления), создаётся событие горячего подключения. Вызов /sbin/hotplug имеет параметр имени и переменная окружения SUBSYSTEM установлена в значение dock . Никакие другие переменные окружения не установлены.

S/390 и zSeries

На архитектуре S/390, архитектура канальной шины поддерживает широкий спектр оборудования, каждое из которых генерирует события /sbin/hotplug , когда они добавляются или удаляются из виртуальной системы Linux. Все эти устройства имеют для /sbin/hotplug параметр имени и переменная окружения SUBSYSTEM установлена в значение dasd . Никакие другие переменные окружения не установлены.

Использование /sbin/hotplug

Теперь, когда ядро Linux вызывает /sbin/hotplug для каждого добавляемого или удаляемого из ядра устройства, чтобы воспользоваться этим, в пользовательском пространстве были созданы ряд очень полезных инструментов. Двумя из наиболее популярных инструментов являются скрипты Linux горячего подключения и udev .

Скрипты горячего подключения Linux

Скрипты горячего подключения Linux начались в качестве самого первого пользователя вызова /sbin/hotplug . Эти скрипты смотрят на разные переменные окружения, которые ядро устанавливает для описание устройства, которое было только что обнаружено и затем пытаются найти модуль ядра, который соответствует этому устройству.

Как уже говорилось ранее, когда драйвер использует макрос MODULE_DEVICE_TABLE , программа, depmod , принимает эту информацию и создаёт файлы, находящиеся в /lib/module/KERNEL_VERSION/modules.*map . Знак * является различием, в зависимости от типа шины, которую поддерживает драйвер. В настоящее время файлы модульной карты создаются для драйверов, которые работают с устройствами с поддержкой подсистем PCI, USB, IEEE1394, INPUT, ISAPNP и CCW.

Скрипты горячего подключения используют эти текстовые файлы модульной карты для определения модуля, чтобы попытаться загрузить его для поддержки устройства, которое было недавно обнаружено ядро. Они загружают все модули и не останавливаться на первом соответствии, с тем, чтобы позволить ядру выбрать, какой модуль лучше подходит. Эти скрипты не выгружают все модули при удалении устройств. Если бы они попытались это сделать, они могли бы случайно выключить устройства, которые также управляются тем драйвером устройства, который был удалён.

Обратите внимание, теперь, когда программа modprobe может читать информацию MODULE_DEVICE_TABLE непосредственно из модулей без необходимости файлов модульной карты, скрипты горячего подключения могут быть сокращены до небольшой обёртки вокруг программы modprobe .

udev

Одной из основных причин для создания единой модели драйвера в ядре было позволить пользовательскому пространству управлять деревом /dev в динамическом стиле. Раньше это было сделано в пользовательском пространстве реализацией devfs , но эта кодовая база постепенно сгнила из-за отсутствия активного сопровождающего и некоторых неисправимых базовых ошибок. Несколько разработчиков ядра поняли, что если бы всю информацию устройства экспортировать в пространство пользователя, оно могло бы выполнять всё необходимое управление деревом /dev .

devfs имеет в своём дизайне некоторые весьма существенные недостатки. Она требует от каждого драйвера устройства быть измененным для её поддержки и она требует от драйвера устройства указать имя и местоположение в дереве /dev , где он помещён. Она также не надлежащим образом обрабатывает динамические старшие и младшие номера, заставляя политику именования устройств принадлежать ядру, а не пространству пользователя. Разработчики ядра Linux действительно ненавидят иметь политику в ядре и так как политика именования devfs не следует спецификации Linux Standard Base, это действительно их беспокоит.

С тех пор, как ядро Linux начало устанавливаться на огромных серверах, многие пользователи столкнулись с проблемой, как управлять очень большим количеством устройств. Массивы дисковых накопителей из более 10.000 уникальных устройств представляют очень сложную задачу обеспечения того, чтобы каждый диск всегда был проименован тем же точным именем, где бы он ни был помещен в дисковом массиве или когда он был обнаружен ядром. Эта та же проблема, от которой страдают пользователи настольных компьютеров, пытающиеся подключить два USB принтера к своей системе и затем понимающие, что они не имели возможности обеспечить, чтобы принтер, известный как /dev/lpt0 , не был бы изменён и отнесён к другому принтеру в случае перезагрузки системы.

Таким образом, был создан udev . Он опирается на всю информацию устройства, экспортируемую в пользовательское пространство через sysfs и на уведомление через /sbin/hotplug , что устройство было добавлено или удалено. Политические решения, такие, как какое имя дать устройству, могут быть указаны в пространстве пользователя, вне ядра. Это гарантирует, что политика именования удалена из ядра и позволяет большую степень гибкости при именовании каждого устройства.

Для получения дополнительной информации по использованию udev и как его настроить, пожалуйста, смотрите документацию, которая поставляется включённой в пакет udev в вашем дистрибутиве.

Всё, что драйверу устройства необходимо сделать, чтобы udev правильно с ним работал, является обеспечение того, чтобы любые старшие и младшие номера, присвоенные устройству, управляемому драйвером, экспортировались в пользовательское пространство через sysfs. Для любого драйвера, который использует подсистему для присвоения ему старшего и младшего номера, это уже сделано подсистемой и драйвер не должен делать никакой работы. Примерами подсистем, которые делают это, являются подсистемы: tty, misc, usb, input, scsi, block, i2c, network и frame buffer. Если ваш драйвер самостоятельно обрабатывает получение старшего и младшего номера через вызов функции cdev_init или устаревшей функции register_chrdev , драйвер должен быть изменён, чтобы udev работал с ним должным образом.

udev ищет в дереве /class/ в sysfs файл с именем dev , чтобы определить, какой старший и младший номер присвоен данному устройству, когда оно вызывается ядром через интерфейс /sbin/hotplug . Драйверу устройства просто необходимо создать такой файл для каждого устройства, которым он управляет. Как правило, интерфейс class_simple - самый простой способ это сделать.

Как уже упоминалось в разделе "Интерфейс class_simple" , первым шагом в использовании интерфейса class_simple является создание struct class_simple с помощью вызова функции class_simple_create :

static struct class_simple *foo_class;

foo_class = class_simple_create(THIS_MODULE, "foo");

if (IS_ERR(foo_class)) {

Printk(KERN_ERR "Error creating foo class.\n");

Goto error;

Этот код создаёт каталог в sysfs в /sys/class/foo .

Всякий раз, когда драйвер находит новое устройство и вы присваиваете ему младший номер, как описано в Главе 3 , драйвер должен вызывать функцию class_simple_device_add :

class_simple_device_add(foo_class, MKDEV(FOO_MAJOR, minor), NULL, "foo%d", minor);

Этот код вызывает создание в /sys/class/foo поддиректории, названной fooN , где N - младший номер для этого устройства. В этом каталоге создаётся один файл, dev , и это именно то, что необходимо udev , чтобы создать узел устройства для вашего устройства. Когда ваш драйвер освобождается от устройства и вы отказываетесь от младшего номера, который был за ним закреплён, для удаления записи в sysfs для этого устройства необходим вызов class_simple_device_remove :

class_simple_device_remove(MKDEV(FOO_MAJOR, minor));

Позже, когда весь ваш драйвер выключается, для удаления класса, который вы первоначально создали вызовом class_simple_create , является необходимым вызов class_simple_destroy :

class_simple_destroy(foo_class);

Файл dev , который создаётся вызовом class_simple_device_add , состоит из старшего и младшего номера, разделенных символом : . Если ваш драйвер не хочет использовать интерфейс class_simple , потому что вы хотите предоставить для подсистемы другие файлы внутри каталога класса, используйте функцию print_dev_t для правильного формата старшего и младшего номера для каждого устройства.

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

В чем особенность водоснабжения многоквартирного дома?

Обеспечить водой строение с большой этажностью очень сложно. Ведь дом состоит из множества квартир с отдельными санузлами и сантехническими приборами. Иными словами схемы водоснабжения в многоквартирных домах - это некий комплекс с отдельными разводками труб, регуляторов давления, фильтрами и учетным оборудованием.

Чаще всего жители многоэтажек пользуются водой центрального водоснабжения. С помощью водопровода она подается в отдельные сантехнические приборы под определенным давлением. Зачастую вода проходит очистку с помощью хлорирования.

Состав системы центрального водоснабжения

Централизованные схемы водоснабжения в многоэтажных домах состоят из распределительной сети, водозаборных сооружений и очистительных станций. Прежде чем попасть в квартиру, вода проходит долгий путь от насосной станции к водоему. Только после очистки и обеззараживания вода направляется в распределительную сеть. С помощью последней вода подается к приборам и оборудованию. Трубы центральной схемы горячего водоснабжения многоэтажного дома могут быть выполнены из меди, металлопластика и стали.

Последний вид материала практически не используется в современных постройках.

Типы схем водоснабжения

Система водоснабжения бывает трех типов:

  • коллекторная;
  • последовательная;
  • комбинированная (смешанная).

В последнее время, когда в квартирах все чаще встречается большое количество сантехнического оборудования, используют коллекторную схему разводки . Она является оптимальным вариантом нормального функционирования всех приборов. Схема горячего водоснабжения коллекторного типа исключает перепады давления в разных точках подключения. Это является главным преимуществом данной системы.

Если рассматривать схему более подробно, то можно сделать вывод, что никаких проблем с использованием сантехнического оборудования по назначению в одно и то же время не будет. Суть подключения такова, что каждый отдельный потребитель воды соединяется с коллекторами стояка холодного и горячего водоснабжения изолированно. Трубы не имеют множества разветвлений, поэтому вероятность протечки очень мала. Такие схемы водоснабжения в многоэтажных домах просты в обслуживании, однако стоимость оборудования достаточно высокая.

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

Последовательная схема горячего водоснабжения многоэтажного дома - это самый простой способ разводки. Такая система проверена временем, она вводилась в эксплуатацию еще во времена СССР. Суть ее устройства в том, что трубопровод холодного и горячего водоснабжения проводят параллельно друг другу. Инженеры советуют использовать данную систему в квартирах с одни санузлом и небольшим количеством сантехнического оборудования.

В народе такую схему горячего водоснабжения многоэтажного дома называют тройниковой. То есть от главных магистралей идут разветвления, которые соединяются друг с другом тройниками. Несмотря на простоту монтажа и экономию расходного материала, данная схема имеет несколько основных недостатков:

  1. В случае протечке трудно искать поврежденные участки.
  2. Невозможность подачи воды к отдельному сантехническому прибору.
  3. Трудность доступа к трубам в случае поломки.

Горячее водоснабжение многоквартирного дома. Схема

Разводки труб делятся на два типа: к стояку горячего и холодного водоснабжения. Кратко их называют ХВС и ГВС. Особого внимания заслуживает система горячего водоснабжения многоквартирного дома. Схема сетей ГВС состоит из двух типов проводок - нижней и верхней. Чтобы сохранить высокую температуру в трубопроводе часто используют закольцованные проводки. Гравитационный напор заставляетводу циркулировать в кольце, несмотря на отсутствие водоразбора. В стояке она охлаждается и попадает в нагреватель. Вода с большей температурой подается в трубы. Так и происходит непрерывная циркуляция теплоносителя.

Тупиковые магистрали также не редкость, но чаще всего их можно встретить в хозяйственных помещениях промышленных объектов и в небольших жилых зданиях с малой этажностью. Если отбор воды планируется непостоянно, то применяют циркуляционный трубопровод. Инженеры советуют использовать горячее водоснабжение в многоквартирных домах (схема была рассмотрена выше) с этажностью не более 4.Трубопровод с тупиковым стоякомтакже встречается в общежитиях, санаториях и гостиницах. Трубы тупиковой сети обладают меньшей металлоемкостью, поэтому остывают быстрее.

Сети ГВС в своем составе имеют горизонтальный магистральный трубопровод и распределительные стояки. Последние обеспечивают разводки труб по отдельным объекта - квартирам. ГВС монтируют в максимальной близости к сантехническому оборудованию.

Для построек с большой протяженностью магистральных труб используют схемы с циркуляционным и закольцованным по дающим трубопроводами. Обязательным условием является установка насоса для поддержания циркуляции и постоянного водообмена.

Двухтрубная схема ГВС — Фото 07

Современные строители и инженеры все чаще прибегают к использованию двухтрубных систем ГВС. Принцип работы заключается в том, что насос забирает воду из обратной магистрали и подает ее в нагреватель.Такой трубопровод обладает большей металлоемкостью и считается наиболее надежным для потребителей.

В продолжение темы:
Решения

Сейчас мало юзеров используют DVD-диски для установки ОС на компьютер. Даже компания Microsoft приняла решение продавать новую операционную систему не на «болванках», а на...

Новые статьи
/
Популярные