9 июня 2012

[Личный опыт]: Починяем потерявшуюся загрузку по F8 в Windows 7

Системное администрирование
Disclaimer: не ждите откровений. У меня возникла проблема, решение не смог ни нагуглить, ни нахабрить — пришлось решать самому. Кому-то из гуру может показаться очевидным, кому-то может пригодиться.

Недавно возникла задача перегрузить компьютер с Win7 в Safe Mode. Все как обычно: Restart, список вариантов загрузки, F8… и ничего! Нажатие F8 вместо отображения меню с вариантами Safe Mode и прочими твиками просто загружает Windows обычным способом. Непорядок!

Коллективный разум через Google Search подсказал, что можно загрузиться в Safe Mode через MSConfig.exe: запускаем, переходим во вкладку Boot, выбираем нужный вариант загрузки и ставим галку напротив Safe Mode. Пробуем — работает! Заканчиваем дела в Safe Mode (вычищаем недопроапгрейдившийся Outpost), запускаем MSConfig снова, снимаем галку Safe Mode и возвращаемся к нормальной жизни.

Проблема успешно обойдена, но не решена — разбираемся дальше. После медитации на экран с вариантами загрузки заметил, что нет сообщения «Press F8 for Advanced Boot Options». Интересно… Идем опять копаться в коллективном разуме: для достижения подобного эффекта предлагают патчить ntldr или ставить какие-то сторонние программы — не выход. Смотрим MSConfig (Boot -> Advanced Options, как бы созвучно) — ничего. Но MSConfig не показывает строки параметров загрузки (ладно, boot.ini в Win6.x уже нет, и строк никаких тоже нет) — смотрим bcdedit.exe:

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {1f0916c9-1973-11e0-9dde-cfa935f5faf7}
recoveryenabled         Yes
advancedoptions         No
osdevice                partition=C:
systemroot              \Windows
resumeobject            {1f0916c7-1973-11e0-9dde-cfa935f5faf7}
nx                      OptIn


А почему это advancedoptions = No? Правим: bcdedit.exe /set advancedoptions 1, перегружаемся — попадаем в Advanced Boot Options! Ура? Перегружаемся еще раз — снова попадаем в Advanced Boot Options!
Получается, или они всегда недоступны, или всегда показываются при загрузке — совсем не то, что нужно. Чтение справки bcdedit выявило еще один вариант: bcdedit.exe /deletevalue advancedoptions убирает форсированное включение/отключение Advanced Boot Options и позволяет пользователю выбирать — это оно!

Возможно, кому-то еще пригодится, если вдруг заметите, что F8 не срабатывает. Или, как защита от шаловливых ручек юзеров (в XP таки приходилось патчить ntldr). Должно точно так же работать в Vista, но не проверял. Интересно, какие еще фокусы можно творить с виндовым бутлоадером?
Теги:windows 7vistabootbcdedit
Хабы: Системное администрирование
+29
88k 204
Комментарии 41
Лучшие публикации за сутки

Минуточку внимания

Разместить