Смекни!
smekni.com

Файл BOOT.INI в Windows XP/NT/2000 (стр. 1 из 3)

Файл BOOT.INI в Windows XP/NT/2000

Q: Я случайно удалил файл BOOT.INI в Windows XP, и вот теперь без него у меня не грузится система, а как его восстановить вручную я не знаю. Что это за файл, какие в нём могут быть параметры — расскажите, пожалуйста, поподробнее.

А: Начнём, пожалуй, несколько издалека. С терминологии. В корневой директории системного раздела жёсткого диска с установленной ОС Windows NT/2000/XP находится несколько файлов, необходимых для загрузки компьютера, вернее — установленных на нём операционных систем. По терминологии Microsoft, эти загрузочные файлы (NTLDR, BOOT.INI, NTDETECT.COM, NTBOOTDD.SYS и BOOTSECT.DOS для мультизагрузочных систем) находятся в системном разделе, загрузочный сектор которого содержит системный загрузчик WinNT. В то же время раздел диска или диск, на котором располагается папка WinNT и, соответственно, системные файлы, необходимые для работы ОС (в том числе NTOSKRNL.EXE, ядро Windows NT), вполне спокойно может не совпадать с системным разделом и поэтому при запуске ПК необходимо сделать так, чтобы загрузчик Windows NT без труда нашел системные файлы. Раздел же, на котором располагается папка WinNT в Microsoft принято называть загрузочным, простим им эту путаницу — это далеко не самый тяжкий случай.

Таким образом, при включении ПК ход загрузки операционной системы проходит в несколько этапов: BIOS компьютера считывает и загружает в оперативную память главную загрузочную запись Master Boot Record — MBR, в которой находится таблица разделов диска и небольшая программа — эта программа находит начальный адрес системного раздела на диске и загружает в память копию его загрузочного сектора (сектор 0), а затем, если раздел помечен как «активный» в таблице разделов, передаёт управление другой программе — загрузчику Windows NT из только что перенесённого в память загрузочного сектора. В нулевом секторе жёсткого диска находится загрузочный код, который распознает файловую систему, а затем находит, загружает в память и запускает следующую специальную программу из корневой директории системного диска — NTLDR, предназначенную для инициализации загрузки собственно самой операционной системы, задания некоторых параметров её работы и для вывода меню вариантов загрузки в мультизагрузочной системе. После этого уже начинается выполнение обычных программ из файлов, находящихся на диске, что и приводит к полной загрузке всей операционной системы и к возможности запускать прикладные программы. Правда, поскольку Windows NT может работать не только на платформе i386, следует оговориться, что мы рассматриваем только применимые в нашем быту «персоналки», не касаясь особенностей загрузки NT на других платформах (на процессорах RISC, например, программа OSLOADER.EXE выполняет те же функции, что на PC выполняются файлами NTLDR, NTDETECT.COM и BOOTSECT.DOS).

Если рассматривать работу начала начал операционных систем класса NT — загрузчика NTLDR подробнее, то её также можно разбить на несколько этапов: NTLDR переключает процессор в режим 32-разрядной модели памяти с прямой адресацией; запускает минифайловую систему для доступа к томам FAT, FAT32 и NTFS; считывает файл BOOT.INI, также расположенный в корневом каталоге системного диска; отображает меню выбора операционной системы (если выбирается ОС, отличная от Windows NT, то считывается файл BOOTSECT.DOS с копией загрузочного сектора предыдущей ОС, и управление передаётся ему); запускает файл NTDETECT.COM, собирающий информацию о физических устройствах, подключённых к компьютеру в момент загрузки; загружает и запускает ядро ОС — файл NTOSKRNL.EXE и передаёт ему информацию, собранную NTDETECT.COM.

Специальный текстовый конфигурационный файл BOOT.INI, который NTLDR использует в процессе своей работы — один из важнейших системных файлов Windows NT/2000/XP, несколько напоминающий по своей сути файл MSDOS.SYS из Windows 9x. Именно он позволяет системе находить папку WinNT, если она расположена не на системном разделе диска. На файл BOOT.INI возложено несколько функций: управление содержимым меню выбора операционной системы во время загрузки ПК, управление самим процессом загрузки системы, а также задание некоторых параметров её дальнейшего функционирования. Файл составлен по привычному стандарту INI-файлов — два раздела с названиями в квадратных скобках и параметры в каждом из разделов (допускается добавить и ещё какой-нибудь раздел — системой он будет просто проигнорирован, что нередко используется для того, чтобы временно «закомментировать» тот или иной параметр). И хотя в нём может находиться довольно много различных параметров, редактируется всё это малопонятное простому пользователю хозяйство, к сожалению, самым простым и самым неудобным способом — в любом текстовом редакторе. А редактировать это файл вполне может понадобиться любому пользователю, соблазнившемуся красивыми финтифлюшками сыроватой Windows XP (в конференции нашего журнала проблемы с Windows XP — хит сезона), причём не только при его повреждении, либо случайном удалении и последующем воссоздании, но и, например, в случае добавления в систему или удаления из неё дисков или их разделов. Разумеется, для работы с этим скрытым файлом, находящимся в корневой директории загрузочного диска, необходимо снять с него атрибут «только чтение», иначе текстовый редактор не сможет сохранить внесенные в BOOT.INI изменения. Некоторые возможности по внесению изменений в этот файл даёт, правда, меню «Загрузка операционной системы» («System Startup») диалога «Загрузка и Восстановление» («Startup and Recovery») свойств системы, а также появившаяся в Windows XP утилита MSCONFIG.EXE, однако полный доступ к его параметрам возможен только при ручном редактировании, либо при использовании небольшой дополнительной программы, предоставляющей понятный графический интерфейс для работы с BOOT.INI — BOOT.INI Editor (http://www.dx21.com/SOFTWARE/Dx21/ViewItem.ASP?NTI=2&SI=2&OID=14). Программа эта, правда, несколько сыровата — требует для своей работы файл comctl32.ocx, который почему-то в инсталлятор не включён. К тому же в Windows XP её инсталлятор категорически отказывается запускаться, если же файлы уже установленной в Windows 2000 программы скопировать в XP, то она работает нормально. В Windows XP, кстати говоря, появилось и ещё одно не менее ценное дополнительное средство восстановления этого файла — команда BOOTCFG консоли восстановления, после выполнения которой с таким ключом: «BOOTCFG /REBUILD» происходит сканирование жёстких дисков в поисках инсталляций систем класса NT и восстановление файла BOOT.INI в соответствии с полученными результатами поиска. Более подробно о работе с этой утилитой вы можете почитать в статье http://support.microsoft.com/support/kb/articles/Q291/9/80.ASP базы данных технической поддержки Microsoft. В более старых же системах альтернативой ручному восстановлению файла является только запуск программы переустановки системы.

Строение файла BOOT.INI в простейшем случае, с одной операционной системой на диске ПК Intel х86, выглядит следующим образом:

[boot loader]

timeout=5

default=multi(0)disk(0)rdisk(0)partition(1)WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows XP Professional" /fastdetect

При использовании двух операционных систем, например, Windows Me и Windows XP, содержимое файла будет примерно таково:

[boot loader]

timeout=5

default=C:

[operating systems]

C:="Windows Millennium Edition"

multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows XP Professional" /fastdetect

Как можно заметить, в данных примерах раздел [boot loader] служит для задания двух параметров загрузки операционной системы, в частности, параметр «timeout=5» определяет количество секунд, в течение которого пользователь имеет возможность выбрать либо загружаемую ОС, либо один из пунктов загрузочного меню (например, загрузить систему в режиме защиты от сбоев). При «timeout=0» загрузочное меню не отображается, а при «timeout=-1» это меню будет находиться на экране неограниченное время в ожидании выбора пользователя. Каждый пользователь волен выставить это время по своим вкусам — для меня удобной цифрой является 5 секунд. По умолчанию же задержка составляет 30 секунд, максимум — 999.

Параметр «default=» определяет путь к загружаемой по умолчанию операционной системе. Путь этот в случае с Windows NT задаётся в формате ARC (Advanced RISC Computing), о правилах которого чуть ниже. Если же в мультизагрузочной системе ОС по умолчанию является, например, Windows 98 (или MS-DOS, Linux), то нередко достаточно указать просто «default=C:», где С: — диск, на котором находятся системные файлы Windows 9x (вернее — образ её загрузочного сектора BOOTSECT.DOS, а также IO.SYS, MSDOS.SYS и т.д). Такой операционной системе и в следующем разделе [operating systems] будет соответствовать строка типа

C:="Windows Millennium Edition"

или

C:_ootsect.lnx="Linux"

то есть путь к файлу-образу её загрузочного сектора (его название может быть любым по выбору пользователя). Кстати, для создания такого файла-образа удобно использовать утилиту BootPart (http://www.winimage.com/bootpart.htm), предназначенную как раз для расширенной работы с загрузчиком NT.

В разделе [operating systems] находятся сведения об установленных операционных системах, на основании которых и формируется загрузочное меню. Так, в каждой строке этого раздела прописан путь ARC к загрузочному разделу Windows NT плюс имя папки Windows и текст, отображаемый в соответствующей этой операционной системе строке загрузочного меню, плюс некоторые параметры, используемые при выборе данной системы. Учтите, что ARC-путь (кроме имени папки и названия ОС) должен быть записан маленькими (строчными) буквами — по крайней мере, в Windows NT 4 заглавные буквы приводили к невозможности загрузить систему. Максимально возможное число строк в этом разделе — 10, следовательно, и операционных систем на своем ПК вы можете иметь одновременно аж 10 штук.

Если вы вдруг утратили файл BOOT.INI, то самое сложное при его ручном восстановлении — правильно воссоздать путь к загрузочному разделу в формате ARC. Путь этот может начинаться либо с метки multi(), либо с метки signature(). Метку multi() можно наблюдать в подавляющем большинстве случаев, применяется она для дисков IDE, ESDI, SCSI в тех случаях, когда ОС для своей загрузки использует механизмы системного BIOS (прерывание INT13). При таком раскладе запись пути к загрузочному диску и к директории загружаемой операционной системы в файле BOOT.INI будет выглядеть следующим образом: