Главная

Tuesday, 23 April 2024

Возможности BCDEdit.

Всем привет.

Вы наверняка знаете что система запуска для Windows хранится в чём-то с названием Boot Configuration Database (BCD, База данных конфигурации запуска). В Windows 11 его можно редактировать, но зачем это кому-то нужно? Существуют обстоятельства, например, когда у вас имеется конфигурация с двойным запуском или когда что- то в этой базе данных изменяется или разрушается.  Даже в этом случае для Вас не все потеряно!

Для редактирования этой базы данных откройте Командную строку или Терминал Windows от имени Администратора и наберите команду BCDEdit. Она отобразит текущую конфигурацию в этой базе данных. 

Все записи в этой базе данных начинаются со своих Идентификаторов. Это может быть некое техническое название, текстовая строка или даже шестнадцатеричный GUID (General Unique Identifier, Глобально уникальный идентификатор). Он поставляется в установленном формате {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. 

Полный список идентификаторов показан ниже:

  • {badmemory} Глобальный список дефектной памяти
  • {bootloadersettings} Подлежащие наследованию всеми записями начального загрузчика глобальные настройки
  • {bootmgr} Диспетчер запуска Windows
  • {current} Основная операционная система в этом ПК
  • {dbgsettings} Глобальные настройки отладчика
  • {default} Идентификатор для записи запуска по умолчанию
  • {emssettings} Глобальные настройки EMS
  • {fwbootmgr} Запись запуска диспетчера запуска встроенного ПО, хранится в NVRAM систем UEFI
  • {globalsettings} Подлежащие наследованию всеми записями начального загрузчика глобальные настройки
  • {memdiag} Утилита диагностики памяти
  • {ntldr} Наследуемый загрузчик Windows, NTLDR; применяется для выпущенных до Windows Vista версий Windows
  • {ramdiskoptions} Необходимые для RAM дисков дополнительные параметры
  • {resumeloadersettings} Подлежащие наследованию всеми записями восстановления из гибернации Windows глобальные настройки.

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

  • bcdedit [/store filename] /bootdebug [id] { ON | OFF } используется для включения или отключения имеющегося отладчика для заданной записи запуска. В определяемом данной командой файле сохраняется журнал отладки. Она должна применяться в формате bcdedit /store C:\BootDebugLog /bootdebug {current} ON.
  • bcdedit [/store filename] /bootsequence id […] [ /addfirst | / addlast | /remove ] определяет последовательность запуска для одноразовой загрузки. Может применяться в формате bcdedit /bootsequence { e397815a-15a9-11e5-9622-fc025c6ab93c } {current} {ntldr}
  • bcdedit [/store filename] /copy id /d description создаёт копию заданной записи запуска. Может применяться в формате bcdedit /copy { e397815a-15a9-11e5-9622-fc025c6ab93c } /d "Copy of Windows 11"
  • bcdedit [/store filename] /create [id] /d description [/application apptype | /inherit [apptype] | /inherit DEVICE | /device] создаёт новую запись запуска с заданным идентификатором. Поддерживаемыми типами являются BOOTSECTOR, OSLOADER и BOOTMGR, а наследуемыми поддерживаемыми типами являются BOOTSECTOR, FWBOOTMGR, MEMDIAG, NTLDR, ORLOADER и RESUME. Может применяться в формате bcdedit /create {ntldr} /d "Compatibility OS"
  • bcdedit [/store filename] /debug [id] { ON | OFF } включает или отключает отладчик соответствующего ядра для заданной записи запуска. Может применяться в формате bcdedit /debug ON
  • bcdedit [/store filename] /default id устанавливает для данного ПК запись запуска по умолчанию. Может применяться в формате bcdedit /default { e397815a-15a9-11e5-9622-fc025c6ab93c }
  • bcdedit [/store filename] /delete id [/f] [/cleanup | /nocleanup] удаляет заданную запись запуска и может (не обязательно) вычищать её из отображаемого порядка. Может применяться в формате bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /cleanup
  • bcdedit [/store filename] /deletevalue [id] datatype удаляет элемент или значение из записи запуска. Может применяться в формате bcdedit /deletevalue {bootmgr} bootsequence
  • bcdedit [/store filename] /displayorder id […] [ /addfirst | /addlast | /remove ] устанавливает порядок отображения своего диспетчера запуска. Может применяться в формате bcdedit /displayorder { e397815a-15a9-11e5-9622-fc025c6ab93c } /addlast
  • bcdedit [/store filename] /enum [type | id] [/v] перечисляет все имеющиеся записи запуска в заданном хранилище BCD. Может применяться с перечисляемыми типами ACTIVE, ALL, BOOTAPP, BOOTMGR, FIRMWARE, INHERIT, OSLOADER и RESUME. Может применяться в формате bcdedit /enum OSLOADER
  • bcdedit /export filename создаёт резервную копию данного хранилища BCD в заданный файл. Может применяться в формате bcdedit /export "C:\BCD Backup" 
  • bcdedit /import [/clean] filename импортирует содержимое экспортированной резервной копии BCD. Может применяться в том же самом формате что и команда экспорта. Переключатель /clean используется только в системах UEFI и принуждает своё встроенное ПО удалять все применяемые в Безопасном запуске (Secure Boot) имеющиеся записи запуска.
  • bcdedit [/store filename] /set [id] datatype value [ /addfirst | /addlast | /remove ] создаёт или изменяет элемент в записи запуска. Может применяться в формате bcdedit /set { e397815a-15a9-11e5-9622-fc025c6ab93c } path \windows\system32\winload.exe
  • bcdedit /sysstore partition определяет тот раздел, который применяется для хранилища BCD. Данный переключатель используется исключительно в системах UEFI и может применяться в формате bcdedit /sysstore C:.
  • bcdedit [/store filename] /timeout timeout определяет как долго должен выполнять ожидание в меню загрузки ОС начальный загрузчик перед выбором установленной по умолчанию записи. Может применяться в формате bcdedit /timeout 30, где значение числа представлено в секундах.

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

Хотя вы можете редактировать содержимое Boot Configuration Database и манипулировать им, может быть непонятно как вы можете это осуществлять в реальной жизни. Давайте рассмотрим несколько примеров того, зачем вы можете применять команду BCDEdit:

1. Для изменения установленной по умолчанию операционной системы, той которая появляется первой в списке выбора ОС и которая грузится автоматически когда там не выбран ни один из вариантов, воспользуйтесь командой BCDEdit /default {id}.

2. Когда операционная система обладает неверным связанным с нею диском или разделом, это можно поправить при помощи команды BCDEdit /set {id} device partition=X:, где X: представляет тот диск или раздел, в котором установлена данная операционная система. Вы также можете воспользоваться командой BCDEdit /set {id} osdevice partition=X:

3. Для добавления вручную наследуемой операционной системы, которая не появляется в имеющемся перечне, воспользуйтесь такими командами со значением нового индивидуального идентификатора {legacy}:

a. BCDEdit /create {legacy} /d "Legacy OS Name"

b. BCDEdit /set {legacy} device partition=D: или значение буквы для того раздела, в котором установлена эта наследуемая ОС

c. BCDEdit /set {legacy} path /ntldr

d. BCDEdit /displayorder {legacy} /addlast

4. Если вы хотите добавить в своё меню запуска установку Linux следуйте данным инструкциям:

a. Загрузитесь в Linux и запустите сеанс Терминала с полномочиями root.

b. При помощи команды fdisk -l (lowercase "L") отыщите в каком разделе установлена Linux. Установка Linux будет в разделе, помеченном как dev/sda1 или /dev/hda1.

c. Установите в этом разделе Диспетчер запуска GRUB (Grand Unfied Boot Loader) воспользовавшись командой grub-install /dev/sda1.

d. При помощи команды dd if=/dev/sda1 of /tmp/linux.bin bs=512 count=1 скопируйте сектор запуска Linux.

e. В качестве резервной копии скопируйте файл linux.bin на флеш носитель USB.

f. Установите в своём ПК Windows 11.

g. Чтобы открыть меню администратора нажмите Win+X и запустите Командную строку (от Администратора) или Терминал Windows (как Администратор).

h. Для входа в утилиту управления диском наберите diskpart.

i. Наберите select disk=0, где скорее всего расположен ваш раздел запуска.

j. Наберите list volume и отыщите Активный или Системный раздел;



Тут вы ищете на диске раздел "System".

k. Вам требуется временно назначить букву устройства своему разделу System. Наберите assign letter=n и воспользуйтесь следующей доступной буквой диска.

l. Скопируйте во своего флеш накопителя USB файл резервной копии linux.bin в корень (активного) раздела.

m. Для удаления этой буквы диска наберите remove letter=n .

n. Создайте запись GRUB при помощи команды BCDEdit /create /d "GRUB" /application BOOTSECTOR. Она вернёт уникальный идентификатор: запишите его себе. Для всей остающейся части этого примера я буду именовать его как {linuxid}.

o. Наберите BCDEdit /set {linuxid} устройство_запуска.

p. Набеите BCDEdit /set {linuxid} PATH /linux.bin.

q. Наберите BCDEdit /displayorder {linuxid} /addlast.

Вот и все на сегодня.

No comments:

Post a Comment

А что вы думаете по этому поводу?