Полностью ручная установка Windows 7/8/8.1/10 в дуалбут без порчи загрузчика GRUB в режимах EFI и BIOS

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

Почесав репу, я пришел к выводу, что да, действительно, это довольно сложный способ. Тем более он крайне тяжело осуществим, если вы используете разметку диска GPT и устанавливается EFI-версию Windows. На первый взгляд проще поставить винду обычным способом. Однако, тут таки есть один нюанс, который лично мне не нравится - установщик винды в режиме EFI хоть и не перезаписывает сектора диска своим кодом, но зато переопределяет NVRAM, подсовывая туда путь к своему загрузчику. Так что функционал GBUB всё равно приходится восстанавливать.

В итоге разработан совершенно иной метод установки Windows версий 7/8/8.1/10. Работает это метод и в случае с MBR + BIOS системы, так и для случая с EFI + GPT. Установить систему можно как в раздел HDD, так и на VHD. При этом, идеологически он очень похож на установку арча - всё происходит под полным контролем пользователя, без изменения настроек загрузчка, который уже имеется у вас.

Предположим у вас имеется компьютер, с установленным на HDD загрузчиком GRUB2 и свободным разделом, отформатированном в NTFS. Устанавливать будем Windows 7 Ultimate SP1. Для этого потребуются:

  1. Установочный диск с виндой
  2. Чистая флешка объемом >= 4 Gb
  3. Архиватор 7-zip соответствующей разрядности
  4. Утилита BootICE, желательна, но совершенно не обязательна, можно обойтись и bcdedit.exe, входящим в дистрибутив винды

1. Создаем загрузочную флешку

Дело в том, что семерка не хочет устанавливаться в EFI-режиме с DVD. Вот не хочет и всё. К тому же, на установочном носителе нам понадобятся дополнительные утилиты, которые туда надо поместить, а в случае с шлешкой это несколько проще, чем в случае с DVD.

Монтируем установочный образ с виндой, допустим он лежит у нас в хомяке в каталоге install с именем win7-setup.iso


$ mkdir ~/iso
$ sudo mount -t udf ~/install/win7-setup.iso ~/iso

Вставляем флешку в USB-порт. Допустим, она получила имя устройства /dev/sdb. Выполним её разметку в формате MBR


$ sudo fdisk /dev/sdb

Создем на флешке один единственный раздел. После чего форматируем её в FAT

$ sudo mkfs.vfat /dev/sdb1

Копируем содержимое дистрибутива винды на флешку

$ mkdir /tmp/flash
$ sudo mount /dev/sdb1 /tmp/flash -o uid=1000,gid=100,fmask=113,dmask=002
$ cp -rv ~/iso/* /tmp/flash/

Скопируем конфиги EFI-загрузчика на уровень выше


$ cp -rv ~/tmp/flash/efi/microsoft/* ~/tmp/flash/efi/

Теперь нам нужен EFI-загрузчик винды. Его придется выцарапать из дистрибутива. Это легко сделать с помощью архиватора 7-zip, который имеется в репозитории extra/p7zip. Все содержимое дистрибутива винды сжато в образ wim-формата находится на установочном DVD в файле source/install.wim. Обычно этот образ имеет следующую структуру



В каталогах с именами в виде цифр 1-4 находятся разные редакции винды. Чтобы выбрать нужную надо посмотреть внутрь файла с именем [1].xml. Распакуем его в /tmp


$ cd /tmp
$ 7z e ~/iso/sources/install.wim \[1\].xml

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



где нода <EDITIONID> указывает на редакцию. Параметр INDEX - как раз номер каталога, в котором валяется нужная редакция. Итак, мне нужна Ultimate, а это индекс 4. Соответсвенно выковыриваем загрузчик оттуда


$ 7z e ~/iso/sources/install.wim 4/Windows/Boot/EFI/bootmgfw.efi

Оки, теперь перенесем полученный файл на флешку


$ mv bootmgfwmefi /tmp/flash/efi/boot/bootx64.efi

Порядок, теперь у нас в наличии загрузочная флешка для установки винды. Теперь добавим на неё необходимые для установки утилиты - виндозную версию архиватора 7-zip и утилиту BootICE. Архиватор качаем с официального сайта и распаковываем на флешку в каталог utils


$ mkdir -p /tmp/flash/utils/7-Zip/
$ cd /tmp/flash/utils/7-Zip/
$ 7z x ~/downloads/7z1602-x64.exe

Туда же помещаем и bootice


$ cp ~/install/BOOTICEx64.exe /tmp/flash/utils

Уф, всё, отмонтируем флешку

$ cd ~
$ sudo umount /tmp/flash/

Перезагружаемся. Если у вас система с EFI и съемные диски стоят в приоритете загрузки, то компьютер загрузится в установку винды автоматом. Если же появилось таки меню GRUB, ничего страшного, жмем "С" и в консоли набиваем команду exit. Вас вывалит в меню EFI, где выбираем загрузку с флешки. Если же ваша система с BIOS, то тут чуть сложнее, ибо мы не стали заморачиваться с настройкой MBR на флешке. Тогда в консоли GRUB даем команду ls - появися список всех дисков и разделов. Находим нашу флешку, она отобразится в виде (hdX, msdosY), где X, Y - номер диска и раздела соответственно. Теперь вбиваем в консоли команды


grub> set root=hdX,Y
grub> ntldr /bootmgr
grub> boot

Для режима MBR можно поставить GRUB на флешку, тогда при выборе в биосе загрузки со съемного носителя, установщик винды будет грузится так же автоматически, как и в случае с EFI


$ sudo fatlabel /dev/sdb1 SETUP
$ mkdir /tmp/flash/grub
$ sudo grub-install --target=i386-pc --boot-directory=/tmp/flash/grub /dev/sdb

Конфигурируем GRUB, причем корень лучше установить по метке тома

/tmp/flash/grub/grub/grub.cfg

menuentry 'Windows 7 Setup' {

search --label SETUP --set root
ntldr /bootmgr
}

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

2. О развертываении Windows из WIM-образа и капризном нраве Sysprep

Начиная с семерки установка Windows заключается в следующих этапах

  1. Разметка диска в соответствии с архитектурой системы инициализации оборудования. Если BIOS - установщик размечает диск в MBR. При наличии активной EFI - разметка будет GPT.
  2. Распаковка образа install.wim в выбранный для установки раздел
  3. Установка загрузчика и перезагрузка
  4. Инициализация оборудования. Ребут
  5. Локализация, ввод ключа, окончание настройки системы

Это стандартный путь. У нас же диск уже размечен. И нам не нужна автоматическая установка загрузчика - мы поставим его вручную. Разметка диска должна удовлетворять следующим требованиям

  • Если система с EFI на диске должен присутствовать FAT-раздел с типом 0xEF. Если у нас уже установлен линукс с EFI-загрузчиком, то таковой раздел уже имеется
  • Если система с BIOS, то раздел, в котором располагается загрузчик, а это наш NTFS-раздел должен быть активным. Это очень важно! Почему, будет объяснено ниже.

Таким образом, перед распаковкой системы мы должны убедится в том, что перечисленные требования выполнены. После того, как мы распакуем все файл системы и установим загрузчик, система перезагрузиться. После перезагрузки запустится утилита Sysprep, среди прочего настраивающая оборудования и проверяющая конфигурацию системы. Так вот, если в режиме EFI Sysprep не найдет загрузчик и его конфигурацию в EFI-разделе по пути EFI/microsof/boot, а в системе с BIOS каталог \Boot и bootmgr будут лежать в неактивном разделе, то Sysprep завершится с ошибкой sysprep generalize error, а в лог, расположенный по адресу \Windows\Panther\sysperr.log выплюнет что-то похожее на


2015-03-11 16:55:42, Error      [0x0e00b3] TOOL   Sysprep_Specialize_Bcd: There was an error opening the system store. Status=[0xC0000098]
2015-03-11 16:55:42, Error      [0x0f0082] SYSPRP LaunchDll:Failure occurred while executing 'c:\Windows\System32\spbcd.dll,Sysprep_Specialize_Bcd', returned error code 1006
2015-03-11 16:55:42, Error      [0x060435] IBS    Callback_Specialize: An error occurred while either deciding if we need to specialize or while specializing; dwRet = 0x3ee

и никакие танцы с бубном нам уже не помогут. Винда требует, чтобы загручик лежал в загрузочном разделе и точка. В случае с BIOS просто делаем активным раздел NTFS в котором лежит винда и туда же кладем и загрузчик. Грузится будем всё равно с помощью GRUB, а ему все равно, какой раздел будет активным. В случае с EFI загрузчик придется положить рядом с GRUB в EFI-разделе.

3. Распаковка системы

Итак, определимся, куда мы хотим ставить винду. Можно поставить в NTFS-раздел, а можно и в VHD-диск. Это уж как вам хочется. Я буду показывать процесс на примере с виртуальной машиной EFI, имеющей следующую разметку


The protective MBR's 0xEE partition is oversized! Auto-repairing.

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/loop1: 104857600 sectors, 50.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 0D217C93-6699-435A-9BBB-61DFAA6F30B7
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          206847   100.0 MiB   EF00  EFI system partition
   2          206848       104855551   49.9 GiB    0700  Basic data partition

На этом диске нет линукса, установлен только GRUB в раздел с EFI. Если мы ставим систему непосредственно в NTFS-раздел, то загружаемся с флешки, дожидаемся запуска программы установки и жмем Shift + F10, чтобы вызвать консоль. Запускаем утилиту diskpart и смотрим список подключенных томов


X:\sources> diskpart
DISKPART> list vol



Видим, что флешка (объемом 8 Гб) подключена как диск C:, а раздел для установки вовсе не смонтирован. Непорядок. Делаем так


DISKPART> sel vol 3
DISKPART> remove
DISKPART> assign letter=E
DISKPART> sel vol 1
DISKPART> assign letter=C
DISKPART> list vol
DISKPART> sel vol 2
DISKPART> assign letter=F

Вот теперь порядок, диск на который будем ставить винду стал диском C:, флешка - диском E:, а EFI-раздел - диском F:



Если же мы хотим поставить систему на VHD, то делаем так


DISKPART> sel vol 3
DISKPART> remove
DISKPART> assign letter=E
DISKPART> sel vol 1
DISKPART> assign letter=G
DISKPART> exit

Для порядка создаем каталог с образами

X:\sources> md G:\vhd
X:\sources> diskpart

Создаем виртуальный диск, создаем на нем разметку GPT и раздел NTFS и понтируем его к C:


DISKPART> create vdisk file="G:\vhd\win7.vhd" maximum=25600 type=fixed
DISKPART> attach vdisk
DISKPART> clean
DISKPART> convert gpt
DISKPART> create part primary
DISKPART> format fs=ntfs quick
DISKPART> assign letter=C

EFI-раздел монтируем к F:


DISKPART> sel vol 2
DISKPART> assign letter=F

Получаем такую картину



Очень важно! Убеждаемся в том, что EFI-раздел отформатирован именно в FAT, а не в FAT32. Иначе Sysprep не простит нам этой ошибки. Если на компе уже есть линукс, то настройки будут верны.

Теперь распаковываем дистрибутив на диск C:


X:\sources> E:
E:\> utils\7-Zip\7zFM.exe

Откроется GUI архиватора 7-zip. В нем открываем каталог E:\sources, находим там файл install.wim



Правой кнопкой на этом файле вызываем контектстное меню и переходим по 7-zip -> Открыть архив. Появится содержимое образа. Лезем в папку 4 - там лежит ультимейт



Выделяем всё Ctrl + A и жмем кнопку "Извлечь". Появится окно, где нам предложат указать путь распаковки



Указываем корень диска C: и жмем ОК.



Всё, теперь ждемс...

4. Установка и настройка загрузчика

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

В случае с EFI, переходим на раздел EFI, смонтированный к F: и создаем необходимые пути и копируем файлы загрузчика


E:\> F:
F:\> mkdir EFI\microsoft\boot
F:\> xcopy C:\Windows\Boot\EFI\* F:\EFI\microsoft\boot /s /e
F:\> mkdir EFI\microsoft\boot\Fonts
F:\> xcopy C:\Windows\Boot\Fonts\* F:\EFI\microsoft\boot\Fonts\ /s /e
F:\> copy C:\Windows\System32\config\BCD-Template F:\EFI\microsoft\boot\BCD

Отлично, загрузчик скопирован. Теперь настроим его


F:\> E:\utils\BOOTICEx64.exe

Открываем файл F:\EFI\Microsoft\Boot\BCD. В случае установки на раздел, его параметры задаются так



Если же мы устанавливали систему на VHD, то настройки будут такими



Важно! Имя вторичного загрузчика для EFI-системы winload.efi, для BIOS-системы - winload.exe.

В случае, если мы устанавливаем BIOS-систему установка загрузчика будет выглядеть так


F:\> mkdir C:\Boot
F:\> xcopy C:\Windows\Boot\PCAT\* C:\Boot /s /e
F:\> mkdir C:\Boot\Fonts
F:\> xcopy C:\Windows\Boot\Fonts\* C:\Boot\Fonts /s /e
F:\> copy C:\Boot\bootmgr C:\bootmgr
F:\> copy C:\Windows\System32\config\BCD-Template C:\Boot\BCD

Важно! Раздел, смонтированный к C: (там где размещен загрузчик) обязан быть активным! Убедитесь в этом перед перезагрузкой!

Настройку выполняем так же точно, используя BootICE.

Ну, вроде все. Закрываем все окна и идем в ребут. Флешку можно вытащить из компа.

5. Скрестим пальцы да вознесем молитвы тебе, о Великий и Ужасный Sysprep...!

GRUB у нас еще не настроен пункта для винды в меню нет. Как только появится меню GRUB жмем "C". В консоли набираем


grub> set root=hdX,Y
grub> chainloader /EFI/Microsoft/Boot/bootmgfw.efi
grub> boot

X, Y - соответственно диск и раздел, где лежит загрузчик. Это в случае EFI. В случае с BIOS делаем так


grub> set root=hdX,Y
grub> ntldr /bootmgr
grub> boot

X, Y - диск и раздел с NTFS. Там где распакована винда и лежит её загрузчик.

Ждем... В режиме EFI вы сначала увидите черный экран. Не пугайтесь - просто я не нашел злосчатную dll с логотипами, пока что. В случае с BIOS увидим знакомую летающую эмблему винды. А потом в обоих случаях увидим это



Ждем и молимся. На 57% моргнет экран - настраивается видяха. И если мы все сделали верно, то надпись "Применение параметров системы" повисит довольно долго, потом система сообщит, что установка будет продолжена после перезагрузки. Если мы где-то напортачили с установкой загрузчика - неправильный EFI раздел или неактивный NTFS, то тогда будет ошибка :( Но мы молодцы и у нас все получится, и после очередной перезагрузки мы увидим это



а потом, наконец вот это



Дальше все как при обычной, штатной установке.

6. Настраиваем GRUB

Обратили внимание на то, что каждый раз мы грузим систему из консоли GRUB руками. Это очень хорошо - значит ни MBR ни NVRAM не перезаписаны коварным майкрософтом. Настало время грузится в арч и добавить в меню GRUB новый пункт


menuentry 'Windows 7 Ultimate SP1 (EFI)' {

	set root=hdX,Y
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

в случае EFI. Или


menuentry 'Windows 7 Ultimate SP1' {

	set root=hdX,Y
	ntldr /bootmgr
}

в случае BIOS. Применяем настройки GRUB и перезагружаемся....



Выводы

Злой Майкрософт побежден. Винда может быть установлена без вмешательства в настройки загрузки. А если бы написать аналог bcdedit.exe или BootICE под линукс, то всё перечисленное можно было бы проделать не выходя из Арча. Прямо в арче - и образ раскатать и загрузчик настроить. И никаких виртуальных машин.
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce 580GTX/HDD Seagate SATA3 2 Tb
http://maisvendoo.org
maisvendoo
Злой Майкрософт побежден. Винда может быть установлена без вмешательства в настройки загрузки. А если бы написать аналог bcdedit.exe или BootICE под линукс, то всё перечисленное можно было бы проделать не выходя из Арча. Прямо в арче - и образ раскатать и загрузчик настроить. И никаких виртуальных машин.
значит wim можно распаковать из линукса?
Lupus pilum mutat, non mentem.
jim945
значит wim можно распаковать из линукса?
Да, можно. Используя 7-zip

И если бы был аналог bcdedit для линукса, то можно было бы установить винду из линукса. И, например сделать live-носитель с установщиком на bash-скриптах. Как говорят на лоре - "не нужен" стандартный установщик

Upd: Опубликовал это на хабре. Тут же посоветовали ценный для данной задачи тулз - wimlib

[maisvendoo@arch-host win7-efi]$ wimlib-imagex info ~/iso/sources/install.wim
WIM Information:
----------------
Path:           /home/maisvendoo/iso/sources/install.wim
GUID:           0xd2cd8e1cb9c7144483bad0dac385534d
Version:        68864
Image Count:    4
Compression:    LZX
Chunk Size:     32768 bytes
Part Number:    1/1
Boot Index:     0
Size:           2850077531 bytes
Attributes:     Integrity info, Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 7 HOMEBASIC
Description:            Windows 7 HOMEBASIC
Display Name:           Windows 7 Домашняя базовая
Display Description:    Windows 7 Домашняя базовая
Directory Count:        13976
File Count:             66508
Total Bytes:            11529408728
Hard Link Bytes:        4376878446
Creation Time:          Вс ноя 21 04:39:25 2010 UTC
Last Modification Time: Вс ноя 21 13:14:41 2010 UTC
Architecture:           x86_64
Product Name:           Microsoft® Windows® Operating System
Edition ID:             HomeBasic
Installation Type:      Client
HAL:                    acpiapic
Product Type:           WinNT
Product Suite:          Terminal Server
Languages:              ru-RU
Default Language:       ru-RU
System Root:            WINDOWS
Major Version:          6
Minor Version:          1
Build:                  7601
Service Pack Build:     17514
Service Pack Level:     1
Flags:                  HomeBasic
WIMBoot compatible:     no

Index:                  2
Name:                   Windows 7 HOMEPREMIUM
Description:            Windows 7 HOMEPREMIUM
Display Name:           Windows 7 Домашняя расширенная
Display Description:    Windows 7 Домашняя расширенная
Directory Count:        14226
File Count:             67569
Total Bytes:            12042784908
Hard Link Bytes:        4792628161
Creation Time:          Вс ноя 21 04:39:25 2010 UTC
Last Modification Time: Вс ноя 21 13:15:42 2010 UTC
Architecture:           x86_64
Product Name:           Microsoft® Windows® Operating System
Edition ID:             HomePremium
Installation Type:      Client
HAL:                    acpiapic
Product Type:           WinNT
Product Suite:          Terminal Server
Languages:              ru-RU
Default Language:       ru-RU
System Root:            WINDOWS
Major Version:          6
Minor Version:          1
Build:                  7601
Service Pack Build:     17514
Service Pack Level:     1
Flags:                  HomePremium
WIMBoot compatible:     no

Index:                  3
Name:                   Windows 7 PROFESSIONAL
Description:            Windows 7 PROFESSIONAL
Display Name:           Windows 7 Профессиональная
Display Description:    Windows 7 Профессиональная
Directory Count:        14314
File Count:             68104
Total Bytes:            11945156754
Hard Link Bytes:        4667733545
Creation Time:          Вс ноя 21 04:39:25 2010 UTC
Last Modification Time: Вс ноя 21 13:16:43 2010 UTC
Architecture:           x86_64
Product Name:           Microsoft® Windows® Operating System
Edition ID:             Professional
Installation Type:      Client
HAL:                    acpiapic
Product Type:           WinNT
Product Suite:          Terminal Server
Languages:              ru-RU
Default Language:       ru-RU
System Root:            WINDOWS
Major Version:          6
Minor Version:          1
Build:                  7601
Service Pack Build:     17514
Service Pack Level:     1
Flags:                  Professional
WIMBoot compatible:     no

Index:                  4
Name:                   Windows 7 ULTIMATE
Description:            Windows 7 ULTIMATE
Display Name:           Windows 7 Максимальная
Display Description:    Windows 7 Максимальная
Directory Count:        14350
File Count:             68286
Total Bytes:            12107983977
Hard Link Bytes:        4828481537
Creation Time:          Вс ноя 21 04:39:25 2010 UTC
Last Modification Time: Вс ноя 21 13:17:22 2010 UTC
Architecture:           x86_64
Product Name:           Microsoft® Windows® Operating System
Edition ID:             Ultimate
Installation Type:      Client
HAL:                    acpiapic
Product Type:           WinNT
Product Suite:          Terminal Server
Languages:              ru-RU
Default Language:       ru-RU
System Root:            WINDOWS
Major Version:          6
Minor Version:          1
Build:                  7601
Service Pack Build:     17514
Service Pack Level:     1
Flags:                  Ultimate
WIMBoot compatible:     no


[maisvendoo@arch-host win7-efi]$ mkdir /tmp/wim
[maisvendoo@arch-host win7-efi]$ wimlib-imagex mount ~/iso/sources/install.wim 4 /tmp/wim
[maisvendoo@arch-host win7-efi]$ ls /tmp/wim -l
итого 0
lrwxrwxrwx 1 maisvendoo users 0 июл 14  2009 'Documents and Settings' -> /tmp/wim/Users
drwxrwxrwx 1 maisvendoo users 0 июл 14  2009 PerfLogs
drwxrwxrwx 1 maisvendoo users 0 июл 14  2009 ProgramData
drwxrwxrwx 1 maisvendoo users 0 ноя 21  2010 'Program Files'
drwxrwxrwx 1 maisvendoo users 0 июл 14  2009 'Program Files (x86)'
drwxrwxrwx 1 maisvendoo users 0 ноя 21  2010 '$Recycle.Bin'
drwxrwxrwx 1 maisvendoo users 0 ноя 21  2010 Users
drwxrwxrwx 1 maisvendoo users 0 ноя 21  2010 Windows
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce 580GTX/HDD Seagate SATA3 2 Tb
http://maisvendoo.org
BCD файл - это же кусок реестра, если не ошибаюсь.
Открылся в hivexsh. Что-то там есть...
Lupus pilum mutat, non mentem.
jim945
hivexsh
Да, это куст реестра. И да, читается верно


BCD\> ls
Description
Objects
BCD\> cd Objects
BCD\Objects> ls
{0aadda60-01d8-4e67-a646-a312249d3487}
{88063e7f-18ce-4000-923f-50c044132e98}
{9dea862c-5cdd-4e70-acc1-f32b344d4795}
BCD\Objects>

Причем {9dea862c-5cdd-4e70-acc1-f32b344d4795} - это стандартный раздел {bootmgr}. Остальные две - загрузочные записи имеющиеся у меня

Весьма и весьма занятно... Проект хостится на битбукете

Upd: hivexml позволяет перекрутить данные в структуру


<node name="12000002">
<mtime>2016-02-02T11:37:46Z</mtime>
<byte_runs>
<byte_run file_offset="9944" len="88"/>
</byte_runs>
<value type="string" key="Element" value="\Windows\system32\winload.exe">
<byte_runs>
<byte_run file_offset="10032" len="31"/>
<byte_run file_offset="10064" len="64"/>
</byte_runs>
</value>
</node>
<node name="12000004">
<mtime>2016-02-02T11:38:13Z</mtime>
<byte_runs>
<byte_run file_offset="10536" len="88"/>
</byte_runs>
<value type="string" key="Element" value="Windows 7 for UM">
<byte_runs>
<byte_run file_offset="10624" len="31"/>
<byte_run file_offset="10864" len="38"/>
</byte_runs>
</value>
</node>

И это таки один из пунктов моего меню для загрузки винды. Сама библиотека hivex позволяет редактировать реестр винды. Это уже что-то, что можно использовать
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce 580GTX/HDD Seagate SATA3 2 Tb
http://maisvendoo.org
Вот. Поднял архивы)))
может пригодится
Lupus pilum mutat, non mentem.
jim945
Вот. Поднял архивы)))
Я знаком с этим циклом статей. Оттуда многое почерпнул. Но всё равно спасибо. Ещё есть замечательный блог, на котором в частности есть вот это, это и ещё вот )
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce 580GTX/HDD Seagate SATA3 2 Tb
http://maisvendoo.org
maisvendoo
вот это, это и ещё вот )
Спасибо. проходили)))
maisvendoo
Upd: hivexml позволяет перекрутить данные в структуру
Обратно соберется интересно? :)
Lupus pilum mutat, non mentem.
jim945
Обратно соберется интересно? :)
Это излишне сложно будет, тем более что обратного конвертора в составе пакета нет. Единственный вариант - писать специальное приложение на C/С++, используя hivex в качестве средства работы с реестром. Тут же можно задействовать и исходники ReactOS - там есть ашник, описывающий BCD-хранилище, и при просмотре по диагонали вроде значения ключей совпадают с виндовыми. И в MSDN имеется описание некоторых структур этого файла.

Так что задача написания редактора BCD для линукс представляется мне вполне решаемой. При наличии такой утилиты и используя wimlib вполне реально создать альтернативный инсталлятор винды на основе live-носителя с Linux, с кастомизацией загрузчика, да и много ещё с чем.

Если использовать в качестве Live-носителя winPE, то такой инсталлятор можно сделать уже сейчас - приведенная выше статья это примерный алгоритм его работы

Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce 580GTX/HDD Seagate SATA3 2 Tb
http://maisvendoo.org
Спасибо за мануал !!!
 
Зарегистрируйтесь или войдите что-бы оставить сообщение.