Q: Купил в январе систему (Athlon 1600XP+, 256ОЗУ, MS-6380 ATX Mainboard (K7T266 Pro2-RU), GeForce2 DDR (64MB), SoundBlaster Live! 5.1) на Савёловском рынке, собрали и поставили (предварительно купленный) WINDOWS XP HOME EDITION в компьютерной фирме рядом с домом. Система пахала исправно, но требовала регистрации, переустановил на Professional, и в феврале всё счастье накрылось (синий экран и т.п.). Захотелось поставить Win 98, Me, ничего не устанавливалось, и поставил опять XP Professional — всё работало исправно, но через месяц опять всё упало. Переустановил ту же винду (привык к красоте и удобству), но прошёл месяц, и опять переустановка. Всё восстановил, через месяц при сканировании сис-мы антивирусником появился… вы угадали — синий экран. Новый месяц уже на исходе, считаю дни. Вчера запуская игру, показался он — синий экран смерти, выдал какие-то нули:
STOP : 0x0000007a (0xE17ABA94,0xC000000e,0xBF8F92C8,0X039D860) KERNEL_DATA_INPAGE_ERROR win32k.sys — ADRESS BF8F92C8 BASE AT BF800000, DATESTAMP 3b7de698
Перезагрузился, вставил диск и через несколько попыток запустился и тут же снова повис. Плюнул на всё и пошёл спать. С утра всё загрузилось без проблем, как будто и не было ночных кошмаров, однако при ежедневном сканировании NORTON ANTIVIRUS появился синий:
Мне интересно, так у всех виснет, или я такой счастливый? Как с этим бороться «кувалдой и молотком»?
А: Боюсь, ваша проблема близка сердцу многих пользователей, а потому стоит рассмотреть её поподробнее. Стоп-сообщения об ошибках — печально знаменитые «синие экраны смерти», Blue Screen of Death, BSOD — возникают в системах семейства Windows NT в том случае, если операционная система обнаруживает фатальный сбой, в результате которого она не может продолжить своё функционирование. Как известно, у обычных программ в Windows NT, если можно так выразиться, несколько ограниченные полномочия. Однако существуют и такие процессы, которым позволено всё — работающие в режиме ядра, имеющие доступ ко всей системе. ОС никак не может предотвратить некорректные или ошибочные операции таких процессов и при возникновении в них сбоя просто прекращает свою работу и радует пользователя весёлым BSOD с трудновоспринимаемыми кодами (на самом деле, BSOD появляется даже при простых сбоях процессов, работающих в режиме ядра, при которых работа ОС в целом могла бы быть продолжена). Правда, если система настроена таким образом, что при возникновении сбоя происходит автоматическая перезагрузка, то удовольствие лицезреть BSOD минует пользователя (отключить автоматическую перезагрузку можно в диалоге «Свойства Системы», на вкладке «Загрузка и восстановление»). Сообщения STOP содержат специальный, идентифицирующий каждое из них, шестнадцатеричный код (например — STOP: 0x000000DI, плюс некие параметры), соответствующий этому коду текстовый идентификатор (например — IRQL_NOT_LESS_OR_EQUAL), информацию отладочного порта, а также не всегда бесполезные рекомендации пользователю по возможным способам устранения причин сбоя. В ряде случаев в тексте BSOD может упоминаться имя файла или устройства, связанного с причинами сбоя и адрес памяти, по которому возникла проблема. Всего стоп-кодов порядка 200 — подробно с ними можно познакомиться в документе Error and Event Messages из состава Windows 2000 Server Resource Kit или в статье Q103059 базы данных службы технической поддержки Microsoft, чаще всего же обычным пользователям во время работы (BSOD, возникающие, например, при установке системы, и связанные главным образом с несовместимостью оборудования, рассматривать пока не будем) встречается «горячая дюжина» наиболее распространённых BSOD:
KMODE_EXCEPTION_NOT_HANDLED — процесс режима ядра попытался выполнить недопустимую или неизвестную процессорную инструкцию. Может быть связан с несовместимостью «железа», неисправностью оборудования, ошибками в драйвере или системной службе.
NTFS_FILE_SYSTEM — сбой при выполнении кода драйвера файловой системы ntfs.sys. Причиной может являться нарушение целостности данных на диске (сбойный кластер) или в памяти, повреждение драйверов IDE или SCSI.
DATA_BUS_ERROR — в оперативной памяти обнаружена ошибка чётности. Причина — дефектное или несовместимое оборудование, например — сбой в микросхеме кэша второго уровня, в видеопамяти. Также может быть связан с некорректно работающим или неверно сконфигурированным драйвером, со сбоем на диске.
IRQL_NOT_LESS_OR_EQUAL — процесс режима ядра попытался обратиться к области памяти, используя недопустимо высокий для него уровень IRQL (Interrupt Request Level). Может быть вызван ошибками в драйвере, системной службе, BIOS или несовместимым драйвером, службой, программным обеспечением (например — антивирусом).
PAGE_FAULT_IN_NONPAGED_AREA — запрашиваемые данные отсутствуют в памяти (например, система ищет нужные данные в файле подкачки, но не находит их). Обычно связан со сбоем оборудования (дефектная память), нарушением файловой системы, ошибкой системной службы или антивируса.
KERNEL_STACK_INPAGE_ERROR — не удаётся прочитать из файла подкачки в физическую память запрашиваемую страницу памяти. Причины — дефектный сектор файла виртуальной памяти, сбой контроллера жёстких дисков, недостаточно места на диске, неправильное подключение жёсткого диска, конфликт прерываний, дефект ОЗУ, вирус.
MISMATCHED_HAL — уровень аппаратных абстракций (HAL) и ядро системы не соответствуют типу компьютера. Чаще всего связан с ситуацией, когда в изначально однопроцессорную систему устанавливают второй процессор, забывая вручную обновить HAL и ntoskrnl. Может также быть вызван несовпадением версий hal.dll и ntoskrnl.exe.
KERNEL_DATA_INPAGE_ERROR — не удаётся прочитать в физическую память запрашиваемую страницу данных. Причины — дефектный сектор файла виртуальной памяти, сбой контроллера жёстких дисков, сбой оперативной памяти, вирус, сбой дискового контроллера, дефектная оперативная память.
INACCESSIBLE_BOOT_DEVICE — в процессе загрузки ОС не смогла получить доступ к системному разделу. Причин этого распространённого сбоя может быть очень много: дефектный загрузочный диск или дисковый контроллер; несовместимость оборудования; загрузочный вирус; ошибка в файловой системе, например — в таблице разделов Partition Table; повреждение или отсутствие необходимого при загрузке файла, например — NTLDR; отсутствие драйвера контроллера жёстких дисков или несоответствие текущего драйвера установленному оборудованию; включённый в BIOS режим DMA; включённый в CMOS Setup режим смены букв дисководов DRIVE SWAPPING; конфликт распределения ресурсов между дисковым контроллером и другим устройством; повреждение данных о загружаемых драйверах в системном реестре; установка системы в раздел за пределами первых 1024 цилиндров жёсткого диска; ошибка в файле boot.ini.
UNEXPECTED_KERNEL_MODE_TRAP — возникновение неподдерживаемой ядром ловушки (trap) или фатальная ошибка (типа деления на ноль). Неисправность оборудования или сбой программного обеспечения.
STATUS_SYSTEM_PROCESS_TERMINATED — сбой в службе, работающей в пользовательском режиме. Сбой может быть связан с некорректной работой прикладных программ, драйверов, сторонних системных служб.
STATUS_IMAGE_CHECKSUM_MISMATCH — повреждён или утерян файл драйвера или системной библиотеки. Может быть вызван сбоем файловой системы или случайным удалением системного файла.
Исходя из этих данных и следует планировать процесс поиска причин сбоя, который может включать в себя:
удаление устаревших или несовместимых приложений;
удаление не имеющих цифровой подписи драйверов;
обновление программного обеспечения и драйверов оборудования;
удаление несовместимого оборудования;
проверка файловой системы;
сканирование антивирусом;
проверка системных файлов с помощью утилиты sfc.exe (команда sfc /scannow);
тестирование или замена памяти;
установка последних обновлений и патчей операционной системы и программного обеспечения;
изменение настроек CMOS Setup, например — отключение кэширования или режима DMA;
восстановление главной загрузочной записи (MBR) и системного загрузчика Windows NT;
проверка правильности подключения дисков, дисковых контроллеров и SCSI-адаптеров;
отказ от разгона;
переустановка системы, наконец.
В вашей же ситуации я бы начал поиск причин неисправности с замены оперативной памяти — последнее время очень часто именно она является причиной проблем многих пользователей. Разумеется, ни в коем случае нельзя пренебрегать поиском решения сбоя в базе данных службы технической поддержки Microsoft (http://search.support.microsoft.com/kb/c.asp) — способы решения многих проблем давно известны и описаны. В принципе, можно заставить систему сделать при сбое полный дамп содержимого оперативной памяти, однако, смысл сей процедуры появляется только при наличии полной поддержки со стороны производителя вызывающего сбой программного обеспечения или со стороны разработчика или поставщика операционной системы, поскольку разобраться с дампом вряд ли сможет даже системный администратор средней руки, не говоря уже об обычном пользователе. В особо тяжёлых случаях система вылетает в BSOD сразу же после загрузки или непосредственно в её процессе, и нет никакой возможности заняться поиском причины сбоя, провести диагностику или удалить проблемный драйвер. В этом случае вам может помочь выбор при загрузке режима защиты от сбоев или загрузка последней удачной конфигурации, временное удаление всех устройств, кроме жёсткого диска и видеокарты.
Так что «кувалдой и молотком» бороться с BSOD не надо. Лучше запастись терпением и почитать документацию.