Андрей Смирнов
Время чтения: ~15 мин.
Просмотров: 12

Windows Boot Manager — что это? Основные понятия, ошибки и методы их исправления

Диспетчер загрузки Windows, Boot menu и BIOSid.jpg Многие начинающие пользователи долгие годы работают в заводской операционной системе и не догадываются о многочисленных подземных лабиринтах компьютера. Загружается ОС — да и ладно, зачем лезть туда, где темно и сыро:). Диспетчер загрузки Windows Но стоит любому из нас установить вторую Windows или создать загрузочный раздел на жёстком диске, как <strike>веки открываются</strike> перед нашим взором, появляется изумительное зрелище в виде Диспетчера загрузки Windows. system.jpg Многие Диспетчер загрузки Windows путают с Boot menu (не нужно этого делать). Как только прошёл внутренний этап подготовки компьютера, Windows Boot Manager предлагает пользователю выбрать нужную ОС или программное обеспечение (например, Acronis или Macrium Reflect). Как настроить Менеджер Загрузки Windows. Это можно сделать в программе EasyBCD или нажать на клавиши Win+R ➨ msconfig ➨ Загрузка ➨ начинаем думать, какую систему использовать по умолчанию и меняем таймаут:sistem.png Boot menu При установке ОС с дискового носителя или флешки необходимо выставлять приоритет загрузки выбранных устройств в BIOS. Но для этого не обязательно «погружаться» так «глубоко». BIOS — подземное царство, где разобраться начинающему пользователю архисложно. Лучше использовать Boot menu. В меню загрузки всё на поверхности и относительно понятно.boot_menu.png Многие Boot menu путают с BIOS (не нужно этого делать).Бут менюпредназначено для упрощения выбора устройств, с которых возможно произвести загрузку: флешка, дисковод, определённый файл или загрузочный раздел на жёстком диске. Лайфхак, если вы не знаете, как зайти в Boot menu на вашем гаджете. Делайте вид, что вы пианист и во время перезагрузки компьютера/ноутбука проводите указательным пальцем по всем клавишам от ESC до DEL. Хотя нет… Например, мне, чтобы зайти в Boot menu нужно жмакать F9, а для входа в BIOS — F10. Кнопки совсем рядом… и не факт, что вместо boot menu окажешься в bios. Совсем вас запутал. Вот вам маленькая шпаргалка.

  • Моноблоки и ноутбуки HP — клавиша F9 или Esc, а затем — F9
  • Lenovo — F12
  • Ноутбуки Dell — F12
  • Ноутбуки Samsung — Esc
  • Ноутбуки Toshiba — F12
  • Материнские платы Gigabyte — F12
  • Материнские платы Intel — Esc
  • Материнские платы Asus — F8
  • Материнские платы MSI — F11
  • AsRock — F11
  • Acer

Вход в Boot menu Acer для разных версий BIOS осуществляется путем нажатия клавиши F12 при включении. Однако, есть одна особенность — часто, вход в Boot menu по F12 не работает по умолчанию и для того, чтобы клавиша заработала, необходимо сначала зайти в BIOS, нажав клавишу F2, а потом переключить параметр «F12 Boot menu» в состояние Enabled, после чего сохранить настройки и выйти из BIOS.

  •  Asus

Практически для всех настольных компьютеров с материнскими платами Asus, вход в меню загрузки осуществляется нажатием клавиши F8. C ноутбуками всё более сложно. Чтобы зайти в Boot menu на ноутбуках ASUS, в зависимости от модели, нужно при включении нажать:     Esc — для большинства современных моделей.     F8 — для тех моделей ноутбуков Asus, название которых начинается с x или k, например x502c или k601 (но и это не всегда срабатывает). Если совсем тяжко, читайте большую компьютерную энциклопедию о методологических критериях и требованиях к вашему гаджету:).Если вы часто устанавливаете новые операционные системы или создаёте дополнительные загрузочные разделы на жёстком диске, ваше меню загрузки очень быстро превратится в мусорку. Чисткой лишних записей можно заняться в программе Bootice или ручками в командной строке.Удаление лишних записей из boot menu (ролик):Команды для cmd:bcdedit /enum firmware bcdedit /export newbcd copy newbcd bcdbackup bcdedit /store newbcd /delete {dfe4ca24-a691-11e9-8303-806e6f6e6963} bcdedit /import newbcd /clean  BIOS Многие BIOS путают с Boot menu или Windows Boot Manager (не нужно этого делать). Много разлогольствовать о BIOS не будем, так как лично мной там были сделаны некоторые мелкие настройки и больше туда никогда не захожу. Включил поддержку аппаратной виртуализации и «вырубил» Secure Boot, чтобы эта «бяка» не мешала устанавливать Windows 7 и многие дистрибутивы Linux:1496183.png Иногда мне приходиться в «подземном каземате ковыряться» в OS Boot Manager, возможно это мой единичный слушай, без которого в ноутбуке HP, не «вызволить из плена» загрузчик Grub или rEFInd Boot Manager. Как это делаю подробно описано в этой статье: https://oleglav.blogspot.com/2019/06/refind-boot-manager.html Таблица для клавиш входа в BIOS: https://www.windxp.com.ru/articles106.htm Вам уже, наверное, пора на природу? А я тут со своими Диспетчер загрузки Windows, Boot menu или BIOS… ¡оɹоdƍоɓ wɐʚ оɹǝɔʚ и оƍиɔɐuɔ ǝǝнɐdɐε ¡oıqɯɐɯɔ ǝɯn̯ʎdиɯнǝwwоʞ онʚиɯʞɐ и vɐнɐʞ ɐн qɔǝɯиmиuɓоu ˙хʁɯǝɔ˙ǹоɔ ʚ wоɯɔоu ʁɔqɯиvǝɓоu ǝɯqɓʎƍɐε ǝн    

  • Tutorial

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?

Я обещал «самое краткое руководство». Вот оно:

  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  4. После перезагрузки видим меню загрузчика(Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному «пути по-умолчанию», где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

Как делать не надо

Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.

Не надо лезть в NVRAM и трогать efivars

Наиболее «популярная» процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок «исполняемого файла EFI», позволяющий прошивке его запускать без внешнего загрузчика.

При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.

Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на «Маках», команда bcfg утилиты uefi shell (запускается из-под UEFI, «на голом железе» и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, «в настройках BIOS»).

За всеми вышенаписанными «многобуков» вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) «кирпичил» свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию «зайти в настройки».

Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции «редактировать существующую запись». Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:

efibootmgr -c -L "Archlinux (debug)" -l 'EFIarchlinuxvmlinuz-linux' -u "root=/dev/mapper/vg1-lvroot rw initrd=EFIarchlinuxinitramfs-linux.img systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0"

Не надо использовать GRUB

Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию

grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub

Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой

bootctl install --path=/boot

Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.

«Самое краткое руководство» — чуть более подробно

Загрузочное меню надо реализовывать на уровне загрузчика — править текстовые конфиги гораздо проще и безопасней.

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI

Что такое «EFI-раздел»? В теории, он должен иметь особый тип «EFI System» (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).

Пункт 3: «Скачиваем из интернета любой UEFI-загрузчик». Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.

Пункт 4: «Настроить конфиг». Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог «loader», а в нём файл «loader.conf» с тремя строчками (привожу свои):

default     archlinux timeout     10 editor      1

Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.

Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:

title          Arch Linux linux          /efi/archlinux/vmlinuz-linux initrd         /efi/archlinux/initramfs-linux.img options        root=/dev/mapper/vg1-lvroot rw initrd=EFIarchlinuxintel-ucode.img

Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.

Другие загрузчики

systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.

rEFind — очень красивый загрузчик. Скачать можно тут в виде deb-пакета. Использую на своём ноуте. Умеет создавать загрузочное меню автоматически, без конфига — просто сканируя файлы.

Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.

Различные неочевидные последствия

Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.

Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.

Как восстановить загрузчик Windows 10Если после установки второй ОС, попыток воспользоваться свободным местом на скрытых разделах диска или их форматирования, в случае системных сбоев, при экспериментах с EasyBCD и в других случаях вы столкнулись с тем, что Windows 10 не загружается, сообщая «An operating system wasn’t found», «No bootable device found. Insert boot disk and press any key», то, возможно, вам требуется восстановление загрузчика Windows 10, о чем и пойдет речь ниже.

Вне зависимости от того, UEFI у вас или BIOS, установлена ли система на GPT диск со скрытым FAT32 разделом EFI загрузки или на MBR с разделом «Зарезервировано системой», действия по восстановлению будут одинаковыми для большинства ситуаций. Если ничто из нижеописанного не помогает, попробуйте Сброс Windows 10 с сохранением данных (третьим способом).

Примечание: ошибки, подобные указанным выше, необязательно вызваны поврежденным загрузчиком ОС. Причиной может оказаться вставленный компакт-диск или подключенный USB-накопитель (попробуйте вынуть), новый дополнительный жесткий диск или проблемы с имеющимся жестким диском (прежде всего взгляните, а виден ли он в БИОС).

Автоматическое восстановление загрузчика

Среда восстановления Windows 10 предлагает опцию восстановления при загрузке, которое работает на удивление хорошо и в большинстве случаев оказывается достаточным (но не всегда). Чтобы восстановить загрузчик данным способом, проделайте следующие действия.

  1. Загрузитесь с диска восстановления Windows 10 или загрузочной флешки с Windows 10 в той же разрядности, что и ваша система (диска). Для выбора накопителя для загрузки можно использовать Boot Menu.
  2. В случае загрузки с установочного накопителя, на экране после выбора языка внизу слева нажмите пункт Восстановление системы. Запуск восстановления системы
  3. Выберите пункт Поиск и устранение неисправностей, а затем — Восстановление при загрузке. Выберите целевую операционную систему. Дальнейший процесс будет произведен автоматически. Автоматическое восстановление загрузчика

По завершении вы либо увидите сообщение о том, что восстановление не удалось, либо компьютер автоматически перезагрузится (не забудьте вернуть загрузку с жесткого диска в БИОС) уже в восстановленную систему (но не всегда).

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

Процедура восстановления вручную

Для восстановления загрузчика вам потребуется либо дистрибутив Windows 10 (загрузочная флешка или диск), либо диск восстановления Windows 10. Если вы ими не обзавелись, придется воспользоваться другим компьютером для их создания. Подробнее о том, как сделать диск восстановления можно прочитать в статье Восстановление Windows 10.

Следующий этап — загрузиться с указанного носителя, поставив загрузку с него в БИОС (UEFI), либо используя Boot Menu. После загрузки, если это установочная флешка или диск, на экране выбора языка нажмите клавиши Shift + F10 (откроется командная строка). Если это диск восстановления в меню выберите Диагностика — Дополнительные параметры — Командная строка.

В командной строке введите по порядку три команды (после каждой нажимаем Enter):

  1. diskpart
  2. list volume
  3. exit

Список томов в Diskpart

В результате выполнения команды list volume, вы увидите список подключенных томов. Запомните букву того тома, на котором располагаются файлы Windows 10 (в процессе восстановления это может быть не раздел C, а раздел под какой-либо другой буквой).

В большинстве случаев (на компьютере только одна ОС Windows 10, скрытый раздел EFI или MBR в наличии), для того, чтобы восстановить загрузчик, достаточно после этого выполнить одну команду:

bcdboot c:windows (где вместо C может потребоваться указать другую букву, о чем было сказано выше).

Примечание: если на компьютере несколько ОС, например, Windows 10 и 8.1, вы можете выполнить эту команду дважды, в первом случае указав путь к файлам одной ОС, во втором — другой (не сработает для Linux и XP. Для 7-ки зависит от конфигурации).

Исправление загрузчика в bcdboot

После выполнения этой команды вы увидите сообщение о том, что файлы загрузки успешно созданы. Можно попробовать перезагрузить компьютер в обычном режиме (вынув загрузочную флешку или диск) и проверить, загружается ли система (после некоторых сбоев загрузка происходит не сразу после восстановления загрузчика, а после проверки HDD или SSD и перезагрузки, также может проявиться ошибка 0xc0000001, которая в этом случае также обычно исправляется простой перезагрузкой).

Второй способ восстановить загрузчик Windows 10

Если вышеописанный способ не сработал, то возвращаемся в командную строку так же, как делали это ранее. Вводим команды diskpart, а потом — list volume. И изучаем подключенные разделы дисков.

Если у вас система с UEFI и GPT, в списке вы должны увидеть скрытый раздел с файловой системой FAT32 и размером 99-300 Мб. Если же BIOS и MBR, то должен обнаружиться раздел размером 500 Мб (после чистой установки Windows 10) или меньше с файловой системой NTFS. Вам требуется номер этого раздела N (Том 0, Том 1 и т.д.). Также обратите внимание на букву, соответствующую разделу, на котором хранятся файлы Windows.

Загрузочный том EFI

Введите по порядку следующие команды:

  1. select volume N
  2. format fs=fat32 или format fs=ntfs (в зависимости от того, какая файловая система на разделе).
  3. assign letter=Z (присваиваем букву Z этому разделу).
  4. exit (выходим из Diskpart)
  5. bcdboot C:Windows /s Z: /f ALL (где C: — диск с файлами Windows, Z: — буква, которую мы присвоили скрытому разделу).
  6. Если у вас несколько ОС Windows, повторите команду для второй копии (с новым расположением файлов).
  7. diskpart
  8. list volume
  9. select volume N (номер скрытого тома, которому мы присваивали букву)
  10. remove letter=Z (удаляем букву, чтобы том не отображался в системе, когда мы перезагрузимся).
  11. exit

По завершении, закрываем командную строку и перезагружаем компьютер уже не с внешнего загрузочного накопителя, проверяем, загружается ли Windows 10.

Надеюсь, изложенная информация сможет вам помочь. Кстати, можно попробовать также и «Восстановление при загрузке» в дополнительных параметрах загрузки или с диска восстановления Windows 10. К сожалению, не всегда все проходит гладко, и проблема легко решается: часто (при отсутствии повреждений HDD, что тоже может быть) приходится прибегать к переустановке ОС.

Обновление (пришло в комментариях, а я что-то о способе забыл в статье написать): также можно попробовать простую команду bootrec.exe /fixboot (см. Использование bootrec.exe для исправления загрузочных записей).

Используемые источники:

  • https://oleglav.blogspot.com/2019/07/dispetcher-zagruzki-windows.html
  • https://habr.com/post/314412/
  • https://remontka.pro/windows-10-bootloader-fix/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации