Домой / Работа в Интернете / Общие сведения о спецификации интерфейса IPMI. Реализация технологии Intel vPro в материнских платах компании GIGABYTE UNITED

Общие сведения о спецификации интерфейса IPMI. Реализация технологии Intel vPro в материнских платах компании GIGABYTE UNITED

Удаленное администрирование с помощью технологии Intel® AMT

Удаленное администрирование - штука хорошая в первую очередь из-за экономии времени: сотруднику ИТ-отдела не нужно бегать к чужому рабочему месту (которое может находиться на приличном расстоянии), тратя на это свое и чужое время: можно сразу подключиться к удаленному ПК с рабочего места специалиста по обслуживанию. Удаленное управление (УУ) позволяет решать большое количество проблем с ПО и настройками системы. Однако традиционное УУ работоспособно только в том случае, когда операционная система (ОС) функциональна, драйвер сетевого адаптера работает и, обеспечено подключение к локальной сети. Достаточно сбоя в работе хотя бы одного из этих звеньев и удаленно уже ничего сделать нельзя. Проблемы вне ОС, например, в BIOS, так тоже не устранишь. Как и причины, мешающие загрузке системы. Да, кстати: не забудем, что для традиционного УУ компьютер должен быть включен.

Технология Intel® AMT в этом плане на голову выше: она реализована на аппаратном уровне, поэтому компьютером можно управлять даже при неработоспособной ОС. Можно удаленно запустить систему, настроить параметры BIOS, загрузиться с внешнего накопителя для установки и развертывания ОС и ПО, переустановить сетевые драйверы и т.д. Фактически, с помощью АМТ можно решить любые программные проблемы: если «железо» работает нормально, то все остальное выполнимо.

Немного о технической реализации Intel АМТ

Intel® AMT присутствует в решениях Intel уже почти десять лет (впервые она появилась в 2006 году) и все это время активно развивалась. Начиная с 6-й версии технология предоставляет полноценный KVM (keyboard-video-mouse), то есть удаленный оператор получает картинку с монитора и может управлять удаленным ПК с помощью клавиатуры и мыши, как обычно. Последние версии, кстати говоря, поддерживают передачу картинки с разрешением FullHD и выше. АМТ способна передавать управление с удаленной системы всегда, когда включен компьютер: будь то загрузка ОС, выбор загрузчика, загрузка на уровне BIOS или управление параметрами BIOS.

Правда, у аппаратной реализации есть оборотная сторона: нужно выбирать такоке оборудование, которое поддерживает АМТ. И думать об этом следует при закупке оборудования, а не при возникновении аварийной ситуации. АМТ является частью набора vPro, для поддержки которого требуется специальная версия процессора, платформы и сетевого адаптера. Ее поддерживают некоторые чипсеты Intel профессиональных серий, индексы которых заканчиваются на «7», и некоторые модели процессоров Intel ® Core ™ i5 и i7. Однако проще ориентироваться на наличие логотипа vPro.

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

Наконец, Intel ® АМТ использует распространенный протокол управления VNC, под который существует много продуктов. В качестве ПО для удаленного рабочего стола можно использовать следующие продукты:

1) TightVNC Viewer (Windows);

2) Real VNC Viewer (Windows);

3) VNC Viewer Plus (Windows);

4) Ultra VNC (Windows);

5) SSVNC (Linux);

6) Remmina (Linux);

7) KRDC (Linux);

8) Real VNC Viewer for Android (Android);

9) AndroidVNC Viewer (Android);

10) akRDC Free VNC Viewer (Android);

11) Remote Ripple-VNC (Android);

12) и др.


Как видим, список VNC-клиентов обширен, и важно что поддержана работа в Windows, Linux и Android. Это позволяет осуществлять УУ с любого устройства. То есть технология Intel ® AMT имеет широкую поддержку и не привязана к конкретным ОС.

Кроме того, возможно удаленное управление компьютером с помощью портала meshcentral.com. Впрочем, об этом подробно рассказывается в видеоролике, посвященном АМТ, поэтому не будем повторяться.

Основные преимущества

Итак, коротко взглянем на основные преимущества технологии по сравнению с распространенными средствами УУ:

В отличие от программных средств AMT работает и при нефункциональной ОС, позволяет настраивать BIOS и пр.;

Имеет встроенные средства безопасности и надежные алгоритмы шифрования;

Является бесплатной, тогда как многие программные средства удаленного администрирования - платные. Хотя здесь следует учитывать, что ее стоимость включена в стоимость компонентов с логотипом vPro;

Позволяет включать и выключать компьютер;

Позволяет загрузиться с удаленного носителя, в том числе для установки или развертывания ОС и ПО.

В общем, по совокупности возможностей АМТ далеко обходит программные решения

Сценарии использования

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

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

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

Развертывание ОС и ПО перестает быть проблемой, т.к. АМТ поддерживает загрузку компьютера с использованием удаленного образа. Если физически компьютер подключен к проводной сети, то специалист может удаленно включить его, загрузиться с помощью технологии IDE-R и произвести установку и настройку системы. Кстати, если необходима эта функция, то нужно внимательно ознакомиться с настройками, так как скорость удаленной загрузки может значительно отличаться от привычной.

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

Итоги

Как мы видим, у технологии Intel ® АМТ много преимуществ. Так почему же ее не используют повсеместно? Может быть для ее использования необходимо специфическое и дорогое оборудование?

На самом деле, особо критичных требований у Intel ® АМТ нет. Правда, на этапе закупки техники необходимо обратить внимание на наличие в ней поддержки vPro, а потом правильно все настроить, но и тут особых сложностей не возникает. Проводное соединение не является проблемой, так как ЛВС в современном офисе есть везде. К тому же AMT (при соблюдении некоторых простых условий) работает везде, в том числе, посредством Интернет.

    IPMI (от англ. Intelligent Platform Management Interface) - интеллектуальный интерфейс управления платформой, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ. Другими словами IPMI – это средство управления, которое реализовано независимо от основного оборудования сервера и обеспечивает его включение, выключение, сброс, удаленное подключение виртуальных мониторов, клавиатур и мышей, наблюдение за работой оборудования и оповещение о важных событиях, связанных с работоспособностью сервера. Спецификация IPMI версии 1.0 была опубликована еще в 1998г. и базировалась на подключении к модулю IPMI через последовательный интерфейс RS-232. Текущая спецификация IPMI опубликована в 2004 г. и базируется на использовании стандартного сетевого интерфейса.

Ядром системы управления серверной платформой является специализированное устройство - Baseboard Management Controller (BMC) , который практически является специализированным компьютером, встроенным в серверную платформу, имеющим свои собственные процессор, память, периферийное оборудование и операционную систему. Спецификация IPMI не задает жестких стандартов по реализации IPMI-устройств. Они могут быть выполнены в виде отдельного адаптера, могут быть распаяны непосредственно на материнской плате или выполнены в виде отдельного микроконтроллера. В настоящее время, наиболее распространены интегрированные в серверные материнские платы контроллеры BMC на базе технологии “система на одном кристалле” (System-on-Chip, SoC), позволяющие реализовать как эффективное взаимодействие с управляемой платформой, так и огромное количество функций по удаленному мониторингу, оповещению о важных событиях по e-mail или SNMP, ведению журналов и т.п.

Контроллеры BMC для серверных материнских плат подключаются к ним через системный интерфейс, названный IPMB (Intelligent Platform Management Bus/Bridge) или к другим контроллерам BMC через интерфейс IPMC (Intelligent Platform Management Chassis). Для удаленного управления оборудованием через контроллер BMC может быть использован специальный протокол прикладного уровня Remote Management Control Protocol (RMCP) , обеспечивающий работу через обычную локальную сеть. Как правило, современные контроллеры BMC обеспечивают управление серверными платформами через веб-интерфейс, а также обеспечивают удаленное подключение устройств CD/DVD и работу клавиатуры-видео-мыши по сети (IP KVM), что позволяет легко выполнять, например изменять настройки BIOS или выполнять установку операционной системы, не имея физического доступа к оборудованию сервера.

Возможности управления материнской платой через IPMI.

Рассмотрим возможности управления сервером через интерфейс IPMI на примере материнской платы Supermicro X8DTT-IBQF с интегрированным контроллером Nuvoton WPCM450 Baseboard Management Controller с поддержкой IPMI 2.0. Данный контроллер поддерживает графическое ядро с PCI-интерфейсом, устройства Virtual Media (виртуальные CD/DVD) и перенаправление клавиатуры-видео-мыши (Keyboard/Video/Mouse, KVM). Для подключения к локальной сети используется внешний контроллер Ethernet, распаянный на материнской плате. Для взаимодействия с компонентами управляемой системы используются шины управления платформой Platform Environment Control Interface (PECI) . На материнской плате имеется перемычка для отключения BMC-контроллера, если возникнет такая необходимость. Также, на ней имеется светодиод BMC LED (BMC Heartbeat LED) для индикации работоспособного состояния контроллера – зеленый мерцающий индикатор, начает, что BMC работает нормально.

Первичная настройка интерфейса IPMI выполняется в разделе Adnanced – IPMI Configuration основного BIOS.

Status of BMC состояние контроллера BMC

View BMC System Event Log - просмотр системного журнала событий (SEL), который ведется контроллером BMC.

Clear BMC System Event Log - очистка журнала событий

Set LAN Confi guration - настройка сетевой конфигурации адаптера, используемого контроллером BMC. Можно настроить на получение IP-адреса, маски и адреса шлюза автоматически по DHCP, или задать их вручную.

Set PEF Confi guration - настройка фильтра событий, регистрируемых контроллером Platform Event Filter (PEF). В данном пункте меню можно настроить реакцию контроллера на определенные события, как например, выключение питания при увеличении температуры, или снижении скорости вращения вентиляторов. По умолчанию, фильтрация событий отключена.

BMC Watch Dog Timer Action - можно настроить опрос состояния управляемой системы и ее сброс, перезагрузку или выключение питания при зависании. По умолчанию, отключено.

Основные возможности по управлению и мониторингу состояния платформы доступны через веб-интерфейс. Для подключения к модулю BMC используется любой браузер с поддержкой java, в адресной строке которого вводится IP-адрес IPMI-устройства и, после подключения, выполняется авторизация с использованием имени пользователя и пароля, указанных в документации или заданных пользовательскими настройками. Имя пользователя и пароль по умолчанию для IPMI-устройств производства Supermicro - ADMIN / ADMIN . После успешной авторизации откроется основное окно управления платформой с активированной вкладкой “System Information”:

Вкладка “Server Health” позволяет контролировать состояние оборудования сервера:

Sensor Reading - просмотр данных контролируемых датчиков

Sensor Reading with Thresholds - просмотр данных контролируемых датчиков и пороговых значений

Event Log - просмотр журнала событий

Отображаемая информация датчиков включает их имена, состояние и считанное значение. В нижней части экрана имеются кнопки Refresh - обновить данные датчиков и Show Thresholds - показать пороговые значения. С помощью подменю Select a sensor type category можно выбрать тип датчиков (температура, напряжение и т.п.). Пример отображаемой информации:

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

Вкладка Configuration позволяет выполнить настройки оповещений о состоянии оборудования, изменять сетевые параметры, настроить политику доступа к устройству IPMI.

Alerts - настройка оповещений. Можно создать до 15 записей с различными правилами оповещений. Имеется возможность задать категорию событий, по которым выполняется оповещение – информация, предупреждение, критическое событие, невосстановимое состояние. Оповещение возможно по электронной почте или через отправку SNMP trap. В первом случае, необходимо указать e-mail, на который будет отправлено письмо, при возникновении события заданной категории, во втором – IP-адрес сервера, собирающего SNMP-оповещения. При использовании оповещения через электронную почту, необходимо указать IP-адрес и порт SMTP-сервера и адрес отправителя в разделе SMTP

Разделы LDAP , Active Directory , RADIUS ,Users и SSL sertificate настраиваются в зависимости от требований безопасности доступа к IPMI-устройствам. В разделе Network можно изменить сетевые настройки IP-адрес, маску, шлюз. В разделе Ports - номера портов, которые используются при эмуляции виртуальных устройств загрузки, видеомонитора, клавиатуры и мыши. Также можно изменить номер порта для веб-доступа к устройству IPMI.

Вкладка Remote Control позволяет выполнить удаленное подключение к консоли сервера с использованием java-апплета. Необходимо учитывать, что при первом подключении, консоль может длительное время не работать, поскольку для выполнения апплета требуется запуск виртуальной машины Java. Кроме обычной эмуляции терминала, в данной программе возможно выполнение записи сеанса работы через меню Video – Capture Screen , использование программной клавиатуры (Keyboard – Soft Keyboard ) и подключение виртуальных носителей (Media – Virtual Media Wizard )

Вкладка Remote Control используется для включения, выключения и сброса сервера. Maintenance - для обновления прошивки и принудительного сброса IPMI-устройства.     Для управления платформами через интерфейс IPMI используется программное обеспечение, разрабатываемое производителями оборудования или открытое ПО.

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

Технология эта вполне официальна, она называется Intel vPro и реализована аппаратно в процессорах Intel Sandy Bridge и Ivy Bridge. На самом деле кроме процессора требуется еще и соответствующий чипсет - но в этом нет проблемы, ибо чипсеты давно поставляет сам Интел, ха-ха. В идеале в материнскую плату должна быть встроена гигабитная сетевая карта и видеоадаптер, которые способны на низкоуровневую работу (а еще более в идеале - и такой же WiFi). И опять же не волнуйтесь - Intel всё это реализовал и сделал стандартом де-факто. Наиболее дальновидных ребят давно удивляло, зачем в десктопной материнке встроен WiFi интерфейс, не нужный в 99% десктопов - так вот он встроен для дела, чтобы можно было получить доступ к компьютеру, даже не подключаясь к локальной сети, и даже к компьютеру, который стоит в отдельной комнате ни к какой сети не подключенный.

Разумеется, то, что вы там в БИОСе выключили этот вайфай - никак доступу не помешает. Для Intel vPro все интерфейсы всегда работают. Более того - "выключенный" компьютер для Intel vPro тоже работает (хоть и не светит лампочками об этом). Единственный способ отрубить компьютер от Intel vPro - это обесточить его, удалив шнур питания из розетки (но по понятным причинам этот номер не пройдет с ноутбуками - батареи-то на большинстве современных аппаратов несъемные, и это не просто так сделано).

Сеанс связи шифруется, а доступ к компьютеру можно получить через консоль (serial over LAN), web-интерфейс или VNC. Web-интерфейс обладает неприметным рабочим дизайном (который при этом отлично отображается на планшетах) и позволяет получать статистику о железе, его состоянии и перезапускать компьютер, настраивать сетевой интерфейс и политики доступа к AMT, смотреть историю событий - например, узнать, почему же у секретарши не грузится система, не подходя к её компьютеру:

При подключении через консоль и VNC можно делать уже совсем всё: vPro предоставляет полноценный KVM с локальной машины на удалённую с поддержкой разрешения экрана до 1920х1200 и возможностью посмотреть, как загружается система от инициализации BIOS до непосредственной загрузки ОС. При этом даже при перезагрузке системы не происходит отключения! Единственное что для доступа в BIOS не получится просто зажать Delete при старте системы и надо будет выбрать специальный пункт «boot to BIOS». После чего в самом деле загружается BIOS:

Можно подключиться к удалённой машине по VNC даже в том случае, если там слетели драйвера сетевой карты (ведь vPro работает на более низком уровне чем ОС) и прямо через VNC поставить все драйверы.

Еще одна интересная возможность под название IDE-R позволяет загружаться с внешнего источника - как будто это внутренний жёсткий диск. То есть можно подключиться по VNC, указать образ для загрузки, и загрузиться в собственной операционной системе - так что владелец компьютера и не узнает, что его включали.

При помощи vPro работает технология Intel Anti-Theft. Если у вас украли компьютер или ноутбук, то вы можете связаться с Intel и они заброкируют его. Компьютер просто перестанет загружаться, показывая черный экран с надписью - мол, заблокировано Intel Anti-Theft, верните компьютер владельцу.

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

PS. Тут товарищ спросил - мол получается, что выключенные компы можно пинговать ?

Объясняю: в рамках Intel vPro cетевая карта слушает линию всегда, даже если компьютер "выключен". Но не всегда отвечает. То есть на вопрос «можно ли пинговать» — ответ да, можно, если это разрешить в настройках BIOS. Если не разрешить, то выключенный комп на пинг отзываться не будет, но свой порт (в общем случае это 16992) слушать будет и с Intel vPro работать будет.

Проверялось на чипсете Q45 - работает.

PPS. Cтарые чипсеты Intel и их CPU без GPU поддерживают только Serial-over-LAN часть технологии Intel vPro (то есть текстовая консоль управления работает, файлы можно скачивать, работает дистанционная загрузка операционки с удаленного диска и так далее, но не работает слежение за экраном пользователя и графическая консоль).

Для любопытных - IDE-R/SOL over TCP порт = 16994, IDE-R/SOL over TLS порт = 16995. Можете поснифить трафик в линии и посмотреть.

Ну и помните, что AMT fireware аппаратно перехватывает трафик с сетевой карты и не передает в ОС то, что касается работы vPro (порты 16992, 16993, 16994, 16995). То есть на компе с этой технологией никакие пакеты на порты 16992, 16993 и так далее вы из ОС не получите и не обнаружите. Чтобы их надежно найти - нужен старый комп со старыми сетевухами, реализующий прозрачный повторитель Stay-In-Middle и снифящий трафик.

И да, разумеется:

(а) Интел хранит возможность доступа к любой машине
(б) Может узнать, где она, и может с ней связаться в любой момент
(в) Может полностью ее заблокировать (при этом она будет продолжать подавать сигналы с координатами)

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

Когда-то давно, когда я ещё не был программистом, но с компьютерами уже дружил, технологии по типу RAdmin для меня были подобны чуду. Можно было подключиться к удалённому компьютеру, прямо как в самом крутом фильме про хакеров, открыть блокнот и написать там угрожающую надпись. Правда, пользоваться мне этим было негде.

Потом в мою жизнь пришёл ssh: осознание, что управляешь сервером за океаном сначала восхищало, а теперь уже стало обыденностью. Пока не наберешь случайно halt, ага. А потом начинаешь открывать админку хостера и пытаться зайти в консоль управления сервером, чтобы его запустить. А она почему-то сегодня тупит. Тогда пишешь в саппорт и нерничаешь. Не очень нравится. Но это мои личные программерские страхи.

Как-то на старой работе после смены администратора вновь пришедший решил навести порядок в компьютерном парке и для этого подходил к компьютеру, выгонял работника, скачивал Everest, запускал диагностику и сохранял результат в файл. Так, обойдя всего лишь ~60 рабочих мест на трёх этажах, он узнал, какое железо есть в его распоряжении. Неудобно.

И тут на сцену выходит Intel vPro.

Intel vPro – это такая штука, которая позволяет не бояться вещей, описанных выше и даже делать намного больше. Состоит vPro из двух компонентов: аппаратного и программного и про них я расскажу под катом.

Аппаратная часть

На аппаратном уровне нужен процессор и материнская плата (чипсет, как правило, начинается на Q, но нужно смотреть спецификации), поддерживающая vPro. В материнскую плату встроена гигабитная сетевая карта и видеоадаптер, которые способны на низкоуровневую работу. На практике это значит, что подключиться к компьютеру при помощи vPro можно без использования, мало того, что сетевых драйверов ОС, так и без самой ОС! И да, можно зайти в BIOS удалённо.

Поддерживается как проводное, так и беспроводное подключение. В случае WiFi полёта для фантазии не очень много – операционная система должна быть загружена и подключена к точке доступа, зато вот при использовании провода подключиться можно даже к выключенному компьютеру. Ну, так говорят маркетологи: на деле же выключенный компьютер можно включить и – далее как обычно.

Программная часть

Программная часть заключена в аббревиатуре AMT – это Intel Active Management Technology, которая обслуживает подключения и обладает огромными возможностями.

Сначала компьютер надо сконфигурировать для работы с vPro и для этого понадобится физический доступ. После этого его, если это сервер, можно потерять или замуровать в комнате, как в анекдотах про администраторов. В случае, если администратор находится с пациентом в одной локальной сети, проблем не возникает, если же нужный компьютер спрятан за NAT – придётся ставить сервер внутри для доступа. Правда иначе и быть не может – базовые требования сетевой безопасности.

Сеанс связи шифруется, а доступ к серверу можно получить через консоль (serial over LAN), web-интерфейс или VNC. Web-интерфейс обладает неприметным рабочим дизайном (который при этом отлично отображается на планшетах) и позволяет получать статистику о железе, его состоянии и перезапускать компьютер, настраивать сетевой интерфейс и политики доступа к AMT, смотреть историю событий – узнать, почему же у секретарши не грузится система, не подходя к её компьютеру.

При подключении через консоль и VNC можно делать уже совсем всё: vPro предоставляет полноценный KVM с локальной машины на удалённую с поддержкой разрешения экрана до 1920х1200 и возможностью посмотреть, как загружается система от инициализации BIOS до непосредственной загрузки ОС. При этом даже при перезагрузке системы не происходит отключения! Единственное что для доступа в BIOS не получится просто зажать Delete при старте системы и надо будет выбрать специальный пункт «Reboot to BIOS».

После чего в самом деле загружается BIOS.

Особенно приятно то, что можно подключиться к удалённой машине по VNC даже в том случае если там слетели драйвера сетевой карты (ведь vPro работает на более низком уровне чем ОС) и прямо через VNC поставить все драйверы. И если в пределах офиса это ещё решаемо, то вот ехать в дата-центр может быть не с руки.

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

Про безопасность

При помощи vPro работает технология Intel Anti-Theft. Если у вас украли ноутбук, то вы можете связаться с Intel и они заброкируют его. В блоге Intel есть уже данной технологии. После блокировки новый обладатель компьютера увидит такую картинку.

Заключение и ссылки

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

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

КРИС КАСПЕРСКИ

Удаленно управляем BIOS Setup

Каждый из вас хотя бы раз в жизни сталкивался с необходимостью войти в BIOS Setup и слегка его «подкрутить» или починить «рухнувшую» Windows NT, Linux/FreeBSD. Традиционно эта задача решается при помощи мыши и клавиатуры, но что делать, если сервер физически недоступен?

Компьютеры семейства IBM PC долгое время рассматривались как недорогие рабочие станции и сервера на их основе начали строить лишь недавно. Разработчики увеличили количество процессоров, добавили поддержку коррекции памяти, отказоустойчивые дисковые массивы и прочие прелести, однако полное превращение в сервер так и не наступило. В частности, сохранилась проблема удаленного администрирования. Операционные системы семейства Windows NT поддерживают удаленный контроль лишь формально. Даже такие программы, как Remote Admin, выполняют ограниченный спектр простейших операций, и на полноценное обслуживание сервера по сети не способны. В мире UNIX дела обстоят чуть-чуть получше, но проблемы все равно есть.

Вот, например, BIOS отказывается грузиться, предлагая нажать для входа в BIOS Setup или для загрузки с параметрами по умолчанию (см. рис. 1). Но сервер находится в другом конце города, да еще в помещении, ключей от которого у администратора нет. Знакомая ситуация, не правда ли? Другой вариант: после установки очередного пакета обновления операционная система «умерла», стала жертвой хакерской атаки или просто зависла. Во всех этих случаях стандартные средства удаленного управления уже не работают и приходится приближаться к серверу вплотную, что достаточно затруднительно. Даже если сервер расположен на соседнем этаже, намного предпочтительнее управлять им без отрыва от своего любимого кресла, чем бегать с дискетами (лазерными дисками) туда-сюда.

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

Удаленный контроль за BIOS

Порядок загрузки BIOS в общих чертах выглядит так. Первым получает управление BOOT-block (загрузочный блок или первичный загрузчик, не путать с boot-сектором!). Он выполняет инициализацию основного оборудования (оперативная память, контроллер прерываний, системный таймер и т. д.), сканирует ISA-шину и подключает BIOS всех обнаруженных устройств (например, SCSI-контроллеров, видео, сетевых карт и т. д.). Перед завершением своей работы BOOT-block распаковывает основной код BIOS (так называемый BIOS extensions, или вторичный загрузчик) и передает ему управление. Вторичный загрузчик сканирует PCI-шину и выполняет окончательную инициализацию оборудования – распознает IDE-диски, при необходимости выводит интерактивный редактор BIOS Setup, распределяет системные ресурсы между PnP-устройствами и, наконец, считывает boot-сектор с гибкого или жесткого диска.

Таким образом, BIOS, установленные на картах расширения, получают управление на самой ранней стадии инициализации, задолго до того, как начинается подсчет контрольной суммы CMOS или распаковка вторичного загрузчика. Кстати говоря, большинство утилит «прожига» BIOS не трогают BOOT-block и даже если прожиг прошел неудачно, ISA-слоты расширения все-таки инициализируются. С PCI-слотами все обстоит намного сложнее, и в общем случае они доступны только из вторичного загрузчика (а он гибнет при неудачном прожиге). Некоторые производители, например ASUS, включают в BOOT-block специальный драйвер для работы с PCI-шиной, чтобы материнская плата могла инициализировать видеокарту и хоть что-то вывести на экран, даже если основной код BIOS повержен. Но мне не известен ни один BIOS, BOOT-block которого мог бы работать с шиной AGP или PCI-express.

Следовательно, все, что нам нужно, – изготовить «фиктивную» ISA- или PCI-карту, установить на ней «свой» BIOS и запрограммировать его на удаленное управление. Когда-то я «дорабатывал» древние сетевые карты (которые просто выбрасывались), превращая их в «пульт» удаленного управления, позволяющий редактировать настройки BIOS по локальной сети. Это совсем несложно сделать! Достаточно уметь программировать на Ассемблере и чуть-чуть разбираться в архитектуре «железа» (см. рис. 2).

Впрочем, корпеть над отладчиком совсем необязательно, все можно купить и готовое. Такие платы (они называются Remote Boards) выпускает множество фирм. Обычно они представляют из себя стандартную VGA-карту с интегрированным COM-портом, к которому подключается внешний модем. В некоторых моделях имеется Ethernet-порт. Его можно воткнуть в DSL-модем или соединить со Switch. Через эти порты передается копия экрана на удаленный монитор и принимаются команды от клавиатуры, в результате чего IBM PC превращается в самый настоящий «мейн-фрейм» и физического доступа к нему уже не требуется (см. рис. 3)!

Большой популярностью пользуется модель Remote Insight от Hewlett-Packard, которая вставляется в PCI-слот и управляется через 10/100 Мбит Ethernet-порту. Она поддерживает как текстовые, так и графические режимы (вплоть до 1280х1024/256 цветов), питается от внешнего источника, что позволяет ей «нажимать» на кнопки «Power» и «Reset». В дополнение к удаленной мыши и клавиатуре имеется возможность подключать удаленный дисковод и привод CD-ROM, без которых не обходится ни одна переустановка системы. Это просто фантастика! Всегда можно загрузиться с Live CD и посмотреть, что случилось с сервером и сохранить уцелевшие данные на любой носитель, который только будет под рукой. Это усиливает безопасность системы, поскольку сервер, оснащенный «Remote Insight», может вообще не иметь никаких съемных носителей!

Кстати, о безопасности. Remote Insight поддерживает SSL и 128-битное шифрование, что позволяет ему функционировать даже на незащищенных каналах (а других каналов в распоряжении рядового администратора зачастую просто не оказывается).

Все управление происходит либо через telnet, либо через веб-браузер. Как будет удобнее администратору. На сервере может быть установлена практически любая операционная система: Windows 2000/2003 (Advanced Server, Data Center, Terminal Server, Standard или Enterprise Edition), Novell NetWare 5.1, 6.0, Red Hat Advanced Server2.1, Red Hat Linux 7.3/8.0, SuSE Linux Enterprise Server V7/V8 и некоторые другие (см. рис. 4).

Карту можно приобрести в магазине или заказать по Интернету непосредственно в самой Hewlett-Packard. Она обойдется в $399, которые явно стоят того! В принципе можно найти производителя и подешевле, но в отношении цена/функциональность этой карте равных нет, тем не менее она далека от идеала. Исходных текстов прошивки нам никто не даст, и доработать «напильником» под свои конкретные нужны ее не удастся (теоретически это возможно, но очень затруднительно). К тому же качество реализации протоколов шифрования находится под большим вопросом. Возможно, в карте присутствуют отладочные люки или переполняющиеся буферы, которые позволят атакующему захватить штурвал управления в свои руки (см. рис. 5)!

Этих недостатков лишена PC Weasel 2000 от одноименной компании. Вместе с самой платой покупатель получает полный исходный код прошивки и лицензию на право его изменения. Это все та же самая VGA-плата, только вместо Ethernet-порта на ней находится контроллер UART (он же стандартный COM-порт типа 16550). К сожалению, ее функциональность намного беднее. Поддерживаются только текстовые видеорежимы и отсутствуют удаленные приводы, правда, сохраняется возможность «нажать» серверу на «Reset» или посмотреть POST-коды, чтобы сразу оценить масштабы неисправности (см. рис. 6).

ISA-вариант обойдется вам в $250, а PCI – во все $350. Не слишком ли большая цена за открытую лицензию при урезанной функциональности? Не торопитесь с выводами. Исходные тексты – великая штука! Можно купить одну плату и установить ее на неограниченном количестве машин. Клонировать аппаратное обеспечение нам не понадобится. Если слегка переделать прошивку можно обойтись и стандартными компонентами, но об этом – чуть позже. Сначала познакомимся с диаметрально противоположным классом устройств удаленного управления, среди которых, возможно, притаилось устройство вашей мечты (см. рис. 7).

KVM, или Удаленный контроль продолжается

Главный недостаток VGA-плат с модифицированным BIOS состоит в том, что они требуют вскрытия корпуса сервера, что не всегда желательно. К тому же техника перехвата изображения и эмуляция клавиатурного ввода далека от идеала и чрезвычайно конфликтна. KVM-коммутаторы исповедуют совершенно иной подход. Свое название они получили по трем первым буквам: Keyboard, Video-monitor и Mouse. Коммутатор представляет собой автономное устройство, подключаемое к компьютеру через стандартные PS/2 и DB15 VGA-коннекторы. Их сигнал преобразуется в цифровой поток и передается на соседний KVM-терминал, подключенный к удаленному компьютеру. Грубо говоря, мы как бы подключаем клавиатуру, мышь и монитор очень длинными кабелями (см. рис. 8).

Можно настраивать BIOS Setup или рассматривать Windows, свалившуюся в синий экран, но ни удаленных дисководов, ни даже возможности нажать на Reset у нас нет, то есть иллюзия полного физического доступа оказывается не такой уж и полной. Зато поддерживаются практически все видеорежимы и в код BIOS не вносится никаких изменений, а в критических инфраструктурах это очень актуально. Внедрять посторонний эмулятор в банковский компьютер нам попросту не дадут, поскольку эта технология не сертифицирована, а вот у KVM-коммутаторов все необходимые сертификаты, как правило, имеются (см. рис. 9).

Подавляющее большинство моделей рассчитано на управление несколькими серверами с одного терминала, при этом сигнал пускается по экранированной витой паре с максимальной длиной в несколько сотен метров. Это совсем не Ethernet и в сетевой концентратор его вставлять нельзя! Для реального удаленного управления по Интернету или модему нам потребуется установить дополнительный компьютер, принимающий KVM-сигнал и с помощью специального программного обеспечения ретранслирующий его в «удобоваримую» сетевую форму. А это нехорошо! К счастью, некоторые модели поддерживают работу по модему или локальной сети. Такой тип KVM-коммутаторов называется «over IP», хотя здесь не обходится без вариаций. Просто загляните в спецификацию: если там встретится что-то похожее на LAN или Dial-Up, это то, что нам нужно (рис. 10)!

Довольно хорошо зарекомендовала себя фирма Minicom, в ассортименте которой можно обнаружить по меньшей мере две подходящие модели – Phantom Dial-Up Remote Access и Smart IP Extender Switch Over IP. Первая стоит в районе $800, вторая… – $3500. Для банков и прочих денежных учреждений такая сумма, может быть, и подойдет, но вот для мелкой конторы – навряд ли. Кончено, порывшись в магазинах, можно найти KVM-коммутатор и подешевле, но лучше собрать систему удаленного управления самостоятельно.

Как это работает, или Удаленный контроль своими руками!

Для создания собственной системы удаленного управления нам понадобится любая PCI-карта и материнская плата, поддерживающая работу с PCI-шиной через BOOT-block (например, ASUS). На борту карты обязательно должна присутствовать «кроватка» с BIOS. На худой конец BIOS может находиться в отдельной микросхеме, которую несложно выпаять с платы и воткнуть в программатор. К сожалению, сетевые карты с «внешним» BIOS выходят из употребления и найти их становится все сложнее и сложнее. Современные Ethernet-контроллеры интегрируют BIOS в микросхему чиспета, и мы уже не можем ничего с ним сделать (только не перепутайте BIOS с панельной для Boot-ROM, это совсем не одно и то же!).

Вот и приходится пересаживаться на SCSI-контроллеры, цены на которые упали до 10$-14$. Разумеется, речь идет о простейших моделях, но ведь нам ничего, кроме BIOS, не нужно! Поэтому, даже дешевая модель будет работать ничуть не хуже дорогой. Заботиться о сохранении работоспособности контроллера не обязательно. Намного проще переписать BIOS с чистого листа, чем добавлять свои собственные модули в уже существующий (однако при желании это можно сделать) (см. рис. 11).


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

Разработка прошивок обычно ведется на Ассемблере, но при желании можно использовать и высокоуровневые языки типа Си/Си++. Только ни в коем случае не используйте стандартные библиотеки ввода/вывода и прикажите линкеру отключить Start-Up. Для этого достаточно переименовать функцию main в нечто вроде MyMain. Поскольку Си не поддерживает базирования, откомпилированный код должен быть полностью перемещаем (то есть выполняться независимо от базового адреса загрузки в память). Этого можно добиться, отказавшись от глобальных переменных и выключив все опции компилятора, которые могут генерировать неперемещаемый код, о котором мы даже не подозреваем (например, контроль «срыва» стека). Если вы не уверены, что хорошо знаете «задний двор» компилятора, – не используйте его! Программируйте на Ассемблере. Он не подведет!

Код прошивки исполняется в 16-разрядном сегменте реального режима, однако никто не запрещает нам переходить в защищенный режим и выходить оттуда, правда, не совсем понятно, зачем это нужно. Использовать служебные функции BIOS недопустимо, поскольку часть аппаратуры еще не инициирована, да и сам BIOS еще не распакован. Работайте только через порты ввода/вывода, однако перед этим не забудьте, что оборудование должно быть инициализировано вручную. В частности, интегрированный COM-порт еще не имеет ни базового адреса, ни IRQ, ведь PnP-менеджер, распределяющий системные ресурсы, еще не получил управления! Приходится открывать документацию на южный мост чипсета и программировать все железо с нуля. Это самый низкий уровень «общения» с аппаратурой! Необычайно сложный, но в то же время захватывающе интересный! К счастью, серверный мост уже частично инициализирован, поэтому настраивать контроллер памяти не обязательно.

Теперь поговорим о методиках эмуляции и перехвата. Для вывода информации на экран BIOS использует свою собственную сервисную службу INT 10h. Она же используется на стадии первичной загрузки операционных систем семейства Windows и UNIX. Перехватив это прерывание, мы сможем грабить весь вывод на экран и передавать его на удаленный компьютер («грабить» – вполне легальный термин, позаимствованный у англоязычных инженеров, которые говорят в этом случае «grab», звучит грубовато, зато почестному).

Разумеется, без сложностей здесь не обходится. Поскольку в процессе инициализации BIOS вектора прерывания могут переустанавливаться многократно, одной лишь модификации таблицы прерываний (т.е. классического способа перехвата) будет явно недостаточно. Да, мы можем изменить far-указатель по адресу: 0000h:10h*sizeof(DWORD) == 0000h:0040h,перенаправив его на свой собственный обработчик, но… через некоторое время контроль за INT 10h будет утерян. Чтобы этого избежать, необходимо установить аппаратную точку останова на запись этой ячейки памяти. В этом нам помогут отладочные регистры семейства DRx. Регистры Dr0-Dr3 хранят линейный физический адрес точки останова, а Dr7 определяет условия, при которых она срабатывает, заставляя процессор генерировать прерывание INT 01h, на котором должен находиться наш обработчик, выполняющий повторную «экспроприацию» INT 10h у системы.

Пример работы с отладочными регистрами приведен ниже.

Листинг 1. Перехватчик передает управление нашему коду в момент загрузки Boot-сектора

; перехватываем INT 01h

MOV ax, CS

XOR bx,bx

MOV DS,bx

; смещение нашего обработчика

MOV , offset our_vx_code

; относительно сегмента 0000h

MOV ,bx

MOV DS, ax

; устанавливаем точку останова на исполнение

MOV eax,302h

; линейный физический адрес точки останова

MOV ebx,7С00h

; Заносим значения в отладочные регистры

MOV dr7,eax

mov dr0,ebx

Прерывание INT 10h поддерживает свыше сотни различных функций, номер которых передается в регистре AH. В частности, 02h управляет курсором, а 09h печатает символ. Естественно, чтобы грабить вывод на экран, необходимо уметь отличать одну функцию от другой и знать, чем именно каждая из них занимается. Описание функций можно найти либо в технической документации на конкретную видеокарту (а если карта встроена в материнскую плату, то в документации на серверный мост чипсета), либо в знаменитом Interrupt List Ральфа Брауна, правда, он уже давно не обновлялся и сильно устарел. Последняя версия датируется летом 2000 года. С тех пор вышло множество новых карт! Впрочем, базовые видео-функции не претерпели никаких изменений, и если отбросить нестандартные видеорежимы, все будет работать на ура.

Текстовые режимы грабятся просто замечательно, а вот графические в пропускную способность аналоговых модемов уже не вмещаются, и передаваемую информацию приходится как-то сжимать. Самое простое – передавать только изменения, предварительно упаковав их по gzip-алгоритму, для работы с которым существует множество готовых библиотек.

Правда, с переходом операционной системы в защищенный режим, весь наш перехват будет «подавлен», и удаленный компьютер отобразит унылый застывший экран. В принципе с этим можно и смириться. Главное, что нам подконтролен BIOS Setup и начальная стадия загрузки оси, а там можно и стандартным telnet воспользоваться, если, конечно, на середине загрузки Windows не выбросит синий экран.

В своих первых моделях систем удаленного управления я поступал так: отслеживал попытку перехода в защищенный режим (а отследить ее можно с помощью все тех же отладочных регистров), переходил в защищенный режим сам, устанавливал свои обработчики прерывания и отдавал управление операционной системе, не позволяя ей ничего менять. Это работало! Хотя и сбоило тоже. Универсального перехватчика создать не получилось, и пришлось учитывать особенности реализации всех операционных систем. В конце концов я махнул рукой и написал обыкновенный драйвер-фильтр, работающий, как VGA-miniport, и пересылающий экранный вывод на «нашу» карту расширения (рис. 12).

Некоторые системы удаленного контроля (например, уже упомянутый комплекс PC Weasel 2000) вместо перехвата INT 10h просто грабят видео-буфер, что на первый взгляд существенно упрощает реализацию. Не нужно возиться с отладочными регистрами, рыться в Interrupt List и т. д. На самом деле даже в текстовом режиме имеется множество экранных страниц, а уж про графический мы вообще молчим! Причем совершенно неясно, как синхронизовать экранный вывод с его перехватом. Сканировать видеопамять с частой 50-60 Гц вполне реально, но вот запихать награбленные данные в модемный канал получится едва ли. А как это дело будет тормозить! Неудивительно, что PC Weasel 2000 работает только с текстовыми режимами!

Теперь перейдем к эмуляции ввода с клавиатуры. Мышь рассматривать не будем, поскольку нормальные администраторы свободно обходятся и без нее. Весь клавиатурный сервис сосредоточен в прерывании INT 16h, которое мы должны перехватить. Когда программа (и в частности, BIOS Setup) ожидает нажатия на клавишу, она обнуляет регистр AH и вызывает INT 16h. Конечно, существуют и другие варианты, но этот – самый популярный. В этом случае наш обработчик прерывания должен поместить ASCII-код символа, нажатого на удаленной клавиатуре, в регистр AL и возвратить управление. Естественно, все это будет работать только до перехода операционной системы в защищенный режим, а после – придется подгружать свой драйвер, «садящийся» поверх стандартного клавиатурного драйвера и эмулирующего ввод.

Удаленные диски реализуются совсем тривиально. За это отвечает прерывание INT 13h. Функция 02h обеспечивает чтение сектора, 03h – его запись. Номер сектора передается в регистрах CX и DX в CHS-формате. Удаленный CD-ROM реализуется чуть-чуть сложнее. Если вы не сильны в системном программировании, на первых порах лучше ограничиться виртуальными дискетами. Между прочим, использовать физические дискеты совсем не обязательно – удаленная машина может работать с их образом, записанным на жестком диске в виде файла. Для удаленной переустановки Windows NT этот прием вполне подходит. А смену виртуальных дискет автоматизировать совсем нетрудно.

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

Для завершения картины остается сущая мелочь – удаленный Reset, без которого наше творение будет неполноценно. Ну тут все просто. Достаточно подключить к LPT-порту реле, ведущее к «заветной» кнопке, и проблема будет решена. Из прошивки SCSI-контроллера мы можем управлять LPT-портом, конечно, не забыв, что перед этим его нужно инициализировать.

Один маленький трюк напоследок. Если полноценная система удаленного управления вам не нужна и всего лишь требуется запретить BIOS требовать нажатия на клавишу при загрузке, то без дополнительного оборудования легко обойтись. Достаточно загрузить прошивку основного BIOS в дизассемблер и найти все «ругательные» сообщения. Перекрестные ссылки приведут нас к машинному коду, который эти строки и выводит. Там же будет код, ожидающий нажатия на клавишу, который мы должны удалить. Прямой вызов INT 16h используется редко. Скорее всего, мы увидим что-то вроде CALL xxx, где xxx – адрес функции-обертки. Для достижения задуманного мы должны заменить CALL xxx на «MOV AX,scan-code», указав скэн-код требуемой клавиши. Например, клавиша в большинстве BIOS означает «загрузку с настройками по умолчанию», однако в некоторых случаях может потребоваться нажать или.

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

Вместо того чтобы модифицировать упакованный образ основного кода BIOS, мы возьмем неупакованный BOOT-block и добавим в него автоматический патчер, правящий нужные байты прямо в памяти, когда распаковка уже завершена. Поскольку основной код BIOS распаковывается в RAM, никаких проблем с его исправлением не возникает. Главное – определить нужные адреса. В этом нам поможет тот факт, что сам BIOS свой образ не затирает и в момент загрузки boot-сектора он присутствует в памяти. Достаточно написать крошечную ассемблерную программу, считывающую первые 640 Кб нижней памяти и записывающую их на гибкий диск, а затем внедрить ее в boot-сектор. После перезагрузки системы мы станем обладателями распакованного BIOS, лежащего по своим «родным» адресам.

Остается только прожечь обновленный BOOT-block и можно наслаждаться бесперебойной работой сервера!

Заключение

Полноценный удаленный контроль за системой – это реальность! Ассортимент возможных решений необычайно широк: от готовых (и весьма дорогостоящих!) KVM-устройств до более дешевых, но вместе с тем и более функциональных (!) плат расширения, которые большинство программистов легко изготовят самостоятельно. Физический доступ к серверу будет требоваться только при его ремонте (здесь без него никак не обойтись, ведь плоскогубцы с отверткой по модему не передашь), однако фатальные отказы происходят не так уж и часто.

  1. Remote Insight «Lights Out» boards – обзор систем удаленного управления (на англ.): http://www.paul.sladen.org/lights-out/riloe.html .
  2. Remote Insight Lights-Out Edition II – описание платы удаленного управления от Hewlett-Packard с возможностью заказа по Интернету (на англ.): http://h18004.www1.hp.com/products/servers/management/riloe2/server-slot-matrix.html .
  3. PC Weasel 2000 – описание альтернативной платы удаленного управления, микрокод, который распространяется по открытой лицензии (на англ.): http://www.realweasel.com/intro.html .
  4. Технические характеристики огромного количества систем удаленного управления (преимущественно KVM-коммутаторов, на англ.): http://www.kvms.com .
  5. Raritan IP-Reach TR364 – описание KVM-коммутатора TR364 (на англ.): http://www.42u.com/telereach_bk.htm .
  6. Архитектура ввода-вывода персональных ЭВМ IBM PC – электронная версия книги, посвященной устройству IBM PC, которую настоятельно рекомендуется прочитать перед разработкой собственной системы удаленного управления (на русском языке): http://redlib.narod.ru/asmdocs/asm_doc_07.zip .
  7. Ralf Brown Interrupt List – электронный справочник по всем прерываниям, портам ввода/вывода, «волшебным» адресам памяти, включая нестандартные расширения и недокументированные возможности (на англ.):