Строение файла 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:\bootsect.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 будет выглядеть следующим образом:
multi(0)disk(0)rdisk(X)partition(Y)\ИМЯ_КАТАЛОГА_WINDOWS="НАЗВАНИЕ_ОС, ОТОБРАЖАЕМОЕ_В_ЗАГРУЗОЧНОМ_МЕНЮ" /ПАРАМЕТР
Здесь:
multi(0) указывает порядковый номер адаптера, с которого осуществляется загрузка, и всегда имеет значение «0» (нумерация начинается с нуля, начиная с контроллера, расположенного ближе к слоту 0 на материнской плате);
disk(0) — всегда равен нулю, так как прерывание INT13 не может использоваться для идентификации нескольких дисковых контроллеров (для большинства BIOS);
rdisk(X) — определяет порядковый номер жёсткого диска, с которого производится загрузка, нумерация начинается с 0, и обычно X — число от 0 до 3;
partition(Y) — порядковый номер раздела жёсткого диска, с которого загружается ОС, нумерация начинается с 1 (соответствует диску С: в привычном обозначении), в первую очередь нумеруются первичные разделы, затем идут логические диски. Не нумеруются расширенные разделы MS-DOS (тип 5) и разделы типа 0 — неиспользуемые.
Формат записи, начинающийся с метки signature() (ранее, в NT для этого служила метка scsi(), теперь применяется signature(), поддерживающая работу с механизмами Plug-n-Play Windows 2000/XP) встречается реже и используется при работе как со SCSI-дисками (если у контроллера SCSI отключен BIOS), так и с IDE-дисками в отсутствие поддержки INT13. В этом случае запись в BOOT.INI принимает такой вид:
signature(X)disk(Y)rdisk(Z)partition(W)\ИМЯ_КАТАЛОГА_WINDOWS="НАЗВАНИЕ _ОС, ОТОБРАЖАЕМОЕ_В_ЗАГРУЗОЧНОМ_МЕНЮ" /ПАРАМЕТР
Здесь:
signature(X) — указывает уникальную сигнатуру диска (шестнадцатеричное число — signature(8b467c12)), содержащуюся в его MBR. Сигнатура эта вписывается в главную загрузочную запись диска в процессе установки Windows, в начале её текстового этапа (и может быть повреждена, например, вирусом — в этом случае вам потребуется изучить документ
http://support.microsoft.com/default...;en-us;Q119467);
disk(Y) — идентификатор SCSI ID жёсткого диска;
rdisk(Z) — номер SCSI LUN (Logical Unit Number) жёсткого диска, практически всегда это 0; partition(W) — порядковый номер раздела жёсткого диска, с которого загружается ОС, нумерация начинается с 1, в первую очередь нумеруются первичные разделы, затем идут логические диски. Не нумеруются расширенные разделы MS-DOS (тип 5) и разделы типа 0 — неиспользуемые.
Обратите внимание, что если используется формат SIGNATURE(), то в корне системного диска должен находиться файл ntbootdd.sys — переименованная копия драйвера мини-порта SCSI, предназначенная для доступа к SCSI-адаптеру при загрузке.
По умолчанию вплоть до появления Windows XP именем каталога, в который установлена Windows, являлось «WINNT». В Windows XP (видимо, чтобы простому пользователю, недолюбливающему всяческие монструозные и трудноуправляемые NT, лишний раз не напоминать родословную этой операционной системы) от этой традиции отказались, и системная папка носит имя Windows. Разумеется, если вы выбрали собственное название этой папки, то в файле BOOT.INI должно быть указано именно оно. То, что следует в кавычках после имени системной папки — всего лишь текст, отображаемый в загрузочном меню и его можно полностью изменять по усмотрению пользователя, главное — чтобы пользователь понимал, какая ОС соответствует каждой записи.
В конце каждой строки с ARC-путём допускается указывать необязательные ключи запуска Windows. Строчные и заглавные буквы в этих параметрах не различаются. По умолчанию в Windows XP/2000 на современных машинах обычно используется один параметр — /fastdetect (впервые появился в Windows 2000), запрещающий поиск мыши на отмирающих COM-портах (начиная с Windows 2000 обнаружением мыши занимаются P-n-P–драйвера, в NT4 этим занимался NTDETECT, поэтому для NT4 этот параметр в мультизагрузочных системах — в которых работает более свежий, общий для нескольких систем NTDETECT.COM — использовать не следует). Этот параметр может также быть полезен, если к COM-портам подключены какие-либо иные устройства, дабы не смущать ими ОС. При желании можно специально указать порты, на которых поиск мыши осуществлять запрещено: «/fastdetect=COM1,2,3». Если же номера портов не указаны, то поиск отключается для всех портов. Полный же список параметров запуска ОС семейства NT таков (параметры, впервые появившиеся в Windows 2000, выделены красным цветом):
/BASEVIDEO — использовать в графическом режиме драйвер стандартного VGA-видеоадаптера. Позволяет решить проблемы со сбойным видеодрайвером. Подробнее —
http://support.microsoft.com/default...;en-us;Q126690
/BAUDRATE=xxxxx — скорость (в бодах) передачи данных в отладочном режиме. По умолчанию при работе с модемом в режиме отладки скорость 9600, при работе с нуль-модемным кабелем — 19200. Пример: «/BAUDRATE=115200». При использовании этого параметра автоматически активируется ключ /DEBUG. Подробнее —
http://support.microsoft.com/default...;en-us;Q148954
http://support.microsoft.com/default...;en-us;Q151981
/BOOTLOG — включает протоколирование хода загрузки драйверов в файл %SystemRoot%\NTBTLOG.TXT (формат текста — UNICODE). Полезен при выявлении сбойного драйвера.
Пример протокола:
Microsoft ® Windows NT ® Version 5.0
Loaded driver \WINNT\System32\ntoskrnl.exe
Loaded driver \WINNT\System32\hal.dll
Loaded driver \WINNT\System32\BOOTVID.dll
Loaded driver pci.sys
Loaded driver isapnp.sys
Loaded driver intelide.sys
...
/CRASHDEBUG — предписывает загружать программный модуль отладки ядра, который активизируется при ошибках в ядре ОС. Подробнее —
http://support.microsoft.com/default...;en-us;Q151981
DEBUG — предписывает загружать программный модуль отладки ядра, активизация которого может производиться по команде удалённого отладчика. Подробнее -
http://support.microsoft.com/default...;en-us;Q121543
/DEBUGPORT=COMx — предписывает загружать программный модуль отладки ядра и определяет последовательный порт, используемый для отладки (по умолчанию COM1). Пример: «/DEBUGPORT=COM2». При использовании этого параметра автоматически активируется ключ /DEBUG. Если в системе присутствует контроллер FireWire, то в Windows XP допускается устанавливать параметр «/DEBUGPORT=1394», в этом случае можно указать и ещё один переключатель — «/CHANNEL=X», где «X» — номер канала (от 1 до 62), использованный при настройке хоста. Подробнее —
http://support.microsoft.com/default...;en-us;Q151981
MAXMEM= ограничивает объём используемой оперативной памяти (в мегабайтах). Пример: «/MAXMEM=16». Полезен для выявления дефектного модуля памяти. Подробнее —
http://support.microsoft.com/default...;en-us;Q108393
/NODEBUG — запрещает использование режима отладки, отменяет действие ключей /DEBUG, /DEBUGPORT и /BAUDRATE
/BREAK — предписывает остановить инициализацию HAL в точке останова и ожидать подключения отладчика. При использовании без ключа /DEBUG будет отображён синий экран BSOD с кодом останова.
/SOS — включает отображение названий загружаемых драйверов при загрузке ОС. Полезен для выявления сбойного драйвера. Подробнее —
http://support.microsoft.com/default...b;en-us;Q99743