ГлавнаяКонтактыКарта сайта
ЕПОС
О компанииКомпьютерная криминалистикаВосстановление информацииЗащита информацииПроизводство и ITСервисНаши разработки

Расследование инцидентов, компьютерная криминалистика, информационная безопасность

Книжная серия Взгляд на жесткий диск изнутри




Архив статей


18.10.1999
Железное решение «железной» проблемы 2000 года

Вячеслав ОВСЯННИКОВ
ведущий специалист фирмы «ЕПОС»

До наступления 2000 года еще около трех месяцев. Но обстановка заметно накалилась. Оно и понятно. Если хоть малая доля того, что пишут в прессе, правда, то кто-то должен будет и отвечать за то, что не принял необходимых мер. Но почему не вызывают особого доверия пророчества, приведенные в большинстве публикаций по проблеме 2000 года? Да уж больно сгущаются краски без объяснения подробностей. Наверное, меньшие невзгоды обещались, когда был изобретен динамит. Последнее из таких пророчеств мне встретилось 8 сентября, в котором предвещался приход компьютерного конца света 9 сентября (9/9/99). Эта дата действительно играет определенную роль в проблеме 2000 года, но ведь не конец же света! Большинство пророчеств пока не очень сбывались. Вот и 9 сентября прошло в «околокомпьютерном» мире практически незаметно. У многих уже возникает подозрение, что такой проблемы не существует вообще.

В связи с этим давайте рассмотрим некоторые подробности «железной» (связанные только с аппаратной частью) проблемы. Суть вопроса изложена в статье "«Железная» проблема 2000 года" (а также в PC WORLD Ukraine, №3, 1999). Если коротко, то встроенные часы компьютера для обозначения года используют только две цифры. В энергонезависимой памяти (CMOS) хранятся две старшие цифры (регистр столетия), но изменить информацию в этом регистре может только BIOS, а не часы. Некорректная работа BIOS может привести к тому, что при включении компьютера будет установлена неправильная дата.

Насколько это серьезная неприятность? В двух словах ответить на этот вопрос трудно, поскольку существует слишком много вариантов некорректной работы BIOS. Лучше, наверное, будет рассмотреть технические способы решения проблемы, объясняя при этом, какая опасность кроется, если проблему не решать.

Итак, как же решить «железную» проблему? Надежными следует считать два варианта: замена BIOS и установка специального контроллера. Конечно, лучше заменить BIOS. Но кто представляет, сколько на самом деле существует вариантов этой самой BIOS? Тот, кто достал "Ready 2000" BIOS для своего личного компьютера, дальше может не читать. Свою проблему он уже решил. Я же попытаюсь на отдельных примерах прояснить некоторые технические подробности того, как «железная» проблема 2000 года решается с помощью специализированных контроллеров.

Как устроен Y2K контроллер

Несмотря на то, что такие контроллеры сейчас выпускаются многими фирмами, многообразием технических решений данный вид техники не блещет. Обратите внимание на внешний вид самых распространенных на украинском рынке контроллеров: Year 2000 BIOS Enabler фирмы American Megatrends (в дальнейшем AMI); SC2000, предлагаемый фирмой «Тессарт» (в дальнейшем SC2000); BIOS-Y2000 ProblemSolver, выпускаемый фирмой «Компьютеринтерсервис» (в дальнейшем ProblemSolver) и контроллер E2000 BIOS Enabler, выпускаемый фирмой «ЕПОС» (в дальнейшем Е2000). Все они похожи как близнецы-братья. Основные элементы конструкции любого контроллера – это: ПЗУ с записанной в ней программой коррекции работы BIOS, дешифратор адреса, селектор адреса и шинный формирователь.

Рис. 1. Основные элементы конструкции любого контроллера

Конструктивные отличия этих контроллеров весьма незначительны. Контроллеры AMI и SC2000 имеют крепежную планку (на фотографии она снята). Не думаю, что в наличии или отсутствии такой планки кроется существенная разница для компьютера, который не подвергается частым перевозкам. Контроллер SC2000 («Тессарт»), в отличие от остальных, не имеет шинного формирователя. Есть, конечно, определенный риск неустойчивой работы компьютера, вследствие повышенной нагрузки по шине ISA. Но мы устанавливали этот контроллер в различные платы и не заметили особого влияния. Селектор адреса контроллера ProblemSolver («Компьютеринтерсервис»), в отличие от остальных, имеет только два возможных значения начального адреса. Потенциально это некоторое сужение возможностей, заложенных в идеологии построения компьютеров «Ай-Би-Эм-овской» архитектуры (сейчас это называется «Интеловской» архитектурой). В ряде случаев могут возникнуть трудности с конфигурацией системы. Но, честно говоря, не думаю, что это будут непреодолимые трудности.

Таким образом, главное различие контроллеров, предназначенных для решения проблемы 2000 года, заключается в логике работы программы, размещенной в ПЗУ.

Решить железную проблему очень просто

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

Изменение логики работы BIOS в простейшем случае заключается только в замене стандартного вектора прерывания 1Аh, отвечающего за получение/установку даты. Вновь установленный вектор прерывания считывает показания часов реального времени и, если в часах год установлен в значение 00, то в регистр столетия заносится значение 20 и, соответственно, возвращается дата 2000 год. Так просто решается проблема для очень многих компьютеров и, по всей видимости, для всех компьютеров АТ286. Все очень просто!

Более того: как правило, компьютер с таким BIOS позволяет безо всякого контроллера в 2000 году один раз ввести корректную дату, и в дальнейшем он будет работать вполне нормально. Следовательно, в таких компьютерах некоторая неразбериха (совершенно не конец компьютерного света!) может наблюдаться только несколько дней после Нового Года.

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

А иногда и не все так просто

Если бы все было так просто, как рассмотрено выше, то фирмы – производители «железа» наверняка не поддерживали бы волнений программистов. Но, начиная с некоторых пор (как правило, это касается компьютеров класса 386) некоторые производители BIOS посчитали, что до 1980 года персональных компьютеров не существовало. Поэтому, если часы компьютера показывают 1900 год (на самом деле это ведь может быть и 2000 год!), то ни у кого не спрашивая, BIOS устанавливает дату 1980 года. Как правило, корректируется не только значение года, но и день: устанавливается дата 4 января 1980 года. Эта «мудрое решение» производителей BIOS известно всем, кто разрабатывает средства коррекции ошибки 2000 года. Программное обеспечение практически любого контроллера предусматривает определенные способы коррекции ошибки рассматриваемого типа. Например, в алгоритме работы контроллера AMI вообще все даты меньше 1980 года рассматриваются как 2000 год. Если в ночь на 1 января 2000 года компьютер будет отдыхать, так же как и его хозяин, то в новом году при включении компьютера контроллер любого из рассматриваемых типов правильно определит подвох и корректно исправит дату.

Но есть определенная часть компьютеров, которые не выключаются круглосуточно. И здесь начинают работать несколько иные правила игры. После включения компьютера BIOS получает текущее значение даты и времени от часов реального времени и в дальнейшем продолжает жить своей собственной жизнью. В частности, BIOS самостоятельно ведет свой отсчет времени. Однако это довольно грубый отсчет. Поэтому в полночь BIOS синхронизирует свои показания с показаниями часов реального времени. Но в рассматриваемом случае она делает это несколько странным образом. Получив значение 1900 год (часы ведь не могут самостоятельно изменить показания регистра столетия), BIOS считает полученное значение некорректным и прописывает в часы опять же значение 4 января 1980 года. Во время работы это останется незамеченным, поскольку операционная система ведет свой отсчет времени. Однако после перезагрузки (это может быть и следствием кратковременного пропадания напряжения питания) и BIOS, и операционная система начнут отсчет времени с 1980 года. Это – маленькая бомба замедленного действия. В такой ситуации нельзя рассматривать возможность ручной коррекции даты. Можно полагаться только на какой-то контроллер. Если, конечно, этот контроллер правильно понимает, что произошло на самом деле. Положение усугубляется тем, что включение компьютера может осуществляться и третьего, и пятого, и в любой день января, а BIOS устанавливает в часах 4 января. Теряется информация о текущем дне! Чтобы корректно исправить такую ошибку требуется существенное усложнение логики работы контроллера. Практически, даже такой brand как AMI, при переходе в 2000 год во включенном состоянии компьютера, не способен скорректировать возникающую ошибку. Не корректирует ошибку и ProblemSolver. Из рассматриваемых контроллеров в ситуации, когда переход в 2000 год происходит во включенном состоянии, работоспособными оказались только контроллеры SC2000 и Е2000.

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

А бывает и совсем непросто

Имеет место странная ситуация. С одной стороны, новый компьютер жалко выбрасывать только по причине проблемы с 2000 годом. С другой стороны, чем новее компьютер, тем сложнее и запутанней бывает в нем решение этой проблемы. Особенно, если в компьютере установлена BIOS от Award. В частности, на многих ранних «четверках» установлена BIOS Award v4.50. Эта версия BIOS вообще не интересуется содержимым регистра столетий, считает, что там может лежать только число 19. Но этого мало. Разработчики данной версии BIOS посчитали, что компьютер, выпущенный до появления BIOS Award v4.50, вовсе не компьютер. Поэтому, встретив в часах значение даты 00 (в 2000 году), BIOS устанавливает в часах значение 94 (1994 год, год рождения BIOS Award v4.50). При этом содержимое регистра столетия опять-таки игнорируется.

При первом включении компьютера с такой BIOS установится дата 1994 год. Грамотный пользователь это, конечно, заметит и исправит дату на 2000. Но при следующем включении установится дата 2094 год! Таким образом, новое значение даты придется вводить вручную при каждом включения компьютера вплоть до 2094 года. Ну как тут не вспомнить, что слово BIOS все-таки женского рода!

Скорректировать такую ошибку действительно совсем непросто. Чтобы гарантировать, что контроллер в любой ситуации может скорректировать ошибку данной версии BIOS, необходимо запоминать дату последнего включения компьютера. Поскольку ни один из рассматриваемых контроллеров не содержит энергонезависимой памяти (а то цена начнет кусаться), то дата последнего включения сохраняется в CMOS материнской платы. Но не все контроллеры так делают. Соответственно, не все они и работают.

Контроллер ProblemSolver проблемы с данной версией BIOS не корректирует.

Контроллер AMI на первый взгляд решает проблему. Но только на протяжении 2000 года. 1 января 2001 года в системе установится 2094 год, несмотря на присутствие контроллера AMI. Это связано с тем, что контроллер AMI не запоминает дату последнего включения.

С контроллером SC2000 могут быть еще большие неприятности. В алгоритме работы данного контроллера заложена проверка версии BIOS. Если это Award v4.50, то в свободных ячейках CMOS запоминается дата последнего включения компьютера. Но нет в мире ничего более непостоянного, чем BIOS Award. Можно найти несколько компьютеров, у которых версия BIOS одинакова, но в логике работы есть существенные различия. В частности, на разных материнских платах одна и та же версия BIOS может использовать для хранения конфигурации системы разные ячейки памяти CMOS. Соответственно, свободные ячейки могут располагаться не в тех местах, где их хочет видеть контроллер. Вследствие этого на некоторых платах контроллер SC2000 может и не работать. У нас на одной из плат с процессором 486DX2-80 (довольно неплохой ведь компьютер!) при первом включении контроллер SC2000 правильно отработал, но при втором и всех последующих включениях BIOS обнаруживает ошибку контрольной суммы CMOS и загрузка компьютера на этом завершается.

Единственный контроллер, действительно позволяющий корректировать BIOS Award v4.50 на всех платах, которые побывали у нас в руках, это контроллер Е2000.

Бывает и совсем плохо

Существуют вполне современные компьютеры, BIOS которых не готова к 2000 году. Есть, например, компьютеры с процессором 5х86 133МГц. Мощность вполне достаточная для современных офисных приложений. Но, если на материнской плате стоит BIOS Award v4.51, то можно получить и дополнительные проблемы. В этой версии после наступления 2000 года первый раз установится 1996 год. Если вручную установить значение 2000, то при всех последующих включениях будет методично устанавливаться 2096 год. Хорошо видны «родимые пятна» предыдущей версии. Но, чтобы мы не очень расслаблялись, Award в очередной раз изменил и расположение данных в CMOS. Более того, этих данных стало больше, и разместить информацию о дате последнего включения компьютера теперь попросту негде.

Как и в предыдущем случае, единственный контроллер, способный решить проблему 2000 года в данной ситуации, это контроллер Е2000.

Но есть и отличия от предыдущего случая: в таком компьютере и AMI, и SC2000, и ProblemSolver даже не пытаются решать каких-либо проблем.

Кто же даст хоть какие-то гарантии?

Вопрос гарантий – это, безусловно, очень серьезный вопрос. Никто не хочет платить деньги зря, поэтому, покупая устройство для решения определенных задач, покупатель хочет получить и определенные гарантии того, что устройство действительно способно решить возложенные на него задачи. Но, к сожалению, это не тот случай, когда можно рассчитывать на твердые гарантии. В документации на контроллеры AMI и Е2000 прямо указывается, что контроллер «продается, как есть», т.е. без явно выраженных или подразумеваемых гарантий. Это означает, что конечный пользователь обязан сам определить, решает ли покупаемый контроллер его проблемы. Только в случае обнаружения неисправности какого-либо элемента, можно заменить контроллер на исправный. В документации на контроллер ProblemSolver гарантируется замена контроллера в случае обнаружения скрытых дефектов, и нет никакого упоминания о гарантиях решения проблемы. Только в документации на контроллер SC2000 указывается: «...поскольку Y2K Solution Card был тщательно тестирован на большинстве компьютеров и операционных системах, мы готовы дать гарантию со дня продажи до конца 2000 года (1 января 2001)». Таким образом можно констатировать, что от производителей контроллеров вы вряд ли дождетесь конкретных гарантий. Но это связано не с какой-то хитрой политикой производителей контроллеров, а со сложностью самого объекта, на который ожидаются гарантии. По сути, это почти в чистом виде программа. Все элементы контроллера служат только одной цели: запустить хранящуюся в ПЗУ программу. Поэтому и подход к гарантийным обязательствам такой же, как и у производителей программного обеспечения.

Но есть еще и вторая причина, по которой нельзя давать гарантию на контроллер. Этот контроллер исправляет работу программы (BIOS), которая может иметь множество вариантов исполнения. В статье ведь указаны только основные нюансы, обуславливающие трудность решения проблемы. При более внимательном изучении данного вопроса возникает навязчивое подозрение, что в этой путанице Award и не совсем виноват. Похоже, что очень многие производители материнских плат (особенно дешевых, которых завезено в Украину немерено) не утруждали себя расходами на новые версии BIOS. Они брали какую-то версию и смело вносили свои изменения. В этих условиях, на скольких бы платах мы не тестировали контроллер, мы не можем утверждать, что проверены все варианты. Лучше тогда не тешить клиента надеждами, которые могут и не сбыться.

Но в некоторых случаях гарантию решения проблемы 2000 года получить все же можно. Но не на контроллер, а именно на решение. Если Вы поручите какой-либо фирме не поставку контроллеров, а именно решение проблемы (сюда может входить: тестирование компьютеров, разработка мер по коррекции, в необходимых случаях работы BIOS и повторное тестирование после выполнения разработанных мер). В этом случае можно смело требовать гарантий готовности аппаратных средств к 2000 году.

Можно также получить если не гарантию, то уверенность в том, что проблема будет решена. Она заключается в способности и готовности фирмы, у которой Вы купили контроллер, поставить Вам свежую версию программного обеспечения контроллера в случае, если вам попалась плата, с которой контроллер не работает. Прежде чем покупать контроллер необходимо выяснить данные вопросы и узнать, куда следует обращаться в случае возникновения проблем. Внимательно рассмотрите перед покупкой сам контроллер. Если микросхема ПЗУ на плате запаяна, а не установлена на панельке, то у Вас не будет возможности в случае необходимости обновить программное обеспечение контроллера. По такому пути фирмы, производящие аппаратуру рассматриваемого класса, идут очень редко, только в целях предельного удешевления себестоимости своего изделия. Но даже из рассмотренных четырех контроллеров один из них, ProblemSolver фирмы «Компьютеринтерсервис», выпускается с запаянной ПЗУ.

В статье ни в коей мере не делались попытки показать, что все контроллеры, кроме Е2000, плохие. По тексту приводились результаты невольного сравнения самой последней (на момент написания статьи) версии контроллера Е2000 и тех версий остальных контроллеров, которые удалось достать. Главной целью статьи было показать, что проблема действительно существует, и что она разрешима, но требует серьезного отношения к себе. И корень проблемы лежит в некорректной работе BIOS. Замечу, что описанные в статье сложные случаи встречаются не так уж и часто. В большинстве случаев проблема 2000 года решается установкой любого контроллера. Разница появится только в случае описанных выше осложнений. Поэтому, прежде чем покупать партию контроллеров, необходимо купить один-два комплекта и испытать его на своей технике. Если результаты испытаний положительны, то нет необходимости волноваться об отсутствии каких-либо дополнительных, не нужных в конкретном случае, возможностей. Еще лучше – поручить подготовку техники к 2000 году специализированной фирме и получить гарантию, что проблема будет решена.

И последнее. Решение проблемы 2000 года на аппаратном уровне – это решение только части проблемы. Ситуация с программным обеспечением еще более запутана. Обратите на этот вопрос самое серьезное внимание.


Поделиться информацией