Большие возможности маленького файла

После установки Windows 2000 в корневом каталоге загрузочного раздела появляется маленький скрытый текстовый файл, предназначенный только для чтения, - boot.ini. Этот файл - важный компонент в механизме, управляющем процессом начальной загрузки операционной системы. Содержимое файла генерируется в процессе инсталляции, поэтому boot.ini уникален для каждого компьютера. Администратор, который знаком с форматом помещаемых в файле сведений и правилами организации boot.ini, приобретает сразу два важных инструмента управления системой. Во-первых, он может изменить содержимое файла и перекроить процесс начальной загрузки. Во-вторых, можно составить файл boot.ini, который поможет исправить положение, если систему не удается загрузить.

Редактировать файл boot.ini можно в любом текстовом редакторе. Но для начала я рекомендую скопировать исходный вариант файла на дискету на тот случай, если изменения будут неудачными. Boot.ini предназначен только для чтения, поэтому, прежде чем сохранить изменения, необходимо задать другое значение этого атрибута. Безусловно, после окончания редактирования атрибут Read-only следует восстановить.

Содержимое файла: разделы boot.ini

Для всех файлов .ini установлены единые правила форматирования. Данные в них организованы по разделам, и каждый раздел снабжен заголовком в квадратных скобках. Как показано на Экране 1 boot.ini состоит из двух разделов: [boot loader] и [operating systems].

Экран 1. Пример файла boot.ini.

В разделе [boot loader] содержится величина интервала ожидания (тайм-аута) и указатель на выбираемую по умолчанию операционную систему. Тайм-аут определяет промежуток времени (в секундах), в течение которого пользователи могут выбрать один из пунктов экранного меню начальной загрузки. На выбор отводится 30 с, и если пользователь в это время не укладывается, то загружается операционная система по умолчанию.

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

Выбор предоставляется и в том случае, если используется консоль Reco-very Console, которая автоматически добавляет в экранное меню пункт Microsoft Windows 2000 Recovery Console (RC - мощный инструмент, с помощью которого можно исправить испорченный экземпляр операционной системы).

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

Раздел [operating systems] содержит путь или пути к операционной системе либо системам на компьютере. Как показано на Экране 1 текстовые строки, заключенные в кавычки, представляют собой фрагменты текста, отображаемые в экранном меню. Текст можно отредактировать, дополнив специальными комментариями. Например, установив бета-версию следующей ОС семейства Windows, можно добавить примечание: «Не для производственных целей».

Соглашения o пути ARC

Как информация о местонахождении операционной системы в [boot loader], так и сведения о пути к файлам системы в разделе [operating systems] представлены в формате, определенном спецификацией Advanced RISC Com-puting (ARC). Windows 2000 распознает три структуры пути ARC: мультисинтаксическую, с SCSI-синтаксисом и с сигнатурным синтаксисом.

Мультисинтаксис. На машинах с жестким диском IDE в файле boot.ini обычно используется мультисинтаксис. Использование мультисинтаксиса означает, что загрузка системных файлов Windows 2000 происходит под управлением BIOS. Операционная система вызывает прерывания INT 13 BIOS, чтобы отыскать диск, на котором находятся ntoskrnl.exe и другие файлы, необходимые для загрузки операционной системы. Мультисинтаксис применим и к SCSI-накопителям, если устройство SCSI настроено на использование прерывания INT 13, а не параметров BIOS устройства.

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

multi()disk()rdisk()partition()

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

C - порядковый номер, указывающий диск, подключенный к адаптеру; его значение может быть от 0 до 3, в зависимости от числа, связанного с адаптером накопителей. D - номер раздела; первый возможный номер 1 (в отличие от адаптеров и накопителей, нумерация которых начинается с 0).

Синтаксис для SCSI. Если Windows 2000 загружается с SCSI-устройства, то в компьютере, по всей вероятности, используется синтаксис SCSI. Синтаксис SCSI указывает, что для доступа к загрузочному разделу следует использовать драйвер контроллера, а не системный BIOS или вызовы INT 13. Драйвер устройства всегда называется ntbootdd.sys и расположен в корневом каталоге системного раздела. Процедура установки Windows 2000 Setup создает ntbootdd.sys, копируя специальный драйвер SCSI-устройства на жесткий диск. Затем Windows 2000 переименовывает файл в ntbootdd.sys. Обычно Windows 2000 копирует драйвер с компакт-диска Windows 2000 (на котором хранятся драйверы для подавляющего большинства SCSI-адаптеров), но операционная система может скопировать и переименовать драйвер, предоставленный изготовителем устройства. Строка SCSI-синтаксиса имеет следующий вид:

scsi()disk()rdisk()partition()

A - порядковый номер адаптера, связанного с драйвером ntbootdd.sys. B - SCSI ID для целевого диска на этом адаптере. C - логический номер устройства (LUN) SCSI, содержащего загрузочный раздел (устройство с этим номером может быть отдельным диском, но в большинстве случаев число LUN равно 1 для каждого SCSI ID). Параметр D указывает номер раздела.

При наличии нескольких SCSI-контроллеров, каждый из которых работает со своим, отличным от других, драйвером, параметр A указывает контроллер, связанный с ntbootdd.sys. В процессе установки Windows 2000 определяет - обычно исходя из того, какой раздел для установки выбрал пользователь, - с каким контроллером следует работать. Даже если SCSI-накопитель может работать с INT 13, предпочтительно задействовать синтаксис SCSI, так как при этом снижается вероятность ошибок, а операционная система принудительно использует данные ntbootdd.sys в процессе начальной загрузки.

Сигнатурный синтаксис. Технически сигнатурный синтаксис не отличается от SCSI-синтаксиса, но программа инсталляции использует сигнатурный синтаксис для совместимости с механизмом Plug-and-Play (PnP) Windows 2000. Строка с сигнатурным синтаксисом имеет следующий вид:

signature()disk()rdisk()partition()

A - сигнатура диска (например, 6c156c 97); остальные переменные такие же, как в синтаксисе SCSI. A - уникальное шестнадцатеричное число, которое указывают в главной загрузочной записи (MBR) в ходе части процедуры Windows 2000 Setup, выполняемой в текстовом режиме.

При использовании сигнатурного синтаксиса NT Loader (NTLDR) - первый файл, запускаемый Windows 2000 при загрузке операционной системы, - отыскивает накопитель, дисковая сигнатура которого совпадает со значением A. Следует помнить, что если в машину были добавлены новые SCSI-контроллеры, то этот накопитель может быть подключен к SCSI-контроллеру с номером, отличным от того, который был при первой инсталляции Windows 2000. Как и в случае с SCSI-синтаксисом, для сигнатурного метода необходимо иметь в корневом каталоге диска экземпляр соответствующего драйвера SCSI, переименованный в ntbootdd.sys.

В некоторых обстоятельствах выясняется, что процедура Windows 2000 Setup должна использовать сигнатурный синтаксис. Самые типичные случаи - использование диска с числом цилиндров свыше 1024 (проблемы возникают, если цилиндр с номером свыше 1024 оказывается в системном разделе) и отключение BIOS контроллера SCSI.

Настройка файла boot.ini

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

Назначение операционной системы, выбираемой по умолчанию. Можно изменить операционную систему, загружаемую по умолчанию, и продолжительность показа меню начальной загрузки. Это можно сделать, не редактируя файл boot.ini; достаточно воспользоваться диалоговым окном Sys-tem Properties (для быстрого доступа к нему следует щелкнуть правой кнопкой мыши на пиктограмме My Com-puter и выбрать из меню пункт Pro-perties). Перейдя к закладке Advanced, нужно щелкнуть на кнопке Startup and Recovery, чтобы открыть диалоговое окно Startup and Recovery, показанное на Экране 2. Затем можно выбрать операционную систему из раскрывающегося списка Default operating system в разделе System startup.

Экран 2. Изменение экранного меню начальной загрузки.

С помощью функции Display list of operating systems данного раздела можно изменить длительность показа меню начальной загрузки. Не следует устанавливать время менее 10 с, иначе пользователи не успеют прочитать строки меню и сделать выбор. Я не рекомендую сбрасывать флажок и отменять показ экранного меню. При необходимости выполнить какие-либо действия с другой установленной здесь же операционной системой придется повторить все ранее сделанные шаги, чтобы вновь получить доступ к меню.

В отличие от Windows NT, в Windows 2000 нельзя указать время показа -1, чтобы оставить меню на экране до тех пор, пока пользователь не сделает выбор. Диалоговое окно Startup and Recovery операционной системы Win-dows 2000 не принимает отрицательного числа. Если вручную отредактировать boot.ini, указав длительность тайм-аута -1, то Windows 2000 проигнорирует его и при следующей загрузке восстановит прежнее значение.

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

Диагностика. Boot.ini располагает значительным числом параметров, большинство из которых полезны в определенных условиях - обычно при диагностике серьезных неисправностей. Для совместимости с некоторыми аппаратными конфигурациями в файле необходимо указать определенные ключи. В Таблице 1 приведен список основных ключей boot.ini и их функций.

Создание диска аварийной загрузки. Если один из файлов начальной загрузки отсутствует или испорчен и функция Windows File Protection (WFP) не может автоматически исправить его, то обычно существует возможность запустить систему с диска аварийной загрузки Windows 2000 и заменить файл. Поскольку начальная загрузка операционной системы полностью зависит от информации в boot.ini, необходимо иметь его на диске аварийной загрузки, даже если он и не входит в число испорченных файлов.

Чтобы создать загрузочный диск, нужно отформатировать дискету на другом компьютере Windows 2000. Затем следует скопировать на дискету файлы NTLDR и ntdetect.com из корневого каталога этого компьютера. Подобные файлы одинаковы для всех версий операционной системы, поэтому компьютер-«донор» может работать с любой версией Windows 2000 Server или Windows 2000 Professional.

Если компьютер-«донор» имеет такую же организацию жесткого диска (тип диска, номер диска и тот же раздел, выделенный для операционной системы), как у неисправной машины, то файл boot.ini можно скопировать и использовать без изменений. В противном случае следует скопировать boot.ini на дискету, собрать информацию о физическом типе диска целевого компьютера и отредактировать информацию в разделе [operating systems], чтобы получить необходимый для загрузки boot.ini. Затем следует запустить целевой компьютер с диска аварийной загрузки и перезаписать испорченный файл или файлы с диска аварийной загрузки.

Зная возможности файла boot.ini и принципы его работы, можно управлять процессом начальной загрузки операционной системы. Это особенно важно, если требуется диагностировать компьютер, зависший на «голубом экране», так как специалисты службы поддержки фирмы Microsoft могут попросить отредактировать boot.ini и добавить в него ключи, облегчающие диагностику.

Кэти Ивенс - редактор Windows 2000 Magazine. Является соавтором более 40 книг по компьютерной тематике, включая «Windows 2000: The Complete Reference» (Osborne/McGraw-Hill). С ней можно связаться по адресу: kivens@win2000mag.com.

Поделитесь материалом с коллегами и друзьями