Каждый пользователь Windows Server 2008 или Windows Vista знает, что в новые версии Windows внесены существенные изменения. Одно из них — способ управления загрузчиком Windows, программой, которая обеспечивает хранение более одной операционной системы на диске и позволяет настроить метод загрузки Windows. Соответственно появился и новый инструмент, Bcdedit, освоить который должен каждый системный администратор.

До появления Vista порядком и параметрами загрузки можно было управлять, изменяя текстовый файл boot.ini в корневом каталоге диска C. Чтобы изменить поведение загрузчика в операционных системах, предшествующих Vista, достаточно программы Notepad и умения снять защиту с файла boot.ini, помеченного «только для чтения». Разработчики Microsoft заменили boot.ini двоичным файлом, именуемым BCD, который находится в скрытой системной папке с именемoot, на диске, с которого загружается операционная система. Bcdedit — инструмент, с помощью которого можно управлять файлом BCD.

Изменения загрузчика

Для описания структуры загрузчика BCD появилась новая терминология. В файле boot.ini было несколько разделов, благодаря которым можно загрузить нужную операционную систему с определенными параметрами, а в Bcdedit есть загрузочные записи (boot entry). Новый экземпляр Server 2008 или Vista располагает всего одной загрузочной записью, но если добавить операционную систему, например установить Server 2008 и Vista на одном компьютере, или на компьютере имеется лишь одна операционная система, но желательно загружать ее с разными параметрами запуска или отладки, то загрузочных записей будет более одной. Чтобы увидеть загрузочные записи, откройте командную строку и введите

bcdedit/v

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

Ниже отображаются две загрузочные записи, отмеченные Windows Boot Loader. Первая загружает экземпляр Server 2008 (как видно из строки описания), а вторая загружает Vista.

Обратите внимание, что Bcdedit/v выдает много длинных шестнадцатеричных строк, заключенных в скобки и представляющих собой идентификаторы GUID. Большинство этих идентификаторов можно спокойно игнорировать, но обратите внимание на первый GUID в каждой загрузочной записи. Эти идентификаторы GUID потребуются, чтобы информировать Bcdedit о том, какую загрузочную запись нужно выбрать по умолчанию, в каком порядке отображать загрузочные записи, как их копировать и т. д. Текст можно выделять и копировать в буфер обмена.

Загрузочная запись, выбираемая по умолчанию, назначается с помощью команды Bcdedit/default. Например, для загрузки Server 2008 нужно ввести

bcdedit/default {6443870f-3c0c-11dd-835a-c0389998b4ec}

Для тех, кто не хочет вводить и даже копировать GUID, программа Bcdedit распознает два хорошо известных идентификатора: значение {current} представляет текущую активную загрузочную запись, а значение {default} — загрузочную запись, о которой в данный момент известно BCD.

Удаление папки Windows с диска E компьютера Server 2008 фактически означает удаление Server 2008 с компьютера, но BCD об этом не будет известно. Поэтому при каждой загрузке компьютера на экране будет появляться бесполезный вариант Server 2008. Чтобы запретить BCD показывать вариант Server 2008, можно использовать команду Bcdedit/delete:

bcdedit/delete {6443870f-3c0c-11dd-835a-c0389998b4ec}

Чтобы протестировать некоторые из этих команд, рекомендуется подготовить дополнительную загрузочную запись. Было бы неприятно случайно удалить загрузочную запись основной операционной системы! Подготовьте копию загрузочной записи для тестирования с помощью команды Bcdedit/copy:

bcdedit/copy {current}/d "Test entry"

Здесь используются известный идентификатор GUID {current} и параметр/d (обязательный с ключом/copy), что позволило дать имя новой загрузочной записи операционной системы.

В boot.ini для операционных систем Windows NT 3.1 и более новых версий по умолчанию задано слишком длительное время ожидания — 30 секунд. Поэтому я всегда изменяю значение «timeout=30» на 5 секунд. Для выполнения той же операции в Bcdedit нужно ввести команду

bcdedit/timeout 5

Полезное знакомство

Достоинством boot.ini была простота, но отныне придется иметь дело с BCD и Bcdedit, поэтому рекомендуется потратить некоторое время на изучение этого инструмента.