Как отредактировать windows boot manager

Как отредактировать загрузку нескольких ОС Windows, Linux — как выбрать какую систему загружать по умолчанию (настройка GRUB)

Как отредактировать windows boot manager

Подскажите, с одной проблемой. У меня на диске была установлена Windows 10, затем я установил еще одну Windows. Теперь по умолчанию после включения компьютера — загружается именно вторая новая система (мне же приходится вручную на этапе загрузки успевать указывать свою «родную» 10-ку).

Как сделать так, чтобы по умолчанию стартовала моя основная Windows 10. Спасибо!

Да, вы правы, при установке еще одной версии ОС Windows — она будет загружаться по умолчанию! Исправить это можно 👉 в свойствах системы (ниже покажу на примерах, как это делается).

Как отредактировать windows boot manager

Настройка загрузки: выбор ОС по умолчанию

Если установлено несколько версий ОС Windows 7/10/11

Вариант 1

Обратите внимание на фото с окном выбора ОС ниже 👇 (такое, обычно, бывает при использовании Windows 10/11, в Windows 7 — просто список на «черном» фоне).

Как отредактировать windows boot manager

Окно, появляющееся после вкл. ПК/ноутбука (по умолчанию 30 сек. отображается)

Далее появится окно, в котором вы сможете установить таймер (как долго будет отображаться окно с выбором ОС) и выбрать ОС по умолчанию. Если предложенных параметров недостаточно — загрузите пока какую-нибудь копию Windows и переходите к нижеприведенным инструкциям.

Как отредактировать windows boot manager

Вариант 2

Выбрать ОС Windows по умолчанию (как уже говорил выше) можно в 👉 свойствах системы.

Самый простой способ открыть их — вызвать меню «Выполнить» (сочетание кнопок Win+R ) и использовать команду sysdm.cpl (также это команду можно использовать в диспетчере задач).

Как отредактировать windows boot manager

sysdm.cpl — диспетчер задач

Как отредактировать windows boot manager

Загрузка и восстановление системы, отладочная информация

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

Важно! Рекомендую с осторожностью выставлять значение «0» в таймере отображения списка ОС Windows! Например, если вы ошибочно укажите «0» и выберите «неработающую» ОС — могут быть сложности при загрузке. (и придется прибегать к восстановлению).

Как отредактировать windows boot manager

Операционная система, загружаемая по умолчанию

Вариант 3 (+ удаление «ненужных» ОС)

Этот способ хорош еще и тем, что позволяет удалить ненужные ОС (правда, с этим следует быть осторожным: если надумали удалять что-то — 👉 см. эту инструкцию ).

Как отредактировать windows boot manager

Как отредактировать windows boot manager

msconfig — конфигурация системы

Если установлена Linux + ОС Windows (меню GNU GRUB)

Как отредактировать windows boot manager

GNU Grub // меню после вкл. ПК/ноутбука // В качестве примера

Для ее установки в Ubuntu используйте команду:

sudo apt install grub-customizer

Если появятся ошибки — попробуйте выполнить поочередно следующие команды:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

Как отредактировать windows boot manager

Пример установки и запуска grub-customizer (Linux Mint)

Далее откройте окно основных настроек и установите время отображения меню Grub, а также тот пункт в списке, который будет выбран по умолчанию (в моем случае это Windows Boot Manager). 👇

Как отредактировать windows boot manager

Есть также вкладка «Настройки оформления» — может быть архи-полезна, если на вашем экране элементы Grub выглядят мелко / или плохо-читаемы. Шрифт текста можно увеличить вручную!

Как отредактировать windows boot manager

В общем-то, при следующей загрузке ПК вы должны заметить, что по умолчанию курсор в меню стоит на той ОС, которую вы выбрали. Т.е. задача решена?! 👌😉

Источник

Редактирование меню загрузки Windows 7

Как отредактировать windows boot managerВ новых операционных системах Microsoft, начиная от Windows Vista, для хранения меню загрузки используется изменённый механизм. Теперь его нельзя отредактировать с помощью Блокнота, поскольку файл boot.ini, в котором ранее хранились все данные, просто отсутствует. Для изменения загрузочного меню Windows 7 / 10 / 8.1 можно использовать консольную программу bcdedit. C ней можно без всякого труда настроить все параметры загрузки системы, или восстановить повреждённые записи.

Прежде всего нужно запустить командную строку. Чтобы это сделать, откройте Пуск и в строке поиска введите команду cmd. Кликните на появившейся вверху строке правой кнопкой мыши и выберите «Запуск от имени администратора».

Как отредактировать windows boot managerОткроется новое окно, в котором нужно ввести ещё одну команду:

Чтобы предотвратить повреждение загрузчика, перед внесением изменений создайте его резервную копию. Создайте на диске C:\ папку с именем BootBackup (или любым другим). Выполните команду:

Для восстановления из резервной копии вы можете использовать команду:

Работа с bcdedit

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

КАК ИЗМЕНИТЬ ОПЕРАЦИОННУЮ СИСТЕМУ, ЗАГРУЖАЕМУЮ ПО УМОЛЧАНИЮ

Укажите значение /default и идентификатор ОС, что будет загружаться по умолчанию. Например для ОС с идентификатором команда будет выглядеть так:
Теперь ОС с будет сверху в меню загрузки.

КАК ИЗМЕНИТЬ РАЗМЕЩЕНИЕ ЗАПИСЕЙ В МЕНЮ ЗАГРУЗКИ

Записи можно перемещать несколькими способами.

Делаем запись первой в списке:
Делаем запись последней в списке:
Указываем точный порядок записей:

КАК ИЗМЕНИТЬ ЗНАЧЕНИЕ ЗАДЕРЖКИ ЗАГРУЗКИ

КАК ИЗМЕНИТЬ ЯЗЫК МЕНЕДЖЕРА ЗАГРУЗКИ

КАК ИЗМЕНИТЬ ЯЗЫК ДОПОЛНИТЕЛЬНОГО МЕНЮ ЗАГРУЗКИ

КАК ИЗМЕНИТЬ НАЗВАНИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ В МЕНЮ ЗАГРУЗКИ

КАК ИЗМЕНИТЬ БУКВУ РАЗДЕЛА, ГДЕ НАХОДИТСЯ ПАПКА ОС И ЗАГРУЗОЧНЫЕ ФАЙЛЫ

КАК ДОБАВИТЬ НОВУЮ ОПЕРАЦИОННУЮ СИСТЕМУ В МЕНЮ ЗАГРУЗКИ

КАК УДАЛИТЬ ЗАПИСЬ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ ИЗ МЕНЕДЖЕРА ЗАГРУЗКИ И BCD

Чтобы избавиться от записи в менеджере (и меню) загрузки воспользуйтесь следующей командой:
Если в качестве указывается готовая запись, скажем, , то вам понадобится дополнительно использовать ключ /f.

Источник

Редактирование меню загрузки операционных систем, или куда пропал boot.ini

Как отредактировать windows boot manager

Как отредактировать windows boot manager

Введение

В этой статье мне хотелось бы обобщить способы редактирования меню загрузки операционных систем на основе данных хранилища загрузки (Boot Configuration Data – BCD), которое используется в операционных системах Microsoft, начиная от Windows Vista. Его невозможно отредактировать с помощью текстового редактора, как это можно было сделать с boot.ini в Windows XP. Однако, редактирование BCD возможно с помощью консольной программы bcdedit.exe, находящейся в системной папке Windows\System32. Для работы с этой программой необходимо обладать правами администратора. Также с ней можно работать в командной строке среды восстановления.

Редактирование меню загрузки с помощью средства «Конфигурация системы»

Данный инструмент дает возможность:

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

Для изменения системы, загружаемой по умолчанию, выберите в поле списка запись о нужной операционной системе и нажмите кнопку «Загружать по умолчанию». В результате выполненной операции справа от названия появится соответствующий комментарий.

Редактирование таймаута труда не составляет: в нужном поле нужно установить желаемое количество секунд.

Для удаления ненужной записи выберите ее из списка и нажмите кнопку «Удалить».

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

С помощью данного инструмента нельзя:

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

Редактирование меню загрузки с помощью окна «Загрузка операционной системы»

Открыть окно «Загрузка операционной системы» можно так: Пуск – «Панель управления\Все элементы панели управления\Система» или, если включено отображение элементов управления Панели инструментов по категориям: «Панель управления\Система и безопасность\Система». Далее: «Дополнительные параметры системы», в открывшемся окне перейдите на вкладку «Дополнительно». Также можете воспользоваться возможностями поиска Windows 7 и в поле поиска написать «Расш», в открывшемся списке выбрать «Просмотр расширенных параметров системы». В рамке «Загрузка и восстановление» нажмите кнопку «Параметры». Нас будет интересовать верхняя часть окна: «Загрузка».

С помощью данного окна вы сможете:

Как мы видим, данный инструмент не особо отличается от предыдущего, за исключением нескольких деталей. И если в Windows XP была кнопка «Правка», нажав на которую пользователь имел возможность самостоятельно править загрузочное меню, то, начиная с Windows Vista, такой простой способ отсутствует. С помощью данного меню вам так же недоступны функции удаления записей из меню загрузки, их переименование, изменение их положения и удаление.

Редактирование меню загрузки с помощью bcdedit.exe

Создайте на любом из разделов папку для резервной копии. Назовите ее BCDREZ. Выполните:

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

Анализ данных и параметры хранилища загрузки

Для того, чтобы грамотно вносить изменения, нужно познакомиться со структурой того, куда эти изменения вносятся. Информация о BCD представлена в виде двух столбцов: в левом столбце расположены названия параметров, а в правом – их значения. Я не преследую цель подробно описать каждую микрокоманду или идентификатор, а остановлюсь только на касающихся меню загрузки. Чтобы увидеть ту часть BCD, которая отвечает за загрузку установленных на вашем компьютере операционных систем и их отображение в меню загрузки, выполните:

Некоторые значения параметров BCD записаны в фигурных скобках – <>. Это идентификаторы – ID. Любой идентификатор имеет буквенно-цифровой код вида . Стандартные идентификаторы имеют названия, например: , , и так далее.

Остановимся на параметрах, которые нас интересуют:

Это, конечно, далеко не полный, но, в рамках данной статьи, вполне достаточный перечень.

Все команды bcdedit.exe, в которых отсутствует команда set с дальнейшим указанием идентификатора, выполняются для диспетчера загрузки. Вы должны это помнить, потому что, желая что-то изменить в записи операционной системы и забыв указать ее идентификатор, вы вносите изменения в диспетчер. Хорошо, если все ограничится «восстановлением запуска».

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

Назначение системы, загружаемой по умолчанию

Здесь все просто – в зависимости от того, какую систему мы хотим загружать по умолчанию, ID той системы и пишем в команде. Например, для системы с ID2 команда:

Но эта команда не перемещает запись о системе, загружаемой по умолчанию, на верхнюю строчку меню загрузки.

Изменение расположения записей в меню загрузки

Существует 3 способа изменить расположение записей:

Изменение таймаута

где XX – время в секундах.

Изменение языка диспетчера загрузки

где ln-Ln – выбранное обозначение языка. Для русского – это ru-Ru, для английского – en-Us, для немецкого – de-De, для украинского – uk-UA и т.д.

Здесь нужно сделать оговорку. После операции восстановления запуска параметры диспетчера загрузки становятся англоязычными, несмотря на то, что значение параметра locale не изменяется. Как исправить ситуацию, смотрите здесь.

Удаление записи о загрузке системы

Эту команду лучше использовать для временного исключения записи загрузки из меню. При выполнении этой команды запись о параметрах выбранной системы не удаляется из BCD и при необходимости может быть восстановлена любой из вышеназванных команд bcdedit /displayorder.

Работа с записями операционных систем в BCD

Так как изменения касаются конкретных записей, в команде обязательно должен быть ID этой записи.

Изменение названия загружаемой системы

Изменение буквы раздела, на котором расположена папка операционной системы и ее загрузочные файлы

где X – буква раздела жесткого диска.

Как правило значения device и osdevice совпадают.

Изменение языка меню дополнительных вариантов загрузки

Для изменения языка меню дополнительных вариантов загрузки (при нажатии F8 после наведения на строку меню с нужной операционной системой) выполните команду с указанием ID операционной системы:

что такое ln-Ln – описано выше.

Добавление записей операционных систем в BCD и меню загрузки

Вариантов для выполнения этой процедуры много, но остановимся на самых популярных или нетрудоемких.

Добавление Windows XP

Довольно подробно этот процесс с необходимыми пояснениями описан в статье Установка Windows XP на компьютер с Windows 7. Здесь я всего лишь объединю выполняемые команды:

Добавление Windows Vista или Windows 7

Если добавляемая система – Windows Vista или Windows 7 можно автоматизировать процесс, воспользовавшись средой восстановления и одной из ее опций – «восстановление запуска». В этом случае в BCD будет создана новая запись о загрузке и добавлен пункт меню в диспетчер загрузки. Такой же эффект вы получите при использовании команды:

Если утилита найдет на компьютере операционную систему, запись о которой отсутствует в BCD, такая запись также будет создана.

Можно воспользоваться методом, описанным выше, то есть начать с команды:

Но этот способ трудоемок и не лишен вероятности сделать многочисленные ошибки. Проще воспользоваться копированием уже существующей записи и изменить значения параметров device и osdevice на соответствующие добавляемой операционной системе. Допустим, что вы работаете в Windows 7. Выполните:

в результате выполнения команды вы получите сообщение «Запись успешно скопирована в <хххххххх-хххх-хххх-хххх-хххххххххххх>». Далее выполните:

где X – буква раздела, на котором находится операционная система. Код, который обозначен крестиками, вводите внимательно, а лучше скопируйте и вставляйте в команды с помощью правой кнопки мыши. Наконец, выполните команду, добавляющую новую запись в диспетчер загрузки:

Как вы понимаете, запись будет добавлена внизу существующего списка.

Добавление записи загрузки операционной системы, установленной на виртуальный жесткий диск

Если вы установили Windows 7 на виртуальный жесткий диск и хотите добавить запись в диспетчер загрузки, воспользуйтесь способом, описанным выше, но с учетом особенностей загрузки с VHD. Полученный после выполнения команды bcdedit /copy… буквенно-цифровой код в командах обозначен как :

где [X:]\DIR\filename.vhd – полный путь к файлу VHD и указание имени файла.

Удаление записи загрузки системы из BCD и диспетчера загрузки

Удаление записи об установленной операционной системе из BCD и диспетчера загрузки выполняется с помощью команды

Есть особенность выполнения команды: если в качестве ID указывается известная запись, например , то команда должна выполняться с ключом /f:

Если же ID записывается в буквенно-цифровом коде, ключ /f не нужен. При выполнении этой команды данные об удаляемой операционной системе удаляются и из BCD, и из диспетчера загрузки. В этом ее основное отличие от команды

Для желающих овладеть более широкими возможностями: выполните команду

Заключение

Управление загрузкой Windows 7 отличается от того, которое использовалось в Windows XP/2000. Некоторые параметры меню загрузки можно изменить в графическом интерфейсе операционной системы, но наибольшие возможности предоставляет утилита командной строки bcdedit.exe. Дополнительную информацию о возможностях программы, командах и параметрах можно получить из встроенной справки: bcdedit /?

Источник

Windows Boot Manager — что это такое, как найти

Любое взаимодействие с компьютером начинается с загрузки операционной системы. Для правильного запуска ОС и контроля за процессом ее инициации существует служба Windows Boot Manager, название которой в переводе значит «Менеджер загрузки виндовс».

Windows Boot Manager — что это такое

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

Как отредактировать windows boot manager

BootManager отвечает за выбор текущей операционной системы, если их установлено несколько

На всех ОС семейства виндовс программное обеспечение Windows Boot Manager находится в БИОС (на более новых версиях в UEFI) и хранится в ПЗУ (энергонезависимой постоянной памяти, расположенной на материнской плате). При загрузке компьютера или ноутбука эта служба сохраняет в его оперативной памяти ядро системы, которое начинает контролировать всю оболочку Windows.

Обратите внимание! Boot Manager функционирует только на устройствах с Windows Vista и выше, загрузчик прежних версий операционных систем работает совсем по другому принципу.

При включении компьютера первым делом запускается БИОС, он инициализирует все необходимые для загрузки компоненты, в том числе и Windows Boot Manager, а также возможность машины воспринимать команды от пользователя. После этого в работу вступает сам виндовс бут менеджер, который запускает остальные системные утилиты, берущие на себя управление ОС. После этого менеджер загрузки уходит в режим ожидания и инициализируется только при следующем включении ПК.

Как отредактировать windows boot manager

Принцип загрузки ОС семейства виндовс

Действия Windows Boot Manager при загрузке операционной системы:

К сведению! Для продолжения процесса включения виндовс используется системный загрузчик winload.exe, который также вызывается при помощи Boot Manager.

Как найти Windows Boot Manager

Поскольку Boot Manager — это не одна конкретная утилита, а комплекс нескольких программ и процессов, то открыть его напрямую невозможно. Информация службы находится в BCD — хранилище данных конфигурации загрузки (аналоге файла boot.ini из прежних версий виндовс).

Файл bootmgr (скрытый и доступный только для чтения) хранится в корневом каталоге раздела, который в «Управлении дисками» отмечен как «Активный» (на большей части компьютеров под управлением виндовс он не имеет собственной буквы диска и обозначается как «Зарезервированный системой»).

Как отредактировать windows boot manager

Загрузочный раздел диска, зарезервированный системой

Обратите внимание! Если системный раздел не выделен, то искомый файл находится в основной директории диска С.

Как настроить Windows Boot Manager

Чтобы изменить настройки bootmgr (включить или, наоборот, отключить модули конфигуратора запуска) используется служба «Конфигурация системы». Вызвать приложение можно при помощи службы «Выполнить» (вызывается горячими клавишами «Win + R»), в окно которой вводится команда «msconfig». Искомая служба находится во вкладке «Загрузка».

Как отредактировать windows boot manager

Раздел «Загрузка» в меню «Конфигурация системы»

Иногда при установке ОС с флешки может возникнуть ошибка «Bootmgr is Missing», которая обозначает, что флешка не сделана загрузочной (не имеет пометки boot), либо в БИОС не выставлен приоритет загрузки USB HDD.

Обратите внимание! Чтобы исправить ошибку, первым делом следует поменять настройки BIOS/UEFI, а если это не поможет, то делать заново флешку с правильными значениями.

Почему Windows загружается с Windows Boot Manager, а не с диска с системой

Операционные системы семейства виндовс, начиная с висты, созданы так, что для их полноценной загрузки нужна служба виндовс бут менеджер. Если по каким-либо причинам принцип инициализации требуется изменить, следует отключить Windows Boot Manager в настройках конфигурации системы или выбрать другой загрузочный диск в BIOS (или на устройствах с более новыми материнскими платами UEFI).

Описание процесса удаления Windows Boot Manager

Полностью удалить Windows Boot Manager невозможно, реально только отключить. Это можно сделать двумя способами.

Через меню «Конфигурация системы»

Чтобы операционная система запускалась, минуя загрузчик, нужно выставить время, отведенное на инициацию ОС на минимум (в зависимости от версии это 0 или 3 сек.). Для этого:

Обратите внимание! Изменения вступят в силу при следующей загрузке компьютера или ноутбука.

При помощи настроек BIOS или UEFI

Windows Boot Manager не будет запускаться, если в настройках BIOS (или UEFI) поменять диск, с которого происходит загрузка ОС. Чтобы это сделать, нужно:

Как отредактировать windows boot manager

Выбор приоритета загрузки в меню БИОС

После следующей перезагрузки устройства изменения начнут действовать.

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

При сбоях в работе менеджера загрузки во время включения компьютера возможно появление ошибки «Bootmgr is Missing». Для ее исправления нужно выбрать правильный загрузочный диск в БИОС либо запустить службу «Восстановление системы» Windows.

Источник

Изучаем Bootmgr. Часть 1 — инструментарий и основные принципы отладки начальных этапов загрузки ОС Windows

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

Если обратится к уже имеющейся в сети информации, то существует замечательный блог «Записки эникейщика о Windows» на страницах которого (раз, два и три) размещены, на мой взгляд, самые ценные сведения, по вопросам устройства bootmgr. Автор подробно рассмотрел процесс загрузки, включая исследования кода MBR и PBR, остановившись на структуре bootmbr, кратко описав происходящие при его работе процессы.

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

1. Достаем код Bootmgr из системы

Загрузчик Bootmgr появился в операционных системах семейства Windows начиная с Windows Vista. Причиной его разработки послужило то, что старый добрый ntldr, использовавшийся в линейке NT не мог загружать систему, на компьютерах с материнскими платами оснащенными UEFI, в те времена (2005 год) мало распространенными среди широкого круга рядовых пользователей.

По умолчанию, при штатной установке, этот загрузчик помещается в отдельный раздел, расположенный в начале HDD, с размером, достаточным для размещения самого bootmgr а так же файлов его конфигурации. Данный раздел не монтируется в обычном режиме работы системы и буква диска ему не присваивается. В системах с MBR создания этого раздела можно избежать, устанавливая Windows на предварительно размеченный и отформатированный HDD. В этом случае загрузчик помещается в тот же раздел, что и файлы ОС. Системы с EFI + GPT изначально требуют наличия такого раздела, имеющего тип 0xef и отформатированного в FAT.

Таким образом, первая наша задача — добыть bootmgr. Желательно взять его из системы, которая будет выступать в роли подопытной. Для этого установим ОС Windows на виртуальную машину. Это может быть и VirtualBox, и VMware, и QEMU — всё зависит от того, каким инструментарием виртуализации вы располагаете. Я преимущественно работаю в ОС Linux, буду в основном ориентироваться на инструменты применяемые там, хотя уделю внимание и Windows.

Итак, предположим у нас есть виртуальная машина (ВМ) с установленной на ней Windows 7 (x86). Разметка диска выполнена на основе MBR, система установлена в один раздел. Допустим это QEMU, диск на котором установлена подопытная имеет формат raw. то есть обыкновенный двоичный образ. Монтируем этот образ

На смонтированном разделе мы увидим следующее содержимое

Для нас представляет интерес файл bootmgr. Однако, прежде нам нужен не совсем он, а 32-разрядный образ загрузчика bootmgr.exe, который находится в bootmgr в упакованном виде. Для его распаковки необходимо использовать утилиту bmzip, которая написана в общем-то для Windows (с наскока собрать её под Linux не вышло), поэтому распаковку выполним на виртуальной машине. Бинарную сборку этой утилиты, которая бы работала нормально оказалось довольно трудно найти, несмотря что тут дана ссылка на неё. В итоге, пакет был найден на каком-то из сайтов, посвященных кастомизации bootmgr. Для работы bmzip оказалась необходима библиотека MSCompression.dll. Готовый к работе пакет теперь можно скачать тут.

Создадим на диске ВМ папку utils и скопируем туда bmzip.exe вместе с MSCompression.dll. Отмонтируем образ и запустим ВМ. Запустим командную строку от имени администратора. Чтобы случайно не попортить загрузчик сделаем его копию

Файл загрузчика является скрытым и системным, поэтому снимем с него эти атрибуты

В итоге получаем распакованный образ bootmgr.exe

Как отредактировать windows boot manager

Выключаем ВМ и снова монтируем её диск в линуксе. Создадим какую-нибудь папку, где будем потрошить загрузчик дизассемблером и скопируем туда распакованный образ

2. Дизассеблируем bootmgr.exe

Теперь скормим полученный «экзешник» дизассемблеру. Например IDA Pro. Запустим «иду» и откроем в ней добытый файл.

Как отредактировать windows boot manager

IDA верно идентифицирует файл как 32-разрядный исполняемый файл формата PE. Жмем ОК. Теперь, если в IDA Pro установлен плагин для работы с pdb-файлами, по ходу дизасеммблирования нам предложат загрузить отладочные символы, и не откуда нибудь, а сайта Microsoft.

Как отредактировать windows boot manager

Соглашаемся и получаем такую картину

Как отредактировать windows boot manager

Ага, слева мы видим прототипы функций, содержащихся в исследуемом файле, благодаря тому что согласились загрузить отладочные символы. Это очень сильно облегчит нам последующую работу. А пока определим точку входа в код загрузчика, и нетрудно догадаться что это будет функция BmMain(). Однако, не принимая это на веру жмем Ctrl + E

Как отредактировать windows boot manager

убеждаясь что наша догадка верна — BmMain() является точкой входа, расположенной по адресу 0x401000. Жмем ОК и перемещаемся на начало кода

Как отредактировать windows boot manager

Видим мы заголовок функции BmMain() с внушительным списком локальных переменных, и чуть ниже и сам код функции

Как отредактировать windows boot manager

Разобраться в мешанине ассемблерного кода довольно трудно, да и не зачем этого делать. Прежде всего определимся с тем, какие функции загрузчика мы хотим изучить. Я что-то там говорил о VHD? Ну так поищем среди кода что-нибудь, касающееся виртуальных дисков. Щелкаем правой кнопкой по списку функций слева и в вывалившемся контекстном меню выбираем «Quick filter» (или перейдя в окно с прототипами жмем Ctrl + F). В строке поиска набираем «vhd» и…

Как отредактировать windows boot manager

да, таковые функции имеются в количестве 33 штук. Среди них VhdOpen() очевидно будет отвечать за открытие виртуального диска, а вот например VhdiVerifyVhdFooter() как пить дать отвечает за проверку футера VHD-диска на корректность. То есть мы примерно представляем себе, куда будем ставить точки останова в отладчике. Кстати, поговорить об отладке самое время

3. Отладка Bootmgr на связке QEMU + IDA Pro

ВМ запускается и сразу же становится на паузу, ожидая подключения отладчика

Важно! Ни в коем разе не используйте ключ -enable-kvm применяющий аппаратную виртуализацию. При её использовании отладка в QEMU не работает.

Теперь на панели инструментов в IDA выбираем отладчик «Remote GDB debugger»

Как отредактировать windows boot manager

Ответив «Да» на несколько заданных нам вопросов получим окошко

Как отредактировать windows boot manager

где вобьем параметры соединения с ВМ: localhost на порту 1234. Жмем ОК. Нам сообщат, что некоторый процесс уже запущен и ожидает подключения отладчика — не хотим ли мы присоединится к нему? Конечно же ходим!

Как отредактировать windows boot manager

Поэтому отвечаем «Да» и.

Как отредактировать windows boot manager

мы встаем на паузу где-то в начала bios виртуальной машины. Великолепно, но теперь мы должны добраться до того места, где начинает выполнятся bootmgr. Ставим точку останова на функции BmMain(). Нажимаем на панели инструментов список точек останова, жмем Insert на клавиатуре и указываем на каком адресе мы хотим прервать выполнение кода и перейти в отладку

Как отредактировать windows boot manager

Как отредактировать windows boot manager

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

Возможно меня спросят — а можно ли использовать GDB? Можно, запускаем ВМ в режиме отладки, запускаем gdb в консоли

Подключаемся к удаленной сессии ВМ

Включаем отображение дизассемблированных инструкций

Если вас не устраивает синтаксис AT&T переключаемся на интел

Ставим точку останова на BmMain() и запускаем исполнение

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

Однако, существует ещё одна возможность отладки, мимо которой пройти нельзя

3. Отладка на связке WinDbg + VirtualBox

Те, кто занимается разработкой драйверов для ОС Windows безусловно знакомы с этим замечательным отладчиком. Замечателен он тем, что имеет возможности сравнимые с возможностями линуксового GDB. Единственным его недостатком является жуткий способ настройки его интерфейса. Но мы опустим эти моменты, а обратимся к возможностям данного отладчика для решаемой нами задачи.

Итак, пускай на у нас имеется ВМ на основе VirtualBox. Создадим для этой ВМ COM-порт со следующими параметрами

Как отредактировать windows boot manager

Это виртуальный COM-порт, пробрасываемый в именованый канал. Для отладки через последовательный порт виртуальную машину следует настроить соответствующим образом. Загружаем её и запускаем консоль с административными правами. С ней вводим команды настройки загрузчика для отладки

Эта команда включит возможность отладки загрузчика. Далее настроим порт для отладки

Указываем, что мы используем COM1 со скоростью 115200 бод. Отлично, выключаем ВМ и запускаем отладчик.

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

Теперь запустим ВМ. Практически сразу она встанет на паузу, а в окне отладчика мы увидим следующую картину

Как отредактировать windows boot manager

Ага, отладчик подключился к ВМ и встал на точке, любезно предоставленной нам майкрософтом. Ну что же, теперь нам доступны все возможности отладки с использованием windbg.

Однако мы останавливаемся не в самом начале кода загрузчика, а чуть дальше. Как показывает пошаговая отладка мы находимся как раз за функцией BlInitializeLibrary() которая обеспечивает начальную инициализацию оборудования

Как отредактировать windows boot manager

и, при отладке при помощи IDA мы сюда просто не попадаем. Таким образом, при отладке с WinDbg от нас ускользает часть действий bootmgr сразу после его запуска. В этом заключается недостаток использования стандартных средств отладки, предоставленных Microsoft. Однако, недоступный код мы всегда сможем исследовать отдельно с помощью IDA.

Теперь, в качестве примера, посмотрим на то, как bootmgr работает с образами VHD фиксированного размера.

4. Отлаживаем загрузку с VHD

Всё ниже следующее рассматривается на отладчике WinDbg, подключенном к ВМ на VirtualBox, но в равной степени справедливо и для других методов отладки, с учетом их особенностей. ВМ, используемая в данном примере содержит две системы: одна установлена на HDD, другая на VHD образ. Поставим точку останова на функции VhdOpen()

и нажмем F5. Отладчик встанет на указанной функции

Как отредактировать windows boot manager

Причем, внимание — мы ещё вообще не заходили в меню загрузки и не выбирали загрузку из VHD. А это означает, что проверка VHD происходит задолго до появления меню. Такое же поведение мы и наблюдаем, например если подсунем bootmgr пустой VHD. Меню загрузки нам вообще не покажут, а покажут ошибку с кодом 0xc000000F.

Проходим чуть дальше, нажимая F10 или вводя в комадной строке p и дойдем до вызова VhdiAllocateVhdData() — очевидно это создание в памяти некоторых структур для работы с образом

Как отредактировать windows boot manager

Чуть ниже расположен вызов VhdiVerifyAndInitializeVhd() — очевидно проверка корректности образа. Это показалось мне интересным и я пошел внутрь (F11)

Как отредактировать windows boot manager

Ниже, после некоторых подготовительных операций загрузчик читает последние 512 байт образа, в которых содержится так называемый «футер» образа, вызывая функцию VhdiReadVhdInformation(). Не надо ходить к гадалке, чтобы понять — функция возвратит указатель на структуру, содержащую данные футера. Как мне удалось выяснить, этот указатель, после вызова VhdiReadVhdInformation() оказывается в регистре ecx. Его значение равно 0x110098. Посмотрим на память по тому адресу

Команда читает память по указанному адресу, выводя её в окно отладчика в виде последовательности байт

Ага, мы видим знакомое слово — conectix. Это поле предваряет футер VHD образа, носит название cookie и хранит память о том, что Microsoft купила технологию VHD у фирмы Conectix, которая разработала данный формат виртуальных дисков для старых компьютеров Macintosh, Это несомненно футер VHD, мы можем видеть тут сигнатуру операционной системы в которой он был создан (Wi2k) а так же последовательность win указывает на то, что VHD создан средствами Windows. Да, все так и было. Пройдя чуть дальше мы натыкаемся на вызов VhdiVerifyVhdFooter() проверяющий формат футера. В качестве параметра он получает указатель на вышеописанную структуру, почему-то через регистр esi (. )

Как отредактировать windows boot manager

Этот участок кода интересовал меня больше всего, поэтому где-то с помощью IDA Pro, где-то руками, я преобразовал его в псевдокод на C

Футер VHD можно представить в виде следующей структуры (в комментариях указаны смещения от её начала).

Пользуясь этими данными можно сделать вывод о том, какие поля футера проверяет bootmgr и какие ошибки он выбрасывает. При корректном VHD образе данная функция возвращает ноль, в иных случаях расклад таков

Полученная мной информация решила спор возникший с коллегой по форуму, на котором обсуждалась методика загрузки Windows с VHD. Я его проиграл, считая что образы, созданные VirtualBox не будут грузится с помощью bootmgr. VirtualBox, создавая такие образы пишет все поля в соответствии со спецификацией Microsoft, кроме поля creator_application, куда записано win в оригинальном образе и vbox в случае с виртуалбоксом. Но это поле не проверяется bootmgr-ом, так что диски работают, а у меня они не работали по совсем другой причине, которая является предметом совсем другой истории.

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *