Реализация технологии Intel vPro в материнских платах компании GIGABYTE UNITED. Удаленно управляем BIOS Setup

27.03.2020 Интересное

Когда-то давно, когда я ещё не был программистом, но с компьютерами уже дружил, технологии по типу 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 есть уже данной технологии. После блокировки новый обладатель компьютера увидит такую картинку.

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

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

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

vPro - удалённое управление в вашей сети

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

На рынке есть разные системы управления, но большинство из них требует для своей работы функционирующей ОС на удалённом ПК или установки специального модуля, который, опять же, стоит денег. Решения, зависящие от ОС, обычно не обеспечивают доступ к настройкам BIOS или не позволяют изменять последовательность загрузки, выполнять "холодную" перезагрузку или схожие действия. Если ОС по каким-то причинам не загружается (например, в результате атаки вируса или серьёзной программной ошибки), получить доступ к удалённой системе уже не получится, и администратору придётся разбираться с проблемой на месте. Хотя есть стандарты, обеспечивающее управление ПК на уровне ниже ОС, им не хватает удобства и гибкости. В качестве примеров можно привести такие функции, как пробуждение по сети, модему или RTC. Есть и окружение PXE (Pre-Boot Execution Environment), которое позволяет загружать компьютер с удалённого сетевого источника. С его помощью можно установить ОС или выполнить обновление BIOS без установки в ПК физического носителя. Сетевая карта ищет сервер загрузки PXE в локальной сети, который обеспечивает доступ к NBP (Network Bootstrap Program). Наконец, формат ASF (Alert Standard Format) отвечает за определение ошибок и сбоев. Он обеспечивает обслуживание независимо от ОС. Но ASF далёк от совершенства, поскольку он не поддерживает аутентификацию, шифрование, возможности перезагрузки, удалённое управление в реальном времени, удалённое обновление BIOS и политики.

Что такое vPro?

vPro - маркетинговое название технологии, аналогично Viiv или Centrino. Под vPro подразумевается набор функций, нацеленных на корпоративное окружение. По сути, мы получаем комбинацию функций и технологий, имеющихся в портфолио Intel: vPro требует определённую версию чипсета 965, а именно, Q965 с поддержкой Intel AMT (Active Management Technology). Наконец, на сайте vPro указан процессор Core 2 Duo как часть vPro, хотя наша тестовая система от Acer была оснащена Pentium D. Здесь важна поддержка VT (Intel Virtualization Technology) со стороны процессора, чтобы он смог запустить раздел ОС обслуживания.

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

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

Куда входит AMT?

vPro по большей части опирается на технологию Intel Active Management Technology (AMT). AMT - комбинация функций платформ и программного обеспечения, которое обычно предоставляется сторонними разработчиками. Большинство из функций, описанных в этой статье, входит в состав AMT.

Нужна ли вам vPro?

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

Настройка системы для AMT/vPro

Настраивать систему для работы с AMT/vPro весьма просто. Нужно войти в BIOS управления, что можно сделать нажатием "CTRL+P" после теста POST (power-on self test), там можно будет указать несколько основных настроек. Не забудьте включить возможности AMT.

Главное меню Intel Management Engine BIOS Extension. В него попадаешь, нажав "CTRL+P" после теста POST.

Вообще, мы были немного растеряны, когда впервые попытались запустить AMT и настроить технологию. Мы получили материнскую плату с поддержкой vPro от MSI и компьютер vPro от Acer, но в обоих случаях никакой документации не было. Чтобы войти в расширение BIOS на плате MSI, нам пришлось угадывать предварительно заданный пароль (который, кстати, оказался "admin"). Тот же самый пароль по умолчанию был и на ПК Acer.

Перед выполнением дальнейших операций BIOS требует сменить пароль. Но, опять же, эту операцию нельзя назвать интуитивной, поскольку требования к паролю очень строгие, и менее опытные пользователи вряд ли сразу поймут, почему пароль отвергается системой. Пароль должен содержать большие и маленькие буквы, цифры и символы. Кроме того, есть ещё один момент: вы должны ввести host-имя компьютера, только после этого AMT/vPro заработает - настройки IP-адреса (статического или через DHCP) недостаточно. Введённую информацию можно затем изменить.

У нас была документация Intel на нескольких страницах, но там всё же не было инструкции по быстрому старту. Наконец, мы получили 190-страничный документ vPro Deployment Guide. Немалый объём для документации, так что постарайтесь выделить время на её изучение.


Меню настройки AMT содержит ряд важных опций.

vPro для предприятий: с SCS

vPro может работать в двух вариантах, первый предназначен для малого бизнеса, второй нацелен на корпоративную сферу и поддерживает аутентификацию с помощью ключей и шифрование. Корпоративная версия требует наличия сервера SCS (Setup and Configuration Server), отвечающего за шифрование и аутентификацию.


AMT Commander - утилита управления функциями AMT, но Intel поставляет её только разработчикам. Обычно окружение vPro строится на приложениях сторонних компаний.

AMT Commander - одна из двух утилит управления vPro. Но она была создана в помощь разработчикам, и в реальных системах вряд ли будет использоваться. Поэтому администраторам придётся опираться на утилиты сторонних разработчиков. Но набор функций, с другой стороны, вполне сравним. Commander подключается к клиентским ПК с поддержкой vPro. Утилита позволяет находить ПК с vPro, просматривать их комплектующие и выполнять базовые настройки AMT.


AMT Commander позволяет находить компьютеры с поддержкой vPro/AMT, но надо указать диапазон IP-адресов для сканирования.

После успешного поиска систем vPro в заданном диапазоне можно начинать работу с клиентами. Важно проследить, чтобы у каждого клиента было заданное host-имя AMT, иначе утилита управления Intel не подключится. Здесь можно включать или отключать такие функции AMT, как SOL (Serial-over-LAN) или IDE Redirect (для загрузки через LAN).


AMT Commander подключается к любому ПК с vPro, который был правильно настроен и доступен по сети.



Можно настроить сторожевые схемы (Watchdogs), которые будут отслеживать приложения, работающие на клиентском ПК.


Нажмите на картинку для увеличения.

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


Опять же, сначала нужно подключиться.

Сервер инициализации (Provisioning Server) для корпоративного окружения выдаёт сертификаты безопасности и шаблоны клиентам vPro. Следует упомянуть, что все подключения с клиентами шифруются, если только AMT работает в корпоративном режиме.

Если производитель ПК предустановил так называемые программные ключи (software keys), необходимые для корпоративного режима AMT, первый контакт клиента vPro с сервером инициализации запустит так называемую процедуру Zero-Touch Setup, представляющую собой полностью автоматизированную настройку служб AMT.


Нажмите на картинку для увеличения.

Web-интерфейс AMT является, наверное, самым простым средством управления компьютерами vPro, поскольку он легко доступен после инициализации и настройки служб AMT. Независимо от решений сторонних разработчиков, каждым компьютером vPro/AMT можно управлять с помощью встроенного web-сервера. К web-интерфейсу можно обратиться по IP-адресу клиентской системы или по host-имени, которое задаётся у клиентов (без него AMT вообще не будет работать). Функция удалённого управления (Remote Control) кажется нам особенно полезной, поскольку она позволяет выключать и включать систему, загружаться с разными опциями накопителей или просто "сбросить" машины. Здесь есть существенное отличие от соединения "Удалённый рабочий стол" (Remote Desktop) под Windows: если под Windows выключение - процесс программный, который выполняет ОС, то выключение AMT ближе всего к простому тумблеру питания.


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



Журнал событий тоже подробен.

Функция удалённого управления весьма полезна. Представьте, что один из ваших компьютеров отказался загружаться, и вы не можете получить доступ к традиционным средствам дистанционного управления, таким, как VNC или Remote Desktop. В таком случае функция сброса AMT приведёт к аппаратному сбросу системы (reset).

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


Мы вошли в качестве администратора, но AMT/vPro поддерживает создание отдельных пользователей с правами управления.


Прошивку AMT можно обновлять независимо от BIOS материнской платы.


Нажмите на картинку для увеличения

Утилиту Terminal Tool, которую мы тоже попробовали, можно использовать для доступа к BIOS клиентской машины через SOL (Serial-over-LAN). То есть утилита создаёт последовательное соединение по сети. Мы использовали утилиту для доступа к настройкам BIOS, причём опций здесь намного больше, чем у стандартного интерфейса управления AMT. Можно выполнять все необходимые изменения удалённо. Можно использовать Terminal Tool для перенаправления дисковых запросов (чтобы можно было загружаться с удалённого диска по сети).


Нажмите на картинку для увеличения.

Мы получили одну из первых материнских плат с поддержкой vPro - MSI Q965MDO. Она использует чипсет Intel Q965, который напомнил нам G965 с добавленной поддержкой ATM/vPro. Плата использует твёрдотельные конденсаторы и четырёхфазный стабилизатор напряжения, который достаточно мощный, чтобы с платой заработал процессор Core 2 Quad. Охлаждение пассивное, что, как нам кажется, немаловажно для офисного ПК, поскольку лишний шум никому не нужен.

Южный мост поддерживает шесть портов Serial ATA/300, на плате есть четыре слота DIMM, что вполне нормально для форм-фактора MicroATX. Многие недорогие модели на рынке предлагают всего два слота DIMM. Экономия на слотах не очень хороша, если позднее вы решите увеличить объём памяти.

Есть звуковая система HD, гигабитный контроллер Ethernet от Intel, модуль Trusted Platform Module (TPM), встроенное графическое ядро и набор интерфейсов USB 2.0. Для карт расширения на плате предусмотрено два 32-битных слота PCI и слот PCI Express x1. Если вы пожелаете установить мощную видеокарту, есть и слот PCIe x16.

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

Поскольку первый опыт запуска vPro на MSI Q965MDO оказался неудачным, мы решили протестировать полностью собранный ПК с поддержкой vPro. Мы получили соответствующую модель от Acer, а именно: Veriton 3900 Pro. Это довольно любопытная система, хотя она оснащена уже не самым современным процессором Pentium D и всего 512 Мбайт памяти (DDR2-533, в двухканальном режиме). Кроме того, вы не сможете устанавливать стандартные карты расширения, поскольку форм-фактор предусматривает только карты с низким профилем. Вполне понятно, что перед нами офисный ПК, который вряд ли станет лидером в тестах, да и гибкость ограниченная. Но компьютер поддерживает vPro, что нам требовалось в первую очередь. Причём поддержка осуществляется с помощью чипсета 945G, что наглядно говорит о маркетинговых корнях слова vPro. На самом деле эта технология к "железу" привязана не так сильно, как хотелось бы Intel.

Система прекрасно работала, мы смогли на деле проверить все функции удалённого управления vPro. Хотя повод для критики тоже есть: вентилятор очень сильно шумит во время старта системы, а также, если отключить управление скоростью вращения в BIOS. Впрочем, система вряд ли перегреется. Но всё же шум пылесоса по соседству вряд ли приятен.

Заключение

Вообще, называть vPro новым великим изобретением язык не поворачивается. Технология и в самом деле не требует последнего поколения "железа" Intel, да и подобные функции мы встречали раньше (скажем, AMT). Но vPro - очень умная маркетинговая инициатива, которая сочетает несколько полезных функций, что позволяет Intel продавать как можно больше чипов под столь привлекательной маркой. Подобный подход хорошо зарекомендовал себя с Centrino, он более-менее сработал и в случае с Viiv. Но, опять же, важно понимать, что vPro не требует последние чипсеты или процессоры Core 2, чтобы насладиться всеми прелестями технологии удалённого управления Intel. Хотя, конечно, следует уделить внимание тому, чтобы получить самое последнее "железо", если вы хотите использовать какие-либо специфические функции управления, либо желаете в будущем обновлять AMT/vPro. Например, в ближайшем будущем будет добавлена возможность работы vPro через беспроводное соединение, но и аппаратное обеспечение должно быть совместимо.

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

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

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

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

Таблица конфигураций

Система I
Socket 775 Intel Core 2 Extreme E6300 (Allendale 65 нм, 1,86 ГГц, кэш L2 2 Мбайт)
Материнская плата MSI Q965MDO, чипсет: Intel Q965, BIOS: 2006-12-19
Память 2x 1024 Мбайт DDR2-667 (CL 5,0-5-5-15), Corsair CM2X1024-6400C3 XMS6403v1.1
Видеокарта Intel GMA 3000
Жёсткий диск 160 Гбайт, 7 200 об/мин, кэш 8 Мбайт, SATA/300, Western Digital WD1600AAJS
DVD-ROM Gigabyte GO-D1600C (16x)
Система II
Socket 775 Intel Pentium D 925 (Presler 65 нм, 3,0 ГГц, кэш L2 2x2 Мбайт)
Материнская плата Acer FQ965M, чипсет: Intel Q965, BIOS: R01-A3
Память 1x 512 Мбайт DDR2-533 (CL 5,0-4-4-12), Apacer
Видеокарта Intel GMA 3000
Жёсткий диск 80 Гбайт, 7 200 об/мин, кэш 8 Мбайт, SATA/150, Western Digital WD800JD
DVD-ROM Gigabyte GO-D1600C (16x)
Программное обеспечение
Платформа Intel INF 8.1.1.1010
DirectX Version: 9.0c (4.09.0000.0904)
ОС Windows XP, Build 2600 SP2

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

Удаленно управляем 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 – электронный справочник по всем прерываниям, портам ввода/вывода, «волшебным» адресам памяти, включая нестандартные расширения и недокументированные возможности (на англ.):