Поговорим о грустном... чтобы, столкнувшись с неприятной неожиданностью — "синим экраном смерти", вы не погрустнели вдвойне. Возможно, вы уже достаточно хорошо знакомы с продуктами из семейства Windows Server 2003, а также с предыдущими версиями Windows NT/2000/XP, но во время работы еще не попадали в такую ситуацию. Хотя эта система и надежнее предыдущих версий линейки Windows NT/2000, это не значит, что "синий экран смерти" — следствие серьезных ошибок — не возникнет никогда. Если даже такие ошибки и не появятся, вы все равно должны быть готовы устранить их!
Итак, "синий экран" можно увидеть и в Windows Server 2003. Когда система выявляет серьезную ошибку, которую не может самостоятельно устранить, она, в зависимости от типа ошибки, генерирует соответствующие системные сообщения, которые и известны под собирательным названием "синий экран".
Как и в Windows NT/2000/XP, исполняющая подсистема Windows Server 2003 (модуль Executive) представляет собой часть операционной системы, работающую в режиме ядра. Режим ядра (kernel mode) — это привилегированный режим работы процессора, в котором поток (thread) имеет доступ к системной памяти и к аппаратным средствам. Режимом пользователя (user mode) называется непривилегированный режим работы процессора, выполняясь в котором поток не имеет прямого доступа к системной памяти и аппаратным средствам, для получения такого доступа он должен обратиться к сервисам операционной системы. Модуль Executive обеспечивает структуру процессов, диспетчеризацию потоков, межпроцессную коммуникацию, управление памятью, управление объектами, безопасность и защиту объектов, обработку прерываний и ввод/вывод.
Ядро Windows (Ntoskrnl.exe) представляет собой часть модуля Executive, управляющую процессором. Ядро выполняет диспетчеризацию потоков, обработку исключений и прерываний, а также мультипроцессорную синхронизацию. Кроме того, ядро поставляет модулю Executive объекты-примитивы, из которых он создает объекты режима пользователя.
Итак, существуют два типа системных сообщений Windows 2000/XP и Windows Server 2003.
Сообщения STOP. Генерируются в символьном режиме и появляются, когда ядро выявит противоречивое состояние, из которого оно не способно выйти самостоятельно.
Сообщения о неисправности аппаратуры (Hardware malfunction messages). Как и сообщения STOP, эти сообщения также генерируются в символьном режиме. Их появление указывает на то, что система обнаружила аппаратную ошибку, после которой продолжение работы невозможно.
Практически для каждой ситуации, делающей невозможным продолжение работы системы, предусмотрены соответствующие сообщения. Как правило, для диагностики сообщений STOP и устранения причин, вызвавших их появление, большинству пользователей требуется техническая поддержка. Однако системный администратор должен иметь навыки устранения последствий аппаратных сбоев и уметь интерпретировать сообщения STOP.
В дополнение к перечисленным возможностям, операционные системы нового поколения - Windows XP и продукты из семейства Windows Server 2003 — включают еще одно нововведение — сервис сообщений об ошибках (Error Reporting service). В соответствии с политикой Microsoft, направленной на повышение качества поддержки пользователей, этот сервис предназначен в помощь пользователям, выполняющим устранение неполадок в работе операционной системы. Одновременно с этим, данная функциональная возможность призвана помочь разработчикам в улучшении качества последующих версий операционной системы. Сервис Error Reporting ведет мониторинг операционной системы, включая ошибки режима пользователя и ошибки режима ядра.
Так, в случае возникновения ошибки режима пользователя (например, ошибка в работе одного из приложений), сервис Error Reporting отображает сообщение, информирующее пользователя о возникновении проблемы (рис. 25.1). При этом пользователю предоставляется возможность отправить отчет об ошибке на адрес Microsoft, отказаться от отправки отчета или просмотреть техническую информацию о возникшей проблеме (рис. 25.2).
При возникновении ошибок режима ядра (например, сообщений STOP, кратко обсуждавшихся в предыдущем разделе) Windows запишет на диск компактный файл аварийного дампа, отобразит "синий экран", а после перезагрузки в нормальном или безопасном режиме отобразит сообщение, подобное приведенному на рис. 25.3. При этом, как и в предыдущем случае, пользователю предоставляется возможность отправить отчет о возникшей
ошибке на адрес Microsoft, отказаться от отправки отчета и просмотреть дополнительную техническую информацию.
Рис. 25.1. Сервис Error Reporting отображает сообщение, информирующее пользователя о произошедшей ошибке в работе приложения
Рис. 25.2. Окно, содержащее подробности о произошедшей ошибке в работе приложения
Вы можете вручную сконфигурировать сервис Error Reporting. Для этого выполните следующие операции:
1. Запустите утилиту System на панели управления, перейдите на вкладку Advanced (Допольнительно) и нажмите кнопку
Error Reporting (Отчет об ошибках). На экране появится окно Error Reporting
(рис. 25.4).
Рис. 25.3. Сервис Error Reporting отображает сообщение, информирующее пользователя о произошедшей серьезной ошибке
Рис. 25.4. Окно Error Reporting
2. В этом окне вы можете установить следующие опции:
Полностью блокировать сервис Error Reporting, установив переключатель
Disable error reporting (Отключить отчет об ошибках). Обратите внимание, что в этом случае вы можете установить опцию, которая позволит сервису все же сообщать вам о возникновении серьезных ошибок (например, ошибок ядра). Для этого следует установить флажок
But notify me when critical errors occur (Но уведомлять о критических ошибках) расположенный непосредственно под переключателем Disable error reporting.
Активизировать сервис Error Reporting, установив опцию Enable error reporting (Включить отчет об ошибках) и сконфигурировать типы ошибок, о которых сервис будет информировать пользователя. Так, если вы установите флажок
Windows operating system, сервис будет всегда сообщать о проблемах в работе компонентов режима ядра. Помимо этого, вы сможете активизировать уведомления о проблемах в работе программ, установив флажок
Programs. Нажатием кнопки Choose Programs (Выбор программ) вы можете выполнить дальнейшее конфигурирование сервиса
Error Reporting, сформировав список программ, для которых следует выводить подобные извещения.
По сравнению с Windows XP, в операционных системах из семейства Windows Server 2003 сервис Error Reporting обладает дополнительными возможностями. Так, например, при его конфигурировании вы имеете возможность задать опцию отслеживания незапланированных остановов системы (рис. 25.5), установив флажок Unplanned machine shutdowns. Также обратите внимание на флажок Force queue mode for program errors, при установке которого сервис Error Reporting будет выводить извещения об ошибках в режиме очереди. В случае множественных ошибок в работе приложений, сервис отобразит извещения о 10 последних ошибках, когда пользователь с административными правами зарегистрируется в системе. Каждое из сообщений будет отображено в отдельном окне, что предоставит администратору возможности выбора действий.
Рис. 25.5. Сообщение о незапланированном останове системы
Когда в системе возникает состояние ошибки STOP, Windows всегда создает компактный файл дампа памяти. Таким образом, сервис Error Reporting всегда может отправить отчет о проблеме, приложив этот файл дампа, даже если вы сконфигурировали систему таким образом, чтобы она создавала дамп ядра или даже полный дамп памяти.
Системы Windows XP и Windows Server 2003 дают администраторам возможность отслеживать причины перезагрузок и остановов компьютеров (рис. 25.6). Эта возможность обеспечивается с помощью функции Shutdown Event Tracker, которая регистрирует причину каждой перезагрузки и каждого останова в системном журнале (System log). Анализируя эту информацию (Event Type: Information; Event Source: USER32; Event ID: 1074),
системный администратор может выяснить наиболее распространенные причины перезагрузок и остановов системы, а также разработать меры, которые позволят минимизировать время простоя.
В Windows Server 2003 функция Shutdown Event Tracker no умолчанию активизирована; в Windows XP — не активизирована. Ее поведением можно управлять с помощью групповых политик (см. узел Computer Configuration | Administrative Templates | System)
Рис. 25.6. Функция Shutdown Event Tracker в Windows Server 2003
Если пользователь, обладающий правом останова системы (shutdown privilege), выполняя останов, сбрасывает флажок Planned (см. рис. 25.6), указывая тем самым на то, что данная операция является незапланированной, то система регистрирует данные об этом событии в файле журнала, который сохраняется в каталоге %SystemRoot%\system32\LogFiles\Shutdown\. Просматривать эти данные и составлять на их базе отчеты могут только пользователи с административными правами.
Прежде чем приступать к классификации ошибок STOP и обсуждению методов их устранения, необходимо обсудить подготовительные шаги, которые помогут ускорить восстановление системы в том случае, если вы все же столкнетесь с проблемой "синего экрана".
Причиной возникновения многих ошибок STOP может быть перезапись системного файла или некорректно работающий драйвер. При этом, как правило, ничего не подозревающий пользователь сам создает проблему, устанавливая программное обеспечение или драйверы, не совместимые с операционной системой. Эта проблема существовала во всех предыдущих версиях Windows NT. Начиная с Windows 2000, в состав операционной системы были введены дополнительные средства защиты системных файлов и драйверов с помощью цифровой подписи, которая гарантирует их совместимость и корректную работу в Windows. Во избежание возникновения проблем рекомендуется пользоваться этими средствами, подробно описанными в главе 23 "Восстановление системы". Так вы существенно снизите риск появления ошибок STOP.
Если даже вы сами никогда не будете выяснять причину возникновения ошибки — предположим, за вас это сделает специалист службы технической поддержки, — рекомендуется хотя бы сконфигурировать систему так, чтобы облегчить ему эту задачу. Вызовите утилиту System из Control Panel, в раскрывшемся диалоговом окне
System Properties (Свойства системы) перейдите на вкладку Advanced (Дополнительно) и нажмите кнопку
Startup and Recovery (Загрузка и восстановление). На экране появится окно
Startup and Recovery (рис. 25.7).
Группа опций System startup (Загрузка операционной системы), расположенная в верхней части окна, позволяет задать операционную систему, загружаемую по умолчанию (в случае, когда на компьютере установлено несколько операционных систем), и временной интервал, в течение которого на экране будет отображаться меню загрузки.
Группа, которая интересует нас в данном случае — System failure (Отказ системы), позволяющая определить поведение системы в случае возникновения ошибок STOP. Рассмотрим ее опции более подробно.
Рис. 25.7. Диалоговое окно Startup and Recovery
Системный журнал событий Windows — хороший источник информации, помогающей выяснить причину возникновения ошибки. Именно поэтому в любом случае рекомендуется установить флажок
Write an event to the system log (Записать событие в системный журнал) — тогда при каждом возникновении ошибки STOP в системном журнале событий будет делаться соответствующая запись. Пример такой записи приведен ниже:
Event ID:1001 Source: Save Dump Description:
The computer has rebooted from a bugcheck.
The bugcheck was :Oxc000021a (0xel270188,0x00000001,0x00000000,0x00000000).
Microsoft Windows NT (vl5.1381).
A dump was saved in: C:\WINDOWS\MEMORY.DMP.
Если установить флажок Send an administrative alert (Отправить административное оповещение), то в случае возникновения ошибки STOP на компьютер сетевого администратора будет отправляться административное уведомление.
Наконец, если компьютер, на котором происходит такая ошибка, необходимо как можно скорее привести в рабочее состояние, возможно, вы захотите, чтобы он автоматически перезагружался в случае возникновения ошибок
STOP. Для этого установите флажок Automatically reboot (Выполнить автоматическую перезагрузку).
Если ошибки, приводящие к появлению "синего экрана", появляются систематически, то наилучшим источником информации о причине их возникновения будет отладочный дамп. Для конфигурирования системы таким образом, чтобы при ее крахе содержимое физической памяти записывалось в файл на жестком диске, используются опции группы
Write debugging information (Сохранять отладочную информацию). Поле Dump file (Файл дампа) предназначено для ввода имени файла, в который будет сбрасываться эта информация, а установленный флажок
Overwrite any existing file (Заменять существующий файл дампа) определяет, что содержимое существующего файла дампа каждый раз будет замещаться новой информацией.
Начиная с Windows 2000, в процедуру сохранения отладочного дампа были внесены усовершенствования. В системе Windows NT 4.0 в отладочный дамп можно было записать только содержимое физической памяти компьютера. Объем файла, который при этом генерирует система, всегда несколько больше, нежели объем физической памяти, установленной на компьютере, и при этом значительная часть данных в файле дампа практически бесполезна. Как в Windows NT 4.0, так и в последующих системах ошибки STOP представляют собой ошибки ядра. Следовательно, именно информация ядра (состояние системы на момент возникновения ошибки, сведения об активных приложениях, загруженных драйверах устройств и т. д.) и представляет практический интерес при анализе дампа. Данные о режиме пользователя обычно просто увеличивают размер файла дампа и не предоставляют полезной информации.
Именно поэтому в Windows 2000 в диалоговом окне Startup and Recovery появилась новая опция, позволяющая регулировать размер файла аварийного дампа. Первый список в группе
Write debugging information (Запись отладочной информации) позволяет выбрать режим сохранения дампа. Наряду с возможностью сохранения полного дампа (как в Windows NT 4.0) в нем есть опция
Kernel memory dump (Дамп памяти ядра), при выборе которой в файле дампа будет сохранена только информация ядра. Средства анализа аварийного дампа, совместимые с Windows 2000, в том числе dumpexam и WinDbg, будут интерпретировать этот файл корректно. Экономия дискового пространства, которой можно добиться, выбрав эту опцию, может отличаться в разных системах (и даже зависеть от типа возникающих ошибок). Тем не менее, на основании практического опыта авторов можно сказать, что на компьютерах с объемом оперативной памяти 128 Мбайт полный дамп составит чуть более 128 Мбайт, а дамп ядра — около 40 Мбайт.
Windows XP и Windows Server 2003 предоставляют еще одну дополнительную возможность при сохранении аварийного дампа — компактный дамп памяти, задаваемый опцией
Small memory dump (64 К) (Малый дамп памяти). Если выбрана эта опция, то система сохранит только минимально необходимый
объем информации, требующейся для идентификации ошибки STOP и составления отчета. Компактные дампы чрезвычайно полезны в том случае, когда объем доступного дискового пространства ограничен, а также в случае использования медленных каналов связи при отправке отчетов об ошибках.
Как уже говорилось, сообщения STOP появляются, когда ядро операционной системы выявляет противоречивое состояние, из которого оно не может выйти самостоятельно. Такие сообщения всегда отображаются в полноэкранном текстовом режиме, а не в окне Windows (рис. 25.8). Каждое такое сообщение уникальным образом определяется шестнадцатеричным числом, идентифицирующим возникшую ошибку, и символьной строкой. Кроме того, за шестнадцатеричным числом, идентифицирующим сообщение STOP, как правило, следуют заключенные в круглые скобки шестнадцатеричные числа, каждое из которых указывает один из параметров возникшей ошибки. Число таких параметров может достигать четырех, как показано в примере:
*** STOP: 0x000000lE (0x00000005,0xFDE38AF9,0x00000001,0x7E8BOEB4) KMODE_EXCEPTION_NOT_HANDLED ***
Рис. 25.8. Пример экрана сообщения STOP
По символьной строке, идентифицирующей ошибку, можно предположительно определить, какой из компонентов системы был затронут ошибкой, после которой ядро не смогло восстановиться. Тем не менее, возможно, причина ошибки кроется в другом компоненте системы.
В отличие от предыдущих версий Windows NT, где экран сообщения STOP состоит из пяти основных частей, экран сообщения STOP в Windows 2000, Windows XP и Windows Server 2003 (см. рис. 25.8) содержит только три части.
Информация кода ошибки (bugcheck information).
Рекомендации пользователю (recommended user action).
Информация отладочного порта (debug port information).
Каждый раз при появлении сообщения STOP рекомендуется в первую очередь ознакомиться с информацией кода ошибки, помогающей ее устранить. Одно из важных нововведений, появившихся в Windows 2000 и присутствующих в Windows XP и Windows Server 2003 — теперь сообщения STOP включают рекомендации пользователю по устранению ошибок. Наконец, третья часть экрана сообщения STOP содержит информацию о сохранении отладочного дампа памяти, который впоследствии может быть использован отладчиком ядра.
Сообщения STOP можно классифицировать по следующим категориям:
сообщения, появляющиеся в процессе работы Windows;
сообщения, появляющиеся во время установки Windows;
сообщения, появляющиеся в процессе загрузки Windows;
сообщения, вызванные программными прерываниями (software trap).
Наиболее распространенные сообщения STOP генерируются во время выполнения стандартных повседневных операций. Даже в такой отказоустойчивой операционной системе, как Windows Server 2003, может произойти зависание системы с невозможностью продолжения работы, и появляется "синий экран" (сообщение STOP). В Windows NT/2000/XP и Windows Server 2003 появление сообщения STOP может быть вызвано необрабатываемой ошибкой (unhandled exception) в коде драйвера или файловой системы или выполнением недопустимой инструкции.
Информацию по конкретному сообщению STOP проще всего получить, выполнив поиск в Microsoft Knowledge Base и указав код ошибки.
Одним из вероятных вариантов исхода неудачной попытки установки Windows может быть появление сообщения STOP. Если это произойдет, в первую очередь проверьте все периферийные устройства компьютера на совместимость с Windows. Для этого возьмите последнюю версию списка совместимых аппаратных средств (HCL). Все компьютеры и устройства, включенные в этот список, тестировались Microsoft в жестких условиях и были признаны совместимыми с Windows. Список совместимости постоянно обновляется по мере того, как тестирование проходят все новые и новые устройства; его последнюю версию всегда можно найти на веб-сервере Microsoft.
Если используемое вами устройство не указано в HCL, обратитесь к поставщику устройства, т. к. только он может предоставить информацию о вновь тестируемых аппаратных средствах и/или доступных обновлениях BIOS. Кроме того, это сотрудничество позволит свести к минимуму трудозатраты при выявлении инсталляционных конфликтов.
Некоторые из сообщений STOP могут появляться только в течение относительно краткого периода инициализации модуля Executive (это — четвертая фаза загрузки Windows). Исполняющая подсистема Windows (модуль Executive) — это набор программных компонентов, предоставляющих базовые сервисы операционной системы. Как и при загрузке Windows NT 4.0, загрузку модуля Executive можно разделить на два этапа (этап 0 и этап 1). Во время этапа 0 прерывания блокированы, инициализированы лишь немногие компоненты модуля Executive, такие как уровень аппаратных абстракций (HAL). Во время выполнения этапа 1 система становится полностью работоспособной, и все компоненты Windows проходят инициализацию.
Если вы получите одно из сообщений STOP, появляющихся только на этапе 0 инициализации модуля Executive, запустите программу диагностики аппаратных средств, полученную от поставщика аппаратных средств. Сообщения STOP, появление которых возможно только на этапе 0 инициализации модуля Executive, перечислены в табл. 25.1.
Аппаратные сбои в Windows 2000/XP и Windows Server 2003 часто проявляются как ошибки, генерирующие сообщения STOP. Если при диагностике аппаратных средств не будет обнаружено никаких проблем, попытайтесь переустановить Windows. Если сообщение появится вновь, обратитесь в службу технической поддержки.
Таблица 25.1. Сообщения STOP, появляющиеся только на этапе О инициализации исполняющей подсистемы Windows
Код сообщения |
Символическое имя |
0x0031 |
PHASEO_INITIALIZATION_FAILED |
0x0050 |
HAL_INITIALIZATION_FAILED |
0x0050 |
HEAP INITIALIZATION_FAILED |
OxOOSE |
OBJECT INITIALIZATION FAILED |
OxOOSF |
SECURITY INITIALIZATION FAILED |
0x0060 |
PROCESS_INITIALIZATION_FAILED |
Сообщения STOP, которые могут появиться на этапе 1 инициализации модуля Executive, перечислены в табл. 25.2. Получив одно из таких сообщений, попытайтесь переустановить Windows, и если сообщение появится снова, обратитесь в службу технической поддержки.
Таблица 25.2. Сообщения STOP, появляющиеся только на этапе 1 инициализации исполняющей подсистемы Windows
Код сообщения |
Символическое имя |
0x0032 |
PHASE1_INITIALIZATION_FAILED |
0x0061 |
HAL1_INITIALIZATION_FAILED |
0x0062 |
OBJECT1_INITIALIZATION_FAILED |
0x0063 |
SECURITY1_INITIALIZATION_FAILED |
0x0064 |
SYMBOLIC_INITIALIZATION_FAILED |
0x0065 |
MEMORY1 INITIALIZATION FAILED |
0x0066 |
CACHE INITIALIZATION FAILED |
0x0067 |
CONFIG INITIALIZATION FAILED |
0x0068 |
FILE_INITIALIZATION_FAILED |
0x0069 |
I01_INITIALIZATION_FAILED |
ОхООбА |
LPC_INITIALIZATION__FAILED |
ОхООбВ |
PROCESSl INITIALIZATION FAILED |
ОхООбС |
REFMON_INITIALIZATION__FAILED |
0x0060 |
SESSION1_INITIALIZATION_FAILED |
ОхООбЕ |
SESSION2 INITIALIZATION FAILED |
ОхООбР |
SESSION3_INITIALIZATION_FAILED |
0x0070 |
SESSION4_INITIALIZATION FAILED |
0x0071 |
SESSIONS INITIALIZATION FAILED |
Эта группа сообщений STOP вызывается программными (или внутренними) прерываниями, или ловушками (software trap). Такие прерывания появляются при возникновении программных ошибок, после которых нормальное продолжение программы невозможно: например, при наличии в команде недопустимых операндов, при попытке деления на ноль, в случае выхода индекса массива за пределы допустимых значений или при обращении к памяти, находящейся за пределами стека.
Пример первой строки сообщения STOP, отображаемой для подобных сообщений STOP:
*** STOP: 0x000000TF (0x0000000n,00000000,00000000,00000000) UNEXPECTED_KERNEL_MODE_TRAP
Ошибка UNEXPECTED_KERNEL_MODE_TRAP указывает на то, что программная ошибка слишком серьезна и не позволяет продолжать работу. Примерами таких ошибок могут быть, например, деление на ноль или ошибка, возникающая в процессе обработки другой ошибки (так называемая двойная ошибка).
Получив одно из таких сообщений, запишите информацию о коде ошибки STOP и перезагрузите компьютер. Если сообщение появится повторно, для устранения проблемы вы можете принять следующие меры.
Выполнить диагностику проблемы, используя информацию и рекомендации, отображенные на экране сообщения STOP (в разделе рекомендаций пользователю). Дополнительная информация по наиболее распространенным сообщениям STOP, методам диагностики и устранения проблем, вызвавших их появление, приведена в сопроводительной документации к программному продукту Microsoft Windows Server 2003 Resource Kit.
Обратиться в службу технической поддержки.
Сообщения, свидетельствующие о неполадках в работе аппаратных средств, вызываются тем, что процессор выявляет ошибочные состояния устройств.
Первые две строки таких сообщений могут различаться (в зависимости от типа HAL (Hardware Abstraction Layer), загруженного при запуске системы). Типичный пример первых строк такого сообщения приведен ниже.
Hardware malfunction Call your hardware vendor for support
Информация, следующая за этими строками, предназначена для технического персонала, который будет выполнять диагностику аппаратных средств компьютера.
В редких ситуациях сообщения об аппаратном сбое в действительности могут быть вызваны ошибками в программах, в особенности — плохо разработанными драйверами.
В этом разделе дается общая методика, которой рекомендуется следовать при появлении экранов сообщений STOP, не содержащих конкретных инструкций по устранению возникшей ошибки. Выполняйте эти рекомендации поочередно, приступая к следующему шагу в том случае, если предыдущие не помогли решить проблему. Более подробные инструкции по устранению конкретных ошибок STOP приведены далее в этой главе.
Шаг 1. В первую очередь попробуйте перезагрузить компьютер. В некоторых случаях, когда ошибка возникла случайно, этого достаточно.
Что делать, если в процессе загрузки Windows постоянно появляется "синий экран", после чего компьютер автоматически перезагружается, и ошибка появляется снова? Это может происходить, если в процессе подготовки к устранению последствий ошибок STOP вы установите в окне
Startup and Recovery (Загрузка и восстановление) опцию автоматической перезагрузки компьютера при крахе системы, а ошибка STOP, делающая невозможной дальнейшую работу компьютера, будет возникать вновь и вновь. Легко догадаться, что каждый раз после ее появления компьютер будет перезагружаться, и цикл перезагрузок будет бесконечным. Как же выйти из этого порочного круга и хотя бы получить возможность исследовать возникающую ошибку STOP?
Данную проблему можно решить, установив на другом разделе жесткого диска этого компьютера еще одну копию Windows 2000/XP или Windows Server 2003 (одна из официальных рекомендаций Microsoft, которая приводится, например, в главах по обеспечению отказоустойчивости системы в продуктах Resource Kit):
1. Загрузите вторую копию Windows, вызовите редактор реестра (в Windows 2000 следует использовать приложение Regedt32) и раскройте ключ
HKEY_LOCAL_MACHINE.
2. Загрузите улей System той копии Windows, в которой возникла проблема (хотя подробная информация о местоположении ульев реестра приведена в главе 24 "Работа с системным реестром", напомним, что они располагаются в папке %SystemRoot^\system32\config,).
3. Когда вам будет предложено указать имя для загружаемого улья, введите любую строку, например, oldsystem.
После этого под ключом HKEY_LOCAL_MACHINE будет содержаться список следующих ульев:
HARDWARE oldsystem SAM SECURITY SOFTWARE SYSTEM
4. Раскройте улей oldsystem, найдите в составе ключа HKEY_LOCAL_MACHINE\
SYSTEM\ControlSetxxx\Control\CrashControl параметр AutoReboot и установите его значение в 0 (эту операцию надо проделать для всех наборов
ControlSetxxx).
5. Сверните ключ HKEY_LOCAL_MACHINE и выгрузите улей.
Теперь, когда опция автоматической перезагрузки при крахе системы блокирована, вы получили возможность исследовать сообщение STOP.
Шаг 2. Если после перезагрузки "синий экран" больше не появляется, то проблема решена (хотя бы временно). Не забудьте после запуска Windows просмотреть журнал системных событий. (Возможно, именно там вы обнаружите сообщения об ошибках, которые позволят идентифицировать источник проблемы.) Для этого запустите оснастку Event Viewer.
Шаг 3. Если ошибка STOP появилась при первой же перезагрузке компьютера после установки нового оборудования или дополнительного программного обеспечения, и вы еще не регистрировались в системе, то попробуйте перезагрузить компьютер, и при появлении списка доступных операционных систем нажмите клавишу <F8>. В появившемся меню выберите опцию
Last Known Good Configuration. Перезагрузка компьютера с использованием последней успешно загруженной конфигурации удалит все конфигурационные изменения, внесенные с момента последней успешной загрузки Windows.
Шаг 4. Если Windows все же не может нормально стартовать, попробуйте выполнить загрузку в безопасном режиме (safe mode), а затем блокировать или удалить вновь установленные программы и драйверы (подробная информация об опциях отладочного меню, выводимого при загрузке Windows при нажатии клавиши <F8>, приведена в главе 23 "Восстановление системы"). Просмотрите последнюю версию списка совместимых аппаратных средств (Hardware Compatibility List, HCL) и проверьте, все ли аппаратные средства, установленные на компьютере, присутствуют в этом списке. Убедитесь в правильности подключения всех вновь установленных устройств. Попробуйте отключить новые устройства или заменить их (возможно, именно это и решит проблему), а также запустить диагностическое программное обеспечение, полученное от поставщика данного компьютера. Особое внимание следует уделить тестированию памяти.
Шаг 5. Выполните сканирование компьютера на вирусы с помощью новейшей версии антивирусного программного обеспечения, совместимого с Windows. Вирусы могут повреждать как тома FAT, так и тома NTFS, и эти повреждения могут проявляться как ошибки STOP.
Шаг 6. Просмотрите базу знаний Microsoft, выполнив поиск по ключевым словам winnt и конкретному коду ошибки. Более подробная информация о Microsoft Knowledge Base приведена в последнем разделе данной главы, в списке источников дополнительной информации.
Этот раздел содержит краткую информацию и инструкции по устранению наиболее часто встречающихся ошибок STOP. Представленные здесь материалы собраны на основании статей Microsoft Knowledge Base, а также документации, входящей в состав программных продуктов из серии Resource Kit. Если, несмотря на все предпринятые вами меры, ошибка продолжает появляться, обратитесь в службу технической поддержки.
Это сообщение STOP, известное также под названием STOP OxOA, указывает на то, что процесс режима ядра пытался получить доступ к участку памяти на слишком высоком уровне запроса прерывания (Interrupt Request Level, IRQL), в то время как такие процессы могут получать доступ только к процессам с IRQL не более высоким, чем их собственный.
Рекомендации. Чаще всего эта ошибка бывает вызвана некорректно работающим драйвером устройств, системным сервисом или BIOS. Чтобы попытаться быстро выполнить восстановление после такой ошибки, попробуйте перезагрузить компьютер, при появлении списка доступных операционных систем нажмите клавишу <F8> и выберите опцию
Last Known Good Configuration.
Использование этой опции наиболее эффективно, если установка драйверов, сервисов и устройств производится по одному за раз.
Если сообщение появляется во время установки Windows, просмотрите HCL и убедитесь в том, что все установленные на компьютере периферийные устройства перечислены в этом списке.
Более подробная информация о диагностике ошибок STOP 0x0A приведена в Microsoft Knowledge Base в статье Q314063 "Troubleshooting a Stop
0x0000000A Error in Windows XP".
Это сообщение STOP, известное также как STOP 0xlE, указывает на то, что процесс режима ядра пытался выполнить недопустимую инструкцию.
Рекомендации. Проблема может быть вызвана несовместимыми аппаратными средствами, некорректно работающим драйвером или системным сервисом. Как правило, второй параметр этого сообщения идентифицирует проблемный драйвер или устройство его адресом (иногда может указываться имя этого драйвера). Попробуйте загрузить компьютер в безопасном режиме и блокировать указанный драйвер. Если это не поможет, то, как правило, проблему можно решить с помощью консоли восстановления (Recovery Console), см. главу 23 "Восстановление системы".
В ряде случаев может помочь блокирование кэширования памяти через программу BIOS Setup.
Это сообщение, известное также как STOP 0x24, указывает на проблему с драйвером Ntfs.sys, позволяющим системе выполнять чтение информации с томов NTFS и запись на такие тома.
Рекомендации. Чаще всего ошибка вызвана повреждением файловой системы NTFS или сбойными кластерами на жестком диске. Поврежденные драйверы SCSI и IDE также вызывают эту ошибку.
Рекомендации, позволяющие избежать ошибки такого рода, приведены в начале главы 23 "Восстановление системы". Если ошибка все же возникла, запустите программу chkdsk /f /r для устранения повреждений файловой системы.
Появление сообщения STOP 0x2E обычно указывает на ошибку четности в системной памяти. Эта ошибка всегда вызывается проблемами с аппаратными средствами, ошибками, допущенными при их конфигурировании, а также несовместимыми или дефектными аппаратными средствами.
Рекомендации. Если ошибка возникла после установки нового аппаратного компонента, попробуйте удалить вновь установленное оборудование. Запустите диагностические утилиты, полученные от поставщика аппаратных средств. Иногда ошибка может быть вызвана повреждением жесткого диска, и в этом случае воспользуйтесь консолью восстановления (Recovery Console).
Эти сообщения (STOP 0x50) появляются, когда запрошенные данные не найдены в памяти. Система при этом генерирует так называемую страничную ошибку или страничное прерывание (page fault), которая при обычных условиях означает, что система ищет данные в файле подкачки (paging file). В этом случае, однако, искомые данные идентифицируются системой как находящиеся в резидентном пуле (nonpaged pool), а это значит, что они ни при каких обстоятельствах не могли быть сброшены на диск. Таким образом, система не может найти требуемые данные и, следовательно, не может продолжать работу. Этот тип ошибки может быть вызван дефектными аппаратными средствами, некорректно работающим системным сервисом, резидентным антивирусным программным обеспечением, несовместимым с операционной системой, и повреждениями файловой системы NTFS.
Рекомендации. Если ошибка произошла сразу же после установки нового устройства, попробуйте удалить его, чтобы проверить повторяемость ошибки. Чтобы исключить отказ уже установленных аппаратных средств, запустите диагностическую утилиту, полученную от поставщика компьютера (чаще всего эта ошибка генерируется дефектными микросхемами RAM).
В случае несовместимых или некорректно работающих системных сервисов можно попытаться использовать последнюю успешно загруженную конфигурацию (см. главу 23 "Восстановление системы"). Если проблема вызвана повреждением тома NTFS, ее поможет решить запуск программы chkdsk /f /r. Иногда помогает блокирование кэширования памяти в BIOS,
Сообщения STOP (STOP 0x77) указывают, что ядро не может прочесть запрошенную страницу из файла подкачки.
Рекомендации. Чаще всего причину возникновения этой ошибки можно определить по второму параметру сообщения (значение этого параметра следует записать). Список наиболее распространенных кодов приведен ниже.
0хС000009А — STATUS_INSUFFICIENT_RESOURCES. Недостаточный объем нерезидентного пула.
0хС000009С — STATUS_DEVICE_DATA_ERROR. Чаще всего является результатом появления плохих блоков на жестком диске.
0xC000009D — STATUS_DEVICE_NOT_CONNECTED. Чаще всего указывает на неправильное подключение жесткого диска.
0хС000016А — STATUS_DISK_OPERATION__FAILED. Чаще всего вызывается плохими блоками на жестком диске.
0хС0000185 — STATUS_IO_DEVICE_ERROR. Чаще всего возникает при неправильном подключении устройств SCSI или при попытке двух устройств использовать одно и то же прерывание.
Это наиболее распространенные коды, полный список можно найти в файле Ntstatus.h, входящем в состав продукта Windows Server 2003 Device Driver Kit (DDK).
Эти сообщения (STOP 0x79) появляются при несовпадении уровня аппаратных абстракций (HAL) и ядра или типа компьютера, в основном, при смешении конфигурационных файлов однопроцессорной и многопроцессорных систем в пределах одной системы.
Рекомендации. Чаще всего эта ошибка возникает после ручной модификации или переписывания файлов Ntoskrnl.exe и Hal.dll. Эта ошибка может также указывать на несовпадение версий этих файлов (например, версия HAL предназначена для одной ОС, а версия ядра — для другой). Возможно также, что на компьютере по ошибке используется мультипроцессорный HAL и однопроцессорное ядро (или наоборот).
Для устранения этой проблемы необходимо использовать диск автоматического восстановления (ASR) или консоль восстановления (Recovery Console).
Это сообщение (STOP 0x7А) указывает на то, что запрошенная страница данных ядра не могла быть считана в память из файла подкачки. Обычно ошибка вызвана появлением плохих блоков в файле подкачки, вирусами, ошибками контроллера жесткого диска или дефектной RAM.
Рекомендации. Выполните сканирование системы на вирусы, проверьте правильность подключения дисков и запустите диагностические утилиты, полученные от поставщика аппаратных средств. В случае необходимости проведите восстановление системы с помощью Recovery Console.
Это сообщение (STOP 0x7B) появляется в процессе запуска системы и указывает на то, что в процессе загрузки система потеряла доступ к загрузочному диску.
Рекомендации. Причиной возникновения ошибки могут быть сбой загрузочного диска, поврежденный драйвер загрузочного устройства, повреждение системного раздела, установка нового адаптера SCSI или контроллера жесткого диска.
Возможно, проблема может быть решена редактированием файла Boot.ini. Более подробную информацию по данному вопросу можно найти в Microsoft Knowledge Base в статье "BOOT.INI and ARC Path Naming Conventions and Usage"
Если такая ошибка возникает в процессе установки системы, возможно, используется несовместимый жесткий диск или контроллер SCSI. Если программа Setup автоматически распознала контроллер, возможно, при установке системы следует пропустить фазу детектирования (поиска оборудования) и вручную указать драйвер, который должен быть загружен. Для этого: когда система на текстовой фазе инсталляции предложит нажать клавишу <F6>, чтобы указать драйвер накопителя вручную, следует нажать клавишу и вставить дискету с драйвером, полученным от поставщика этого устройства.
Если в системе недавно было установлено новое устройство (особенно жесткие диски или контроллеры), поможет использование опции Last Known Good Configuration в меню, выводимом после нажатия клавиши <F8>.
Наконец, эта ошибка может быть следствием повреждения жесткого диска. Если ошибка появляется раньше, чем вы можете зарегистрироваться в системе, запустите консоль восстановления и выполните команду chkdsk /f /r.
Сообщения STOP 0x7F указывают на фатальную ошибку, вызванную программным прерыванием. Иногда эти ошибки могут быть вызваны программным обеспечением, но в большинстве случаев они являются следствием аппаратного сбоя.
Рекомендации. Первый и самый главный параметр этого сообщения (0х0000000х) принимает различные значения в зависимости от типа ошибки (полный список всех кодов можно найти в Windows Server 2003 Device Driver Kit).
Если ошибка происходит после установки нового устройства, и после установки этого устройства вы еще не регистрировались в системе, положение может исправить использование опции
Last Known Good Configuration.
Убедитесь в том, что все жесткие диски, контроллеры и адаптеры SCSI перечислены в HCL и установлены правильно. Чтобы исключить аппаратный сбой одного из устройств, которое раньше работало нормально (особенно это относится к памяти), запустите диагностические утилиты, полученные от поставщика компьютера. Следует отметить, что эта ошибка может также быть вызвана неумелым разгоном процессора (в этом случае верните процессор к его штатной тактовой частоте).
Редкий случай, когда сообщение STOP вызвано сбоем сервиса, работающего не в режиме ядра, а в режиме пользователя. Это сообщение (STOP OxC2lA) появляется, когда одна из подсистем (например, Winlogon или CSRSS), настолько повреждена, что операционная система не может гарантировать безопасности и переключается в режим ядра с генерацией этой ошибки.
Рекомендации. Подробную информацию о кодах статуса этой ошибки (первый из трех параметров) можно найти в файле Ntstatus.h, входящем в состав программного продукта Windows Server 2003 Device Driver Kit (DDK).
Поскольку ошибка STOP OxC21A происходит в режиме пользователя, наиболее вероятной ее причиной являются плохо работающие приложения третьих фирм. Воспользуйтесь опцией
Last Known Good Configuration.
Это сообщение STOP (STOP 0xC221) указывает на повреждение драйвера или системного файла DLL. Как правило, в сообщении STOP указывается имя файла, вызвавшего проблему.
Отладка ядра оказывается исключительно полезным средством, когда все другие методы устранения ошибок STOP не помогли, или когда проблема повторяется часто. В этих случаях отладка предоставляет способ определить, какой именно код драйвера дает сбой, путем перехватывания точного текста сообщения об ошибке.
В первую очередь необходимо определить некоторые общие термины и процедуры, которые потребуются при отладке сообщений ядра STOP.
Когда операционная система сталкивается с аппаратными проблемами, противоречивостью данных, необходимых для ее работы, или иными подобными ошибками, она обрабатывает эту ситуацию на основании информации, введенной в диалоговом окне
Startup and Recovery.
Если пользователь в этом диалоговом окне не указал опцию Automatically Reboot, Windows отображает синий экран, на который выводится информация об ошибке, после чего работа операционной системы останавливается.
В Microsoft Knowledge Base и другой документации по Windows это состояние часто называется "синим экраном" (blue screen), ошибкой ядра (kernel STOP error) или программной ловушкой (software trap). Все эти термины используются для обозначения таких состояний операционной системы, когда ядро, обнаружив ошибку, может выполнить запись в файл дампа памяти (эта процедура может являться частью процесса обработки ошибки).
Как правило, при компиляции кода могут быть созданы две версии исполняемого файла — отладочная версия (debug version, известная также под названием checked version) и обычная (nodebug или free). Отладочная версия содержит дополнительный код, который позволяет разработчику отлаживать программу. Файл отладочной версии имеет больший размер и исполняется медленнее. Обычная версия исполняемого файла компактнее и исполняется быстрее, но не позволяет осуществлять отладку.
Все исполняемые файлы, DLL, драйверы и другие программы представляют собой обычные (не-отладочные) версии. Каждому программному файлу ставится в соответствие символьный файл, который содержит отладочный код. Отладочная версия Windows, а также инструкции по ее установке входят в состав программного продукта Windows Device Driver Kit (DDK). Отладочная версия находится в подкаталоге Symbols, который содержит подкаталоги для файлов каждого типа (exe, dll, sys). Эта структура называется символьным деревом (symbol tree).
Утилитам, используемым для отладки или для интерпретации файлов дампа памяти, требуется символьное дерево, в котором содержатся символьные файлы соответствующей версии Windows NT/2000/XP или Windows Server 2003 (на момент, когда имеет место ошибка ядра STOP). Некоторые утилиты требуют, чтобы подкаталог \Symbols находился на жестком диске в каталоге %SystemRoot%. Некоторые утилиты допускают указание пути к подкаталогу \Symbols в качестве одной из опций командной строки (в режиме командной строки или в диалоговом окне).
Отладка ядра требует наличия двух компьютеров — так называемого целевого компьютера (target machine) и хост-компьютера (host machine).
Термин "целевой компьютер" (target computer) относится к компьютеру, на котором происходит ошибка ядра STOP. Именно этот компьютер и является отлаживаемым. Он может располагаться где угодно — как в нескольких шагах от компьютера, на котором работает отладчик, так и на достаточно большом расстоянии (связь можно поддерживать через модем).
Термин "хост-компьютер" (host computer) в данной главе относится к компьютеру, на котором вы запускаете отладчик. Этот компьютер должен работать под управлением версии Windows, по крайней мере такой же (или более новой), как и отлаживаемый компьютер.
Программный продукт Windows DDK содержит графический отладчик WinDbg, применяемый для отладки драйверов и приложений, работающих как в режиме пользователя, так и в режиме ядра. Подробная информация об использовании и конфигурировании отладчика содержится в файле справочной системы, поставляемом в комплекте с отладчиком.
Отладчик можно использовать как для локальной, так и для удаленной отладки ядра. Если вы применяете локальную отладку, то хост-компьютер находится в нескольких шагах от целевого и взаимодействует с ним через нуль-модемный кабель. Если вы используете удаленную отладку, то хост-компьютер может находиться на любом расстоянии от целевого, поскольку они взаимодействуют через модемы.
Оба компьютера обмениваются отладочной информацией через коммуникационные порты. Порты на обоих компьютерах должны быть сконфигурированы на одну и ту же скорость передачи данных, выраженную в битах в секунду (бит/с).
После появления "синего экрана" запишите всю важную информацию, которая была выведена в сообщении, и перезагрузите компьютер. Возможно, вам потребуется сконфигурировать целевой компьютер для локальной или удаленной отладки и перезагрузить систему еще раз. После этого вы можете работать с Windows до тех пор, пока сообщение не появится снова. Когда "синий экран" появится еще раз, обратитесь к местному специалисту технической поддержки за помощью. На этом этапе можно решить, как будет проводиться отладка (локально или удаленно). Специалисты технической поддержки могут проинструктировать вас по вопросам конфигурирования системы для отладки.
Если принято решение использовать отладчик ядра для анализа ошибки ядра STOP, вам потребуется установить хост и соединить целевой и хост-компьютеры. Для этого необходимо использовать нуль-модемный кабель (в случае проведения локального отладочного сеанса) или модемный кабель (в случае удаленной отладки).
Прежде чем начинать отладку, выполните подготовительные действия:
1. Установите соединение между двумя компьютерами через модем или нуль-модемный кабель.
2. Сконфигурируйте целевой компьютер для отладки.
3. Установите в хост-системе символьное дерево.
4. Установите в хост-системе отладчик.
5. Запустите отладчик в хост-системе.
Установка сеанса удаленной отладки. Если вы активизируете отладчик ядра на целевом компьютере, он будет отправлять отладочную информацию на хост-компьютер, чтобы ее смог анализировать удаленный пользователь. Выполнение этой процедуры часто требуют специалисты из группы поддержки, чтобы собрать информацию, необходимую им для анализа фатальной ошибки, особенно если эту информацию невозможно получить из файла дампа или файл дампа не создается.
Чтобы сконфигурировать систему для удаленной отладки, необходимо изменить загрузочные опции операционной системы таким образом, чтобы на этапе загрузки выполнялась загрузка отладчика ядра. На платформах х86 это делается путем редактирования файла Boot.ini. Кроме того, необходимо подключить внешний модем к соответствующему СОМ-порту целевого компьютера и соединить его с входным (inbound) телефонным каналом.
Установка модема на целевом компьютере. Чтобы установить сеанс удаленной отладки, необходимо подключить к целевому компьютеру внешний модем и переконфигурировать параметры модема таким образом, чтобы они соответствовали требованиям отладчика ядра. Чтобы сконфигурировать модем, необходимо иметь возможность запустить программу Terminal.exe или другую подобную коммуникационную утилиту. Если запуск таких программ на целевом компьютере невозможен, сконфигурируйте модем на другом компьютере, имеющем близкие конфигурационные параметры. Подключите сконфигурированный модем к целевому компьютеру и убедитесь, что он работает. Использование внутренних модемов в данном случае невозможно, т. к. при перезагрузке система сбрасывает изменения, внесенные в их конфигурацию.
Модем необходимо подключить к свободному СОМ-порту и установить конфигурационные параметры:
Auto answer mode |
On |
Hardware compression |
Disabled |
Error detection |
Disabled |
Flow control |
Disabled |
Рекомендуются скорости nepef. |
\ач\л данных: 9600 бит/с для систем х86 |
Просмотрите документацию по модему и найдите правильные значения строк для процесса удаленного конфигурирования.
Редактирование файла Boot.ini на целевом компьютере. Чтобы сконфигурировать отлаживаемый компьютер для проведения сеанса отладки, необходимо отредактировать опции загрузки в файле Boot.ini таким образом, чтобы система загрузила отладчик ядра.
Опции отладчика. Ниже перечислены опции отладчика, которые можно использовать при конфигурировании системы для сеанса отладки.
/Debug |
Приводит к загрузке отладчика на этапе загрузки системы. Отладчик остается в памяти компьютера в течение всего времени работы. Это означает, что специалист из группы поддержки может через модем вмешаться в работу отладчика, даже если система не зависла и сообщение STOP не появилось |
/Debugport |
Указывает последовательный порт, который должен использоваться отладчиком ядра. Если последовательный порт не указан, отладчик по умолчанию будет использовать порт COM2 на компьютерах х86 и СОМ1 в системах с RISC-процессорами |
/Crashdebug |
Отладчик загружается при загрузке системы, но остается неактивным до тех пор, пока не произойдет сбой. Это позволяет другим приложениям использовать указанный СОМ-порт (по умолчанию используется СОМ1) в течение всего времени, пока система еще работает |
/Baudrate |
Задает скорость передачи данных, которую будет использовать отладчик ядра. По умолчанию задается скорость 19 200 бит/с, которая является нормальной при удаленной отладке через модем |
Чтобы сконфигурировать отлаживаемый компьютер на платформе х86, отредактируйте файл Boot.ini с использованием стандартного текстового редактора и добавьте в этот файл соответствующие опции отладчика.
К сожалению, здесь невозможно более подробно описать интереснейшую и увлекательнейшую (хотя и весьма сложную) тему устранения ошибок STOP, анализа аварийного дампа и работу с отладочным сеансом.
Авторы считают своим долгом отослать заинтересованных читателей к источникам информации, где они могут получить исчерпывающие ответы на все интересующие их вопросы. Вот список этих источников:
http://msdn.microsoft.com/windowserver2003 — масса полезной информации для разработчиков, в том числе можно загрузить версию Windows Server 2003 Device Driver Kit;
http://www.microsoft.com/windows/reskits — информация о продуктах Resource Kit;
http://www.microsoft.com/ddk/debugging/ — ссылки на дополнительные источники с информацией по отладке. Полный справочник по отладке, начиная с установки отладочного режима и заканчивая подробным списком всех команд отладчика ядра;
http://support.microsoft.com — статьи Microsoft Knowledge Base, содержащие полную и подробную информацию об устранении ошибок STOP.