html

вторник, 25 июня 2013 г.

Протокол загрузки Ntbtlog.txt


1 Ведение протокола загрузки Ntbtlog.txt

Если вы загружаете систему в безопасном режиме или если вы указали явно этот параметр в файле Boot.ini, Ntldr передает ядру Windows вместе с параметрами, устанавливающими безопасный режим, и параметр /BOOTLOG. При инициализации ядро проверяет наличие параметра /BOOTLOG, также независимо от того, задан ли безопасный режим. Если ядро обнаруживает соответствующую строку в файле Boot.ini  , оно протоколирует все свои действия при загрузке каждого драйвера.

Так, если функция IopSafeBootDriverLoad запрещает загрузку какого-либо драйвера, диспетчер ввода-вывода вызывает функцию IopBootLog, регистрируя, что данный драйвер не загружен. Аналогичным образом после успешной загрузки драйвера, входящего в конфигурацию безопасного режима, IopLoadDriver вызывает IopBootLog для внесения записи о загрузке этого драйвера. Изучив файлы протокола загрузки Ntbtlog.txt , можно выяснить, какие драйверы являются частью данной конфигурации.

Поскольку ядро избегает изменения данных на диске до запуска Chkdsk, который происходит на более позднем этапе загрузки, IopBootLog не может просто сбрасывать записи в файл. Вместо этого она записывает их в раздел реестра HKLM\SYSTEM\CurrentControlSet\BootLog. Диспетчер сеансов (Smss.exe), первый загружаемый компонент пользовательского режима, запускает Chkdsk для проверки целостности системного диска, а потом завершает инициализацию реестра, вызывая NtInitializeRegistry. Этот вызов указывает ядру, что уже можно безопасно открыть на диске файл протокола, что и делается вызовом IopCopyBootLogRegistryToFile. Эта функция создает в системном каталоге Windows (по умолчанию — \Windows) файл Ntbtlog.txt и копирует в него содержимое раздела реестра BootLog. IopCopyBootLogRegistryToFile также устанавливает флаг, сигнализирующий IopBootLog о возможности записи непосредственно в файл протокола.

Таким образом, до запуска Smss.exe файл Ntbtlog.txt не создан. Если загрузка зависла до момента запуска  Smss.exe, то лога загрузки в файле Ntbtlog.txt мы не увидим

2 Примеры строки в Boot.ini для ведения протокола загрузки Ntbtlog.txt

2.1.
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect /sos /bootlog

/sos /bootlog  - для ведения лога Ntbtlog.txt и показа названий загружаемых драйверов при загрузке. 
Вид загрузки изменится. Будет при начале напоминать загрузку в Безопасном режиме.

2.2.
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect /bootlog

/bootlog  - только для ведения лога Ntbtlog.txt. Вид загрузки не изменится

3 полезные ссылки

--  Не записываются при включении ведения журнала загрузки файла Ntbtlog.txt
--  Внутреннее устройство Windows

Посты по теме :

Комментариев нет: