Vhd Native Boot Снаружи И Внутри

Цель этой статьи — рассказать о моем опыте использования очень полезной и не очень известной функции Windows под названием VHD Native Boot, то есть возможности загрузки с виртуального жесткого диска формата VHD/VHDx. Начиная с версии 7 в Windows появилась возможность создавать виртуальные диски VHD/VHDx (далее просто VHD), а также подключать и отключать их через графический интерфейс «Управление дисками» и утилиту командной строки diskpart. Кроме того, Windows научилась загружаться с таких дисков, и все бы ничего, но этот самый Native Boot был доступен только владельцам старых версий, то есть от Pro и выше.

Очевидно, это было всего лишь маркетинговое ограничение, потому что с появлением Windows 10, а я проверил Anniversary Update (1607) и Creators Update (1703), ограничений больше нет. Это работает и в Windows 10 Home и может выступать как в качестве хоста, так и в качестве гостя.

Ниже вы узнаете, как это выглядит и как его можно использовать.

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

Насколько полезны и удобны виртуальные машины для разработчиков ПО, специалистов по безопасности и тестированию.

Но до уровня домашнего/рабочего компьютера и его операционной системы это дело еще не дошло.

Ну и очевидно, что если операционная система является таким сложным и чувствительным компонентом, то нельзя безоговорочно доверять ее пользователю, он норовит ее чем-то заразить или повредить.

Да, есть бэкап и восстановление из точек восстановления (т.е.

из теневой копии), и это отличные вещи.

Но это очень чувствительные к ошибкам компоненты, и они могут вас не спасти; кроме того, многие вредоносные программы способны удалять теневые копии, не оставляя пользователю шансов.

Хотелось бы чего-то простого и банального на уровне копипаста, чтобы за несколько минут вернуть «упавшую» или «поврежденную» систему в рабочее состояние.

Конечно, идеально было бы, чтобы решение было в самой системе, просто встроено в нее.

Hyper-V все еще не совсем тот, хотя его можно улучшить до необходимого уровня.

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

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

Ведь скопировать один файл, даже большой, явно проще, чем десятки тысяч.

Кроме того, такой файл можно легко использовать для развертывания Windows в организации.

При наличии нескольких (немногих) типов компьютеров достаточно установить систему и все необходимое программное обеспечение на VHD, а затем просто скопировать этот файл на все аналогичные компьютеры, сводя полевые работы к минимуму.

Было бы неплохо иметь какую-нибудь оболочку, без загрузки винды, что-то вроде «консоли гипервизора», позволяющей попасть в нее и работать с VHD на файловом уровне, копировать, заменять, обновлять и т.д. Тем более, что винда сама имеет в своем составе такую оболочку, и называется она Windows Recovery Environment, далее WinRE. Давайте посмотрим, как это все выглядит на практике.



1. Установка Windows на VHD с нуля

Эта тема широко освещена в Интернете, есть десятки толковых руководств (см.

ссылки в конце статьи), поэтому остановлюсь лишь кратко, попутно рассматривая возможные варианты.

В общем, все сводится к нажатию волшебной комбинации Shift-F10 в тот момент, когда компьютер загружается с установочного диска.

При этом откроется окно командной строки, где следует с помощью diskpart отформатировать и разбить на разделы реальный жесткий диск (если компьютер/диск новый) и создать VHD необходимого размера.

Для простоты я буду рассматривать 64-битные установки и жесткие диски с MBR. Итак, жёсткий диск разбит на разделы, папка VHDs на соответствующем томе создана, теперь в diskpart нужно создать в этой папке виртуальный жёсткий диск, дав ему понятное имя, и присоединить его, тогда следующая буква будет назначенный тому виртуального диска.

Теперь вы можете вернуться в окно установки Windows и выбрать для установки именно эту букву.

Все, программа установки все сделает сама.

Это также добавит необходимую запись в файл BCD. Скажу сразу, использование bcdedit показалось мне слишком жестоким самоистязанием, поэтому я позволил себе использовать для манипуляций один сторонний инструмент, это утилита Bootice соответствующего разрядности.

Предположим, он у вас есть на том же установочном диске.

Если нет, то в будущем я покажу, как его можно «закинуть» в нашу оболочку «гипервизора».

Итак, для демонстрации, допустим, у меня есть один жесткий диск на 25 Гб (для демонстрации я буду использовать мой любимый Virtualbox), на нем один раздел, есть папка VHDs, на которой я создал виртуальный диск и установил на него Windows 10. это.



VHD Native Boot снаружи и внутри

Вот как будет выглядеть меню загрузки системы в Bootice (раздел BCD, Easy Mode)

VHD Native Boot снаружи и внутри

Вот 25 Гб C: это тот «физический» диск, на котором я создал виртуальный размером 20 Гб и на который установил Windows 10. Все хорошо, но дальше нам нужно создать оболочку управления.

Как известно, WinRE всегда устанавливается вместе с Windows и приходит на помощь при обнаружении проблем с загрузкой.

Нам он нужен для другой цели, я хочу туда попасть для работы с VHD файлами.

Добавим пункт WinRE в меню загрузки.

Для этого в Bootice воспользуемся Professional Mode, последний объект в списке слева — Windows Recovery, справа видно его расположение на VHD:

VHD Native Boot снаружи и внутри

Этот объект, а точнее ссылку на него, необходимо добавить в список загрузочного меню, выбрать слева вверху ветку Windows Boot Manager, в правой панели выбрать «Порядок отображения» и из выпадающего списка добавить пункт о WinRE:

VHD Native Boot снаружи и внутри

Теперь пункт «Среда восстановления Windows» будет отображаться в меню загрузки системы, в чем мы можем убедиться, вернувшись в простой режим:

VHD Native Boot снаружи и внутри

Останется только перезагрузиться и выбрать второй пункт, WinRE начнет загружаться, а там нас интересует только пункт Устранение неполадок, Дополнительные параметры, Командная строка.

Это напоминает как установщик Windows, так и прародителя WinRE, известную среду предустановки Windows. Вот здесь, собственно, и начинается работа с оболочкой, и не так важно, какую вы выберете, так как все примерно одинаково.

Нашим основным жёстким диском оказывается диск C:, наш master.vhd находится в его папке VHDs, и мы можем спокойно скопировать его куда-нибудь.

В WinRE подключаем сеть волшебной командой:

  
  
  
  
   

wpeutil initializenetwork

Драйвер сетевого адаптера автоматически выбирается и запускается, IP-адрес получается от DHCP-сервера, и мы можем работать с сетью.

В Virtualbox я могу смонтировать сетевую папку с помощью этой команды:

net use z: \\10.0.2.2\d$

и оттуда скопируйте необходимые инструменты для работы в оболочке.

Поскольку выбрана версия x64, программы, запускаемые в WinRE, должны быть x64; никакие суррогаты не будут работать.

Помимо Bootice легко можно добавить Far Manager и 7-zip, и с ними как-то веселее.

Мне даже удалось найти рабочий веб-браузер Palemoon Portable, с помощью которого очень легко скачать необходимые компоненты из Интернета.

Cygwin64 установился отлично, открыв путь для ssh/rsync в смешанных средах.

Тогда понятно, у нас есть возможность безопасно архивировать и копировать vhd файлы.

Если что-то не так в master.vhd, загружаемся в WinRE и берем его резервную копию из сетевого хранилища, затем выходим из WinRE и возвращаем нашу систему обратно.

Прямо из оболочки WinRE с помощью diskpart или Bootice можно создать новый VHD-диск, запустить программу установки Windows, если вы хотите добавить какую-то другую версию и установить эту новую Windows на новый VHD, нужный элемент будет добавлен в Само меню загрузки ОС.

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

Конечно, это не смертельно, вы всегда можете загрузиться с установочного диска Windows и нажать Shift-F10, но приложив некоторые усилия, можно убедиться, что WinRE находится на нашем хост-диске, и загрузиться в него оттуда.

Меню загрузки будет выглядеть так:

VHD Native Boot снаружи и внутри



2. Установка Windows на VHD на работающем компьютере

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

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

Здесь на ум приходит несколько вариантов.

Первое, что я вспомнил, — это использование Windows Backup, поскольку оно создает файл VHD (vhdx) в режиме создания образа системы.

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

Не знаю почему, но с VHD-диска, полученного из резервной копии, Windows не загружается.

Мне пришлось пойти другим путем, используя Disk2vhd из комплекта Sysinternals. Все довольно просто, вы выбираете раздел физического диска или весь диск, а Disk2vhd делает из него VHD-файл:

VHD Native Boot снаружи и внутри

Но тут начинаются неудобства.

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

То есть, если у меня был физический диск 180 ГБ, и я выбрал только первый раздел размером 100 ГБ, то VHD-файл получился около 50 ГБ, но сообщает о себе как 180 ГБ.

Проблема здесь в том, что если вы загрузитесь с такого VHD, Windows для его запуска потребуется 180 ГБ места.

То есть, как бы вы его не оптимизировали (дефрагментация, удаление -z), как бы вы его не сжимали (компактный виртуальный диск, сжатие), вы не сможете избавиться от исходных характеристик, захваченных Disk2vhd. Пришлось пройти сложное преобразование, создать пустой VHD, загрузить PartedMagic в Virtualbox, подсунуть ему преобразованный и пустой VHD и использовать Gparted (и Clonezilla, если не хотите заморачиваться с bootrec) для переноса раздела.

В результате получился VHD 20 Gb, с которого я сейчас пишу эту статью.



3. Использование дифференциальных виртуальных жестких дисков

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

Понятно, что сначала нужно уже иметь рабочую систему на VHD-диске, а потом добавлять вариант с дифференциальным диском.

Создать такой диск можно в diskpart или в Bootice. Пусть master.vhd будет нашим основным диском, создадим для него дифференциальный дочерний.

vhd, нажав кнопку Create:

VHD Native Boot снаружи и внутри

Теперь нужно добавить/исправить в BCD элемент, отвечающий за загрузку с VHD, указав дифференциальный child.vhd вместо master.vhd. Для этого мы воспользуемся профессиональным режимом в Bootice, создадим копию существующей записи Windows 10 (правая кнопка мыши, Дублировать эту запись) и переименуем новую в Windows 10 Child VHD. Теперь на этом этапе мы исправим ApplicationDevice и OsDevice, изменив имя VHD-файла:

VHD Native Boot снаружи и внутри

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

Если вы выберете Windows 10 Child VHD, Windows запустится и с этого момента будет записывать все изменения в child.vhd. Следует учитывать, что на момент загрузки для child.vhd будет зарезервировано столько же места, сколько указано в master.vhd, то есть в нашем случае 20 Гб, даже если его реальный размер составляет сотни раз меньше.

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

Дело в том, что если загрузиться не в дочерний, а в мастер или даже WinRE на базе master.vhd, то связь между мастером и дочерним оборвется, придется восстанавливать дочерний элемент, но Bootice тоже может это сделать:

VHD Native Boot снаружи и внутри



4. Рекомендуемая конфигурация физического диска при работе с загрузочными VHD.

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

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

Минимально необходимый для установки Windows x64 — 20 ГБ; вы можете создавать динамические диски, то есть они увеличивают свой фактический размер только по мере заполнения их внутреннего содержимого.

Но еще раз подчеркну, что в момент загрузки динамического VHD Windows резервирует для него место в соответствии с указанным максимальным размером.

Microsoft рекомендует использовать VHD фиксированного размера в рабочей среде, а динамические VHD только для тестирования, но я не заметил существенной потери производительности при использовании динамических VHD. Я бы предпочёл создать второй раздел для пользовательских данных и набора портативных приложений, если, например, вы хотите загружаться с разных VHD, но работать с одними и теми же файлами и программами.

Такое разделение может быть полезно и для того, чтобы вообще скрыть раздел с VHD, во избежание необоснованных действий со стороны конечного пользователя.

А скрыть раздел можно с помощью этого простого скрипта для diskpart с учетом выбранного диска и раздела для VHD-хранилища.



sel disk 0 sel part 1 set id=17

Теперь раздел скрыт, ему не назначена буква, но Windows все равно будет загружаться с VHD, хранящегося в этом разделе.

Единственный нюанс – выбор места на физическом диске для файла подкачки.

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

А чтобы вернуть шкатулку обратно, достаточно выполнить команду в diskpart

set id=07

или

set id=27

Список полезных ссылок msdn.microsoft.com/ru-ru/windows/hardware/commercialize/manufacture/desktop/understanding-virtual-hard-disks-with-native-boot msdn.microsoft.com/ru-ru/windows/hardware/commercialize/manufacture/desktop/windows-recovery-environment--windows-re--technical-reference gotch.techfaq.ru/archives/91 gotch.techfaq.ru/archives/115 winitpro.ru/index.php/2017/01/27/vosstanovlenie-sredy-windows-recovery-environment-winre-v-windows-10 https://technet.microsoft.com/ru-ru/library/cc766465(v=ws.10).

aspx Спасибо за внимание Теги: #Виртуализация #windows 10 #Системное администрирование #Резервное копирование #Оболочки #Восстановление данных #VHD #winre #bootice #diskpart #disk2vhd

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.