За термінологією Microsoft ці завантажувальні файли (ntldr, boot.ini, ntdetect.com, ntbootdd.sys і bootsect.dos для Мультізавантажувальний систем) знаходяться в системному розділі, завантажувальний сектор якого містить системний завантажувач Windows NT.
У той же час розділ диска або диск, на якому розташовується папка Winnt і, відповідно, системні файли, необхідні для роботи ОС (в тому числі ntoskrnl.exe, ядро Windows NT), цілком спокійно може не збігатися з системним розділом і тому при запуску ПК необхідно зробити так, щоб завантажувач Windows NT без зусиль знайшов системні файли. Розділ же, на якому розташовується папка Winnt, в Microsoft прийнято називати завантажувальним, пробачимо їм цю плутанину - це далеко не найважчий випадок.
Правда, оскільки Windows NT може працювати не тільки на платформі i386, слід зробити застереження, що ми розглядаємо застосовні в нашому побуті "персоналки", не торкаючись особливостей завантаження NT на інших платформах (на процесорах RISC, наприклад, програма osloader.exe виконує ті ж функції , що на PC виконуються файлами ntldr, ntdetect.com і bootsect.dos).
На файл boot.ini покладено кілька функцій: управління вмістом меню вибору операційної системи під час завантаження ПК, управління самим процесом завантаження системи, а також завдання деяких параметрів її подальшого функціонування.
Деякі можливості щодо внесення змін до цього файл дає, правда, меню "Завантаження операційної системи" (System Startup) діалогу "Завантаження і відновлення" ( "Startup and Recovery") властивостей системи, а також з'явилася в Windows XP утиліта msconfig.exe, проте повний доступ до його параметрами можливий тільки при ручному редагуванні, або при використанні невеликої додаткової програми, що надає зрозумілий графічний інтерфейс - System Configuration Editor.
Ця програма призначена для безпечного редагування файлів конфігурації: Autoexec.bat, Config.sys, Win.ini, System.ini, Networks, Lmhosts, Hosts, Boot.ini.
У Windows XP, до речі кажучи, з'явилося і ще одне не менш цінне додатковий засіб відновлення цього файлу - команда bootcfg консолі відновлення, після виконання якої з таким ключем - bootcfg / rebuild відбувається сканування жорстких дисків у пошуках інсталяцій систем класу NT і відновлення файлу boot. ini відповідно до отриманих результатів пошуку. У старіших же системах альтернативою ручному відновленню файлу є тільки запуск програми перевстановлення системи.
Будова файлу 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, призначену саме для розширеної роботи з завантажувачем 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 (x) вказує унікальну сигнатуру диска (шістнадцяткове число - signature (8b467c12)), що міститься в його MBR. Сигнатура ця вписується в головний завантажувальний запис диска в процесі установки Windows. на початку її текстового етапу;
• 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 повинно бути зазначено саме воно. Те, що слід в лапках після імені системної папки, - всього лише текст, який відображається в завантажувальному меню, і його можна повністю змінювати за бажанням користувача, головне - щоб користувач розумів, яка ОС відповідає кожного запису.
Цей параметр може також бути корисний, якщо до COM-портів підключені будь-які інші пристрої, щоб не бентежити ними ОС. При бажанні можна спеціально вказати порти, на яких пошук миші здійснювати заборонено: / fastdetect = COM1,2,3.
/ Baudrate. Швидкість (в бодах) передачі даних в отладочном режимі. За замовчуванням при роботі з модемом в режимі налагодження швидкість 9600, при роботі з нуль-модемним кабелем - 19 200.
Приклад: / baudrate = 115200. При використанні цього параметра автоматично активується ключ / debug.
/ Bootlog. Включає протоколювання ходу завантаження драйверів в файл% SystemRoot% ntbtlog.txt (формат тексту - Unicode). Корисний при виявленні збійного драйвера.
Microsoft ® Windows NT ® Version 5.0
Loaded driver WINNTSystem32ntoskrnl.exe
Loaded driver WINNTSystem32hal.dll
Loaded driver WINNTSystem32BOOTVID.dll
Loaded driver pci.sys
Loaded driver isapnp.sys
Loaded driver intelide.sys
/ Crashdebug. Наказує завантажувати програмний модуль відладки ядра, який активізується при помилках в ядрі ОС.
/ Debug. Наказує завантажувати програмний модуль відладки ядра, активізація якого може проводитися по команді віддаленого відладчика.
/ Debugport. Наказує завантажувати програмний модуль відладки ядра і визначає послідовний порт, який використовується для налагодження (за замовчуванням COM1).
Приклад: / debugport = COM2. При використанні цього параметра автоматично активується ключ / debug.
Якщо в системі присутній контролер FireWire, то в Windows XP допускається встановлювати параметр / debugport = 1394, в цьому випадку можна вказати і ще один перемикач - / channel = x, де x - номер каналу (від 1 до 62), використаний при настройці хоста .
/ Maxmem. Обмежує об'єм використовуваної оперативної пам'яті (в мегабайтах). Приклад: / maxmem = 16. Корисний для виявлення дефектного модуля пам'яті.
/ Nodebug. Забороняє використання режиму налагодження, скасовує дію ключів / debug, / debugport і / baudrate.
/ Break. Наказує зупинити ініціалізацію HAL в точці зупинки і чекати підключення відладчика. При використанні без ключа / debug буде відображено синій екран BSOD з кодом зупину.
/ Sos. Включає відображення назв завантажуваних драйверів при завантаженні ОС. Корисний для виявлення збійного драйвера.
/ Pae. Включає використання механізмів PAE (Physical Address Extension), навіть якщо встановлено менше 4 Гб оперативної пам'яті. При цьому завантажується ядро ntkrnlpa.exe, що дозволяє системам x86 використовувати до 64 Гб оперативної пам'яті (стандартний ліміт x86 - 4 Гб). При завантаженні в режимі захисту від збоїв ігнорується. Використовується зазвичай в тестових цілях.
/ Nopae. Забороняє використання PAE на системах з пам'яттю більше 4 Гб, що підтримують PAE.
/ Nolowmem. На системах з підтримкою PAE і пам'яттю більше 4 Гб забороняє використання перших 4 Гб пам'яті. Використовується з метою тестування і вимагає наявності перемикача / pae.
/ Noguiboot. Забороняє використання VGA-драйвера на етапі завантаження системи - при цьому не буде доступний широкому графічна заставка, і при збоях НЕ будуть виводитися сині екрани BSOD, за показ яких також відповідає VGA-драйвер.
При вказівці в дужках додаткової опції alternateshell (наприклад - safeboot: minimal (alternateshell), без пробілу) замість Windows NT Explorer буде завантажена альтернативна графічна оболонка, зазначена в розділі реєстру HKEY_LOCAL_MACHINESystemCurrentControlSetSafeBootAlternateShell.
/ Year. Наказує ігнорувати рік, що видається вбудованим годинником ПК, і використовувати рік, зазначений у значенні цього параметра. Працює, починаючи з Windows NT 4.0 SP4.
/ Use8254. На системах із застарілим BIOS повідомляє ядру ОС, що на ПК встановлено таймер на основі чіпа 8254.
/ Onecpu. На мультипроцесорних системах забороняє системі використовувати більше одного процесора. Докладніше - support.microsoft.com/default.aspx?scid=kben-usQ157992.
/ Numproc. На мультипроцесорних системах обмежує число використовуваних процесорів. Наприклад, / numproc = 2 на 4-процесорному ПК забороняє системі працювати з двома з чотирьох процесорів.
/ Win95dos. У системах з потрійною завантаженням - DOS, Windows 9x і Windows NT задає завантаження завантажувального сектора DOS (файл bootsect.dos).
/ Win95. У системах з потрійною завантаженням - DOS, Windows 9x і Windows NT задає завантаження завантажувального сектора Windows 9x (файл bootsect.w40).
/ Hal = - використання альтернативної версії hal замість hal.dll.
/ Kernel = - використання альтернативної версії ядра ОС замість ntoskrnl.exe. Останнім часом модно використовувати для зміни початкове зображення-логотипу Windows. "Захистом" в ntoskrnl.exe і замінної утилітами типу Restorator.
/ Noserialmice = [COMx | COMx, y, z. ]. Відключає виявлення миші на COM-портах. При використанні без зазначення номера порту виявлення відключається для всіх COM-портів. Застосовується при наявності альтернативних пристроїв, підключених до послідовних портів під час завантаження ОС.
/ Pcilock. Забороняє Windows динамічно призначати IO- і IRQ-ресурси для PCI-обладнання та залишає конфігурацію, присутню в CMOS Setup.
/ Scsiordinal. Використовується для вказівки SCSI ID контролера у разі, якщо додавання нового пристрою SCSI в систему з вбудованим контролером SCSI може змінити SCSI ID контролера. Детальніше в статті support.microsoft.com/support/kb/articles/q103/6/25.asp.
/ Burnmemory. Обмежує об'єм використовуваної пам'яті подібно параметру / maxmem: при вказівці / burnmemory = 128 будуть відкинуті 128 мегабайт пам'яті з наявного в наявності обсягу RAM. Обсяг пам'яті вказується в мегабайтах.
/ Intaffinity. Змушує мультипроцесорний HAL (halmps.dll) встановлювати переривання таким чином, щоб тільки процесор з найбільшим номером у SMP отримував переривання.
/ Maxprocspercluster. Встановлює обмеження процесорів в кластерної системі. Чи не актуально на персональних системах.
/ Timeres = x. У мультипроцесорних системах встановлює дозвіл системного таймера. За замовчуванням дозвіл таймера 7,8 мс. Параметр x вимірюється в сотнях мілісекунд і підтримуються наступні значення:
Всі ці параметри, якщо необхідно задати відразу кілька перемикачів, прописуються послідовно один за одним через пробіл і слеш: / safeboot: minimal (alternateshell) / sos / bootlog /noguiboot.[/hide]