PDA

Просмотр полной версии : Как происходит загрузка, ошибки при загрузке, boot.ini



Igor48
01.08.2008, 11:54
1. Загрузка операционной системы
Системный код BIOS определяет загрузочный диск (например, мы в Setup BIOS выбрали "Disk 0") и считывает главную загрузочную запись (MBR-Master Boot Record). Она находится в фиксированном общеизвестном месте - цилиндр 0, головка 0, сектор 1. MBR хранит в себе в самом начале этого первого сектора программу главного загрузчика (master boot), а далее таблицу разделов с указанием границ разделов в системах CHS и LBA. Например, первый раздел начинается с первой головки нулевого цилиндра (0,1,1). Код (т.е. тот самый главный загрузчик), содержащийся в главной загрузочной записи, ищет системный раздел на жестком диске. Если раздел не найден или ОС не может стартовать из этого раздела, то процесс прерывается с ошибкой вида "Error loading operation system". Т.е. master boot нашел системный раздел, но не может загрузить ОС. Возможно, на диске вообще нет системного раздела.

Системный раздел - это основной раздел на загрузочном диске, индикатор загрузки которого (boot indicator) установлен в значение 0x80. В случае с Windows 2000/Xp на разделе должны быть такие файлы как ntldr, ntdetect.com, boot.ini. Если говорить в терминах утилиты Fdisk, то системный раздел называется "активный". В качестве системного раздела можно использовать только основной раздел, т.е. логический диск из дополнительного раздела не подойдет. Странно, но Fdisk создает только один основной раздел, хотя их максимум может быть 4. Системным можно сделать одновременно только один раздел и выполнить это можно утилитами Fdisk, "Управление дисками" в Windows, PQ Partition Magic и т.д.

MBR можно исправить командой Fdisk /fix или в консоли восстановления Windows 2000/Xp командой fixmbr.
Таким образом, у MBR три основные функции:
Прочитать таблицу разделов
Определить местонахождение загрузочного сектора раздела
Загрузить в ОЗУ и выполнить код из загрузочного сектора раздела.Если эти функции выполнить не удается, то появится сообщения об ошибке "Mising operation system" (Отсутствует ОС) или "Invalid partition table" (Неверная таблица разделов).
Повреждение загрузочного сектора раздела, возможно, например, вирусами и даже если раздел отформатирован в NTFS. Такое может произойти, если вы случайно загрузились с зараженной дискеты или с зараженной системы Windows 9x при двойном выборе загрузки. Если компьютер зависает при загрузке и не отображает ничего или выдает BSoD STOP 0x0000007B - вероятно поврежден загрузочный сектор раздела.
Загрузчик раздела можно исправить для выбранной системы в консоли восстановления Windows 2000/Xp командой fixboot.

2. Файл boot.ini
При инсталляции Windows 2000/Xp программа инсталляции помещает в корневой каталог системного раздела файл boot.ini, а так же файлы ntldr, ntdetect.com. NTLDR (загрузчик OC) использует информацию из boot.ini для отображения экрана, позволяющего пользователю выбирать операционную систему для загрузки. С помощью boot.ini можно настроить процесс загрузки и конфигурацию системы под свои нужды. Множество особенностей BOOT.INI полезно для разработчиков драйверов и программ под NT-подобные системы, т.е. существует возможность протестировать "сырые" продукты в разных конфигурациях системы на одной машине.
Пример файла boot.ini приведен ниже:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOW S
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /fastdetect


Видно, что boot.ini состоит из двух разделов - настройка загрузки и [operating systems] - список операционных систем. В первом разделе всего два параметра. "Timeout" - количество секунд для выбора загружаемой ОС, иначе загружается система default. Значения 0 не дает делать выбор и загружает default, значение -1 позволяет ждать неограниченно долго. "Default" - путь к ОС, загружаемой по умолчанию. Во втором разделе нужно указать путь к загрузочному разделу ОС, строку для отображения на экране и необязательные параметры. Правила указания пути рассмотрим позже.
Необязательные параметры (только для Windows 2000/XP):

/NOGUIBOOT - Если параметр присутствует, то VGA video драйвер, ответственный за представление графики в течение процесса загрузки Win2K's не инициализируется. Вообще этот драйвер используется для отображения на экране монитора процесса загрузки и, как правило, для отображения BSoD (синего экрана смерти). Таким образом, включение этой опции в BOOT.INI сделает отображение всего этого невозможным.
/FASTDETECT - Лучше установить; если установлен, то на этапе распознавания аппаратных средств в Windows инициализация параллельные и serial-устройства распознаются драйверами Plug'n'Play. Если отключено, то распознавание будет идти только с помощью NTdetect.com и он же будет выполнять энумерацию аппаратных средств в полном объеме (применяется на Windows NT). В системах 2000/Xp этот параметр стоит по умолчанию.
/BASEVIDEO - Компьютер загружается с помощью стандартного драйвера VGA. Режим пригодится для загрузки, если установленный драйвер видеоадаптера работает некорректно.
/BOOTLOG - При загрузке Windows 2000/XP будет записывать протокол загрузки драйверов в файл %SystemRoot%\Ntbtlog.txt. В лог-файле описывается детально, какой драйвер загружен или не загружен при загрузке ОС.
/MAXMEM- Определяет максимльный объем памяти, доступный для ОС. Полезно, если подозрениен на поврежденную память. Число указывается в МБайтах. Пример: /MAXMEM:16 ограничил бы NT 16МБ системной памяти.
/SAFEBOOT - То же самое, если бы вы выбрали "Безопасный режим" после нажатия F8 (далее после двоеточия можно указать "Minimal"- опция "Safe Mode", "Network" - опция "Safe Mode with Network" или "Dsrepair" - опция "Directory Service Repair"). Добавлю, что в защищенном режиме NT загружает только драйверы и сервисы, описанные по имени или группе в Minimal или Network ключах реестра:
HKLM/System/CurrentControlSet/Control/SafeBoot. Ключ DSREPAIR указывает NT, что необходимо загрузиться в режиме, который восстанавливает Active Directory из backup'а. Дополнительная опция, которую вы можете определить- "(ALTERNATESHELL)". Она указывает NT, какую программу, описанную в реестре
HKLM/System/CurrentControlSet/SafeBoot/AlternateShell использовать в качестве графической оболочки, взамен используемого по умолчанию Explorer'а.
/NOSERIALMICE - [COMx | COMx, y, z ...] -отключает обнаружение мыши, подключенной к последовательному COM-порту (портам)
/SOS - При использовании этого параметра на экране отображаются имена всех загружаемых драйверов. Используйте, если подозреваете отсутствие к.л. драйвера.
/PCILOCK - Запрещает Windows NT динамически назначать IO/IRQ ресурсы на PCI устройства и оставляет конфигурацию BIOS-а.
/USE8254 - Этот параметр предназначен для систем со старым BIOS. Он говорит NT HAL ,что необходимо использовать 8254 чип таймера в качестве основного.
/ONECPU - Эта опция указывает NT, использовать только один ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР мультипроцессорной системы.

[B]3. Изменение файла boot.ini
Перед внесением изменений в файл Boot.ini рекомендуется сделать его резервную копию. Для этого необходимо предварительно включить просмотр скрытых файлов, иначе вы можете его просто не найти. По умолчанию файл Boot.ini помечен как системный файл только для чтения. Для копирования и удаления систем в списке можно воспользоваться утилитой bootcfg прямо из командной строки. Полную справку по этой команде можно получить, выполнив в командной строке bootcfg /? и bootcfg /copy /?

Но наша задача добавить свою ОС в список, при чем сделать это вручную.
Сначала надо открыть boot.ini в текстовом редакторе типа "Блокнот" и в конец файла добавить еще одну строку. Чтобы было проще это сделать, разберем уже существующую запись об установленной и загружаемой без ошибок операционной системе.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)-путь к загрузочному разделу
"Microsoft Windows XP Professional RU" - это название отображается в меню выбора ОС
/fastdetect - один из перечисленных выше параметров.

Самое сложное описать путь к загрузочному разделу, т.к. здесь мы не можем употребить имя раздела в виде буквы. Замечу, что отсчет по порядку начинается с нуля: 0,1,2 и т.д.
«multi(0)» означает, что устройством управляет основной контроллер IDE (обычно это единственный контроллер). Если система использует диски IDE, EIDE (расширенный IDE) или ESDI или адаптер SCSI без встроенной системы BIOS всегда используйте «multi».
«scsi(0)» означает, что устройством управляет основной контроллер SCSI. Если используются два контроллера SCSI и диск связан со вторым контроллером, этот контроллер обозначается как «scsi(1)».
«disk(0)» указывает, какую логическую единицу SCSI (LUN) нужно использовать. Это может быть отдельный диск, но в подавляющем большинстве систем SCSI для каждого идентификатора SCSI задана только одна логическая единица.
«rdisk(0)» обозначает физический диск 1. Это, как правило, жесткий диск в Setup BIOS помеченный как "Disk 0".
«partition(1)» – раздел на первом диске компьютера. Если разделов два (C и D), то partition(1) обозначает раздел C, а partition(2) – раздел D.
Если указан параметр «multi-boot», будет проверяться папка Winnt для загрузки с указанного диска и раздела контроллера SCSI.
"Windows" - папка с системными файлами.

4. Тонкости загрузки ОС
Так как только один раздел на жестком физическом диске может быть системным (активным), то именно на нем создаются файлы boot.ini, ntldr, ntdetect.com. Можно сказать, что эти файлы позволяют более гибко управлять процессом загрузки всех остальных систем. Сама система, создавшая эти три файла, Windows 2000/XP может располагаться на другом разделе и даже HDD. Только при установке Windows NT/2000/XP инсталлятор ведет себя корректно, добавляя в список систем уже существующие. Если вы установите Windows 9х или другую операционную систему, то она изменит главную загрузочную запись ссылкой на свой раздел. Таким образом, выбор ОС сделать будет уже нельзя, т.к. в MBR будет жестко прописано, что загрузочный сектор нужно брать на разделе с Windows 9х или др. ОС. Исправить можно ситуацию командой fixmbr из консоли восстановления. Если вы установите Windows 9х в один раздел вместе с другой ОС, то она перепишет загрузочный сектор раздела своим загрузчиком. Исправляется это командой fixboot из консоли восстановления.

5. Восстанавливаем начальную стадию загрузки.
Если вы видите странную надпись "NTLDR is missing", то возможен дефект в MBR или загрузочном секторе диска и он может быть устранен. Для этого даже предусмотрено два штатных средства — команда FIXMBR и FIXBOOT. Их можно вызвать из консоли восстановления, загрузившись с помощью установочных дискет или загрузочного компакт-диска. Плохие новости: без традиционного fdisk не обойтись. О роли загрузочных записей см. выше. Если вкратце: Главная загрузочная запись (MBR) отвечает за выбор операционной системы, а Загрузочная запись (Boot Record) — уже за загрузку конкретной ОС. Когда повреждена MBR, на экране чаще всего возникает непрерывный поток символов. Вначале посмотрим (из консоли восстановления), какие диски представлены в компьютере. Сделаем это командой map, которая в ответ выдаст что-то вроде C: \Device\Harddisk0\Partition1 - эта запись описывает таблицу распределения логических дисков в системе. Исправлять MBR конечно следует не в разделе, а на самом физическом диске. Поэтому выполним: fixmbr \Device\Harddisk0 . Нужно будет еще подтвердить свои намерения, набрав "y" и нажав Enter. Далее компьютер напишет, как прошла операция. О том, что нужно применять команду fixboot, говорят различные надписи, сообщающие об отсутствии операционной системы, т.е. невозможно загрузиться с раздела. Спасение в следующих строках: Fixboot \Device\Harddisk0\Partition1.Имейте в виду, устройства нумеруются с "0", а логические разделы — с "1". Если Windows все же не грузится, причиной может оказаться отсутствие активного раздела на диске. Стартуйте с дискеты MS-DOS (например с загрузочной дискеты Windows 95,98), запустите fdisk и назначьте признак активности основному разделу, на котором находятся системные файлы — ntldr, ntdetect.com, boot.ini. При исправном MBR и загрузочном секторе операционная система уже способна самостоятельно выдавать кое-какую отладочную информацию. Например, о том что нужен файл ntldr. При правильной настройке консоли восстановления его можно скопировать из папки, где хранятся резервные файлы или с дискеты. Иначе нужно будет применять утилиты, специально предназначенные для работы с NTFS.

6. Программы для новичков
Если не опытный пользователь, то лучше поставить какой-нибудь селектор загрузки. Это специальные программы от сторонних производителей.
Попробуйте использовать Acronis Disk Director Suite (пакет программ), там есть встроенный менеджер загрузки Acronis OS Selector(отдельная программа). Всё очень просто и удобно.
ИЛИ используйте программу SmartBootManager. (http://btmgr.webframe.org/index.php3)

Для написания статьи использовались источники:
М.Гук "Аппаратные средства IBM PC", ПитерПресс, 2004.
А.Чекмарев и др. "MS Windows 2000: server и professional", БХВ-Петербург, 2002г.
www.all-win.ru/ (http://www.all-win.ru/) Статья "Boot.ini - обзор возможностей" от DaBoogie
www.microsoft.com (http://www.microsoft.com) Коды статей: 314081, 323427, 289022

Источник: http://otchavo.net
ОтЧаВо, 2006