Найти тему
Заметки гика

Черный экран смерти в Windows. Что это и как бороться.

Оглавление

Проблемы разных этапов загрузки операционной системы Windows довольно широко распространены и нашли своё отражение в большом количестве разнообразных ошибок, возникающих при выполнении кода из секторов MBR/PBR , модулей Bootmgr, Winload, NToskrnl, Winlogon, Userinit и драйверов/сервисов стартующих на этапах запуска, одним словом, всех тех компонентов, которые участвуют в процессе загрузки ОС. Не так давно в своей практике я несколько раз столкнулся с одной из подобных проблем и решил написать небольшую шпаргалку с решениями проблем, поскольку всегда предпочитаю систематизировать подобного рода ошибки. Из всего множества сбоев, возникающих на этапе загрузки Windows, хотелось бы отдельно отметить ошибки, называемые Черным Экраном Смерти (Black Screen of Death).

KSoD появляется, в основном, после экрана загрузки ОС
KSoD появляется, в основном, после экрана загрузки ОС

Для начала стоит классифицировать виды ошибок, дабы выявить сбои по времени возникновения:

  1. Черный экран, возникающий на этапе загрузки/функционирования кода секторов Master Boot Record (MBR) и Partition Boot Record (PBR), появляется когда код BIOS не может загрузить сектор с диска и не выводит на экран никаких диагностических сообщений. Появляется после процедуры POST (заставки производителя материнской платы или тестовых сообщений о составе оборудования). Курсор не отображается. При нажатии на клавиши слышен звуковой сигнал.
  2. Черный экран, возникающий до отображения экрана запуска Windows. Отображается текстовый курсор.
  3. Черный экран, возникающий после отображения экрана загрузки Windows. Отображается графический курсор мыши.

Последний пункт, а именно черный экран с графическим курсором Windows, распространен чаще всего, и лично я сталкивался с ним большее количество раз.

Чёрный экран с графическим курсором
Чёрный экран с графическим курсором

Имеются подозрения, что система обработки ошибок Windows в различных модулях содержит недоработки, не предусматривающие информирование пользователя о проблеме на уровне системы, вместо этого происходит "аккуратная" остановка процесса, формируя отказ в загрузке модулей следующего этапа, результатом чего является черный экран смерти, который штатно должен являться всего-лишь переходом от окончания одной стадии к началу другой.

Мы всегда сталкиваемся с черным экраном при загрузке операционной системы, но при нормальном течении процесса загрузки он кратковременен и мы попросту не акцентируем на нем свое внимание.

Для того, чтобы проводить дальнейшие экзекуции, мы рассмотрим теоретический материал по этапам загрузки операционной системы Windows. Для начала давайте классифицируем причины возникновения черных экранов смерти:

  • Отказы на этапах загрузки/работы кода секторов MBR/PBR;
  • Невозможность загрузки драйверов;
  • Повреждение данных реестра;
  • Отказ в запуске критически важных сервисов/служб;
  • Отказ в доступе к файловой системе;
  • Повреждение исполняемых файлов критически важных драйверов;
  • Битая пользовательская оболочка Проводника;
  • Аппаратные проблемы видеоадаптера;

Рассмотрим некоторые виды причин возникновения ошибок и их решения.

Отказ на этапе работы кода MBR/PBR

Общая методика исправления проблем с загрузочными секторами состоит в запуске серии команд:

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

Выполнить команды можно из командной строки в системе восстановления Windows или с командной строки установочного носителя.

Восстановление загрузочных записей
Восстановление загрузочных записей

Повреждение куста реестра

Вне зависимости от наличия ошибок, связанных с повреждением реестра, восстановление по описанной в данном разделе методике является обязательным пунктом, с которого следует всегда начинать.

Разработчики из Microsoft предоставляют техническим специалистам превосходное средство под названием DaRT (Diagnostics and Recovery Toolset). Не утверждаю что это лучшее средство восстановление из имеющихся в природе, однако оно определенно имеет место быть и помогает, поскольку имеет возможность (при загрузке с внешнего носителя) подцеплять различные функциональные части системы с основного системного носителя (HDD/SSD) и работать с ними как с нативными, сохраняя иллюзию работы в диагностируемой операционной системе как в "активной".

Поскольку самостоятельно система не загружается ни в одном из режимов, мы вынуждены воспользоваться DaRT на внешнем носителе и загрузиться с него. После окончания загрузки и прохождения первичных этапов настройки, мы попадаем в окно Параметры восстановления системы, выбираем пункт Microsoft Diagnostics and Recovery Toolset. В открывшемся окне запускаем оснастку Управление компьютером, после запуска которой, в левом фрейме, выбираем пункт дерева Просмотр событий и далее выделяем пункт Журналы Windows, а затем щелкаем по System.

Утилита журналирования Windows
Утилита журналирования Windows

Теперь перед нашими глазами списки событий, возвращаем их на дату сбоя, и начинаем просматривать, последовательно двигаясь по списку событий от более ранних к более поздним.

Восстановление реестра

Хорошим выбором решения проблемы будет самостоятельное восстановление реестра. Для этого можно использовать как встроенную консоль восстановления, так и загрузочный носитель со средствами DaRT. Можно выполнить полное восстановление всех кустов реестра из консоли восстановления.

Для этого необходимо определить диск, на котором находятся системные файлы. Резервная копия файлов реестра размещается по пути <диск>:\Windows\System32\config\RegBack , а фактическое местоположение файлов реестра <диск>:\Windows\System32\config. Конечно же, само копирование можно выполнить разнообразными способами, например с применением любой программы, имеющей интерфейс открытия файла, в котором можно запросто копировать файлы, перемещаясь из директории в директорию. Не имея расширенного инструментария можно воспользоваться утилитой типа xcopy:

xcopy C:\windows\system32\config\regback C:\windows\system32\config /y
Утилита xcopy
Утилита xcopy

Утилита скопирует файлы DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM из подкаталога RegBack в директорию config, перезаписывая уже находящиеся в целевой папке файлы реестра. На этом процедура восстановления реестра завершена.

После окончания процесса копирования файла закрываем консоль. Для этого можно нажать на значок закрытия окна, либо в командной строке набрать команду exit и вернуться в меню выбора параметров восстановления. Потом нажимаем кнопку Перезагрузка для инициирования процесса перезагрузки. После перезагрузки я увидел долгожданный графический экран приветствия, система благополучно загрузилась.

Битая оболочка (проводник)

Иногда наблюдаются случаи, когда к черному экрану смерти приводит некорректная работа пользовательской оболочки. В системе Windows присутствует несколько системных механизмов:

  • На одной из последних стадий загрузки операционной системы модуль Winlogon.exe запускает модуль под названием Userinit.exe, который запускает скрипты стадии загрузки, а затем вызывает оболочку explorer.exe, более известную как Проводник.
  • В системе имеется еще один механизм под названием параметры загрузки образов, позволяющий управлять различными аспектами загрузки любых исполняемых файлов, к которым можно отнести все без исключения программы. Одной из особенностей данного механизма является возможность производить отладку любой исполняемой программы, тем самым предваряя его запуск загрузкой стороннего приложения.

Понятное дело, что всеми этими возможностями активно пользуются разработчики вирусного ПО. В случае подмены сторонняя оболочка, получая управление, либо не выполняет своих функций из-за ошибки в коде, либо вовсе изначально не спроектирована для поддержки функционала, присущего стандартному проводнику, результатом чего может являться появление черного экрана смерти.

Восстановление оболочки

Поскольку загрузка у нас заканчивается черным экраном смерти, для решения подобной задачи можно воспользоваться следующими методами:

  • После появления черного экрана смерти попробовать несколько раз нажать комбинацию клавиш Ctrl+Alt+Del или Ctrl+Shift+Esc. Если нажатие прошло и в первом случае высветился список, то запустить Диспетчер задач, во втором Диспетчер задач откроется автоматически. В открывшемся окне выбираем вкладку Файл, жмем кнопку Новая задача. В открывшемся небольшом окошке, в строке ввода набираем explorer и нажимаем Ок. Таким образом мы собственноручно запустим проводник;
  • Если предыдущий метод на сработал, то потребуется загрузиться с внешнего носителя, содержащего средства восстановления (DaRT или любой другой);

Поскольку настройка оболочки хранится в системном реестре, нам потребуется запустить редактор реестра Regedit.exe, при помощи которого мы и будем производить необходимые изменения. В реестре за настройку пользовательской оболочки отвечает следующий ключ:

  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Проверяем параметр Shell, который должен содержать значение explorer.exe, а затем проверяем параметр Userinit (программы, загружаемые процессом Winlogon на этапе входа пользователя в систему), который должен содержать значение C:\Windows\system32\userinit.exe,. Символ "запятая" в конце пути должен присутствовать по-умолчанию. Если в дальнейшем данное решение не поможет, то имеет место попробовать убрать запятую в параметре "userinit.exe", потому что именно это решение меня спасало очень много раз.

Редактор реестра с правильными ключами
Редактор реестра с правильными ключами

Как Вы уже поняли, восстановление работоспособности сводится к проверке наличия сторонних записей в приведенных выше ключах реестра и восстановлении указанных значений по умолчанию. После внесения изменений в ключи реестра, потребуется выполнить перезагрузку в ОС.

Очистка параметров загрузки образов

Теперь посмотрим параметры загрузки образов, нет ли там ключей, относящихся к explorer. Поскольку при помощи специальных параметров можно перехватить загрузку исполняемого образа проводника и заменить её на загрузку стороннего пользовательского приложения. Настройки параметров загрузки хранятся в следующих ключах реестра:

  • HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options;
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options;
Кусты реестра с параметрами загрузки образов
Кусты реестра с параметрами загрузки образов

Указанные разделы содержат ключи, включающие имена загружаемых образов, которые, в свою очередь, содержат параметры, описывающие разнообразные опции для запуска той или иной программы. Таким образом, при злонамеренной эксплуатации данного механизма по отношению к проводнику, возможна первичная загрузка неправильного кода, которая может привести к последующей некорректной работе или вовсе отказу проводника. Проще говоря, если присутствует ключ с именем explorer.exe и в нем созданы какие либо параметры, то каждый раз при попытке запуска проводника будет запускаться и указанное стороннее приложение. Если вы обнаружили в описанных выше ветках реестра ключ explorer.exe - удаляйте его.

Проверка целостности системных файлов

Существует еще один способ поиска причины возникновения черного экрана смерти, и название ему - sfc, то есть утилита, выполняющая проверку целостности системных файлов. Разработчики добавили возможность работы из командной строки консоли восстановления, поэтому для выполнения проверки для проведения проверки необходимо загрузиться в одном из режимов:

  • до начала загрузки ОС в режим Устранение неполадок компьютера ;
  • загрузиться с установочного диска ОС в режим Восстановление системы;
  • загрузиться с образа LiveCD (DaRT);
В случае запуска из командной строки среды восстановления или LiveCD, переменные окружения не заданы, поэтому требуется дополнительная настройка окружения для утилиты sfc. Сперва нам потребуется задать переменную окружения WINDOWS_TRACING_LOGFILE для указания расположения файла с результатами работы, в противном случае вы просто не найдете результатов проверки:
set WINDOWS_TRACING_LOGFILE=C:\logsfc.log
Этой командой мы задаем путь для записи результатов работы утилиты sfc.

Во всех перечисленных режимах нам надо загрузиться в командную строку. Непосредственно при запуске утилиты, нам требуется задать ряд дополнительных параметров командной строки, конкретизирующих пути системной директории установки Windows и раздела загрузочного диска:

sfc /scannow /offbootdir=С:\ /offwindir=С:\Windows

После запуска стартует процесс проверки, который может продолжаться довольно длительное время.

Проверка целостности системных файлов
Проверка целостности системных файлов

Не важно, произвела утилита sfc восстановление поврежденных файлов или нет, мы получаем в свое распоряжение перечень проблемных файлов, сохраненный в logsfc.log, указанный нами заранее, далее, в крайнем случае, мы имеем возможность восстановить их с любой аналогичной рабочей системы.

Итоговый алгоритм выявления проблемы

При возникновении черного экрана смерти нужно:

  1. Визуально убедиться в отсутствии аппаратных неисправностей загрузочного носителя;
  2. Загрузиться с удобного для вас средства восстановления (Установочный диск Windows/DaRT/LiveCD);
  3. Программно проверить загрузочный носитель на наличие битых блоков/поврежденной ФС;
  4. Проверить исправность ключей проводника/параметров загрузки образов. При необходимости восстановить;
  5. В случае нахождения событий, сообщающих о повреждении кустов реестра: вручную восстановить необходимые или все кусты реестра;
  6. Произвести (через LiveCD/DaRT) проверку целостности системных файлов;

В случае необходимости, приоритетно, восстанавливаем реестр. Если с реестром все в порядке, а есть проблемы с загрузкой сервисов, то пытаемся восстановить их запуск.

Windows
66,2 тыс интересуются