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

maisvendoo
Так что задача написания редактора BCD для линукс представляется мне вполне решаемой
А виндовые утилиты под wine не работают?
akorop
А виндовые утилиты под wine не работают?
Нет


[maisvendoo@arch-host bcdedit]$ wine bcdedit /enum all /store 'Z:\home\maisvendoo\ntfs_part\Boot\BCD'
fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub
The boot configuration data store could not be opened.
Файл не является файлом реестра.

Хотя сигнатура regf в файле BCD присутствует

Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb
http://maisvendoo.org
Как насчет Windows 10 ?
прокатит? очень понравился способ для дуалбута...
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych
Как насчет Windows 10 ?
прокатит? очень понравился способ для дуалбута...
Прокатит )
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb
http://maisvendoo.org
akorop
А виндовые утилиты под wine не работают?
Итак, детальное дизассемблирование и отладка виндового bcdedit.exe показала, что при работе с хранилищем используются функции Native API непосредственно экспортируемые из ntoskrnl.exe или через ntdll.dll. Так что работа через вайн представляется весьма затруднительной - я очень сомневаюсь, что вайн реализует эту прослойку совместимости, ибо он заточен для работы приложений запущенных в юзерспейсе.

Так что для написания линуксового аналога придется написать часть подсистемы работы с реестром, реализованную в win, а это задачка та ещё
Да пребудет с нами Сила...!
CPU Intel Core i7 2600K/RAM DDR3 16 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb
http://maisvendoo.org
Частенько приходится устанавливать винду, периодически обновляя образ.
Резать болванки не актуально. Для загрузки из ISO надо извращаться, пересобирать. Раздел на установочной флешке должен быть первым в MBR, а там раздел с данными, который захламлять не хочется. Менять последовательность разделов перед каждой установкой неудобно. Заводить отдельную флешку лень. Способ maisvendoo, громоздок.
Фух...

Решил как-то упростить и по возможности максимально автоматизировать установку из арча.

Необходимые компоненты.
1. pacman -S ntfs-3g qemu
2. yaourt -S wimlib
3. образ winpe.iso (гугл в помощь. сам использую образ из windows AIK)
4. wim образ с виндой (например install.wim)

Установка (Испытывал только с MBR)
1. Создаем диск C: любым удобным способом. Ставим метку "загрузочный". Форматируем
mkfs.ntfs -Q /dev/sdXY
/dev/sdXY - диск C:
2. Распаковываем систему на диск.
wimlib-imagex apply install.wim 1 /dev/sdXY
где "1" - индекс с нужной системой в install.wim. Посмотреть можно с помощью wiminfo install.wim
3. Запускаем виртуалку с winpe.iso. Не забываем нажать кнопку, чтобы загрузить именно iso.
qemu-system-x86_64 -cdrom winpe.iso -hda /dev/sdX -m 1G -boot d
/dev/sdX - диск (не раздел!!!) на который устанавливается винда.

Следующие команды вводятся в консоли винды в qemu.
4. Настройка загрузчика винды.
c:\windows\system32\bcdboot /l ru-RU c:\windows
5. Далее можно установить загрузочный сектор винды, если не планируется использвать линуксовый загрузчик.
bootsect /mbr All
6. Вырубаем qemu. Arch poweroff.

Принимаются предложения по полной автоматизации пунктов 3 и 4!!!
Lupus pilum mutat, non mentem.
Кстати.
Редактирование BCD с помощью BOOTICE так и не осилил. Не работает. Вываливает ошибку при загрузке винды и все тут.
Lupus pilum mutat, non mentem.
Есть неплохая свободная программа - Visual BCD
Кажется решение найдено.
Теперь нужны испытания)))
Lupus pilum mutat, non mentem.
Копаюсь в BCD.
Перегоняю, в reg. Что бы удобней было читать.
hivexregedit --export BCD \\ > BCD.reg
В куче цифр мало понятного))) Пришлось написать (писатель из меня еще тот)))) скрипт, перегоняющий в более читаемый вид.
#!/bin/bash

REG="$1"

while read -r line ; do
	if echo "$line" | grep -i "=hex(1)" > /dev/null || echo "$line" | grep -i "=hex(7)" > /dev/null; then
		name=$(echo "$line" | awk -F":" '{ print $1 }')
		hex=$(echo "$line" | awk -F":" '{ print $2 }')
		par=$(echo "$hex" | xxd -r -p | sed 's/\x0//g')
		line="$name":"$par"
	fi
	echo "$line"
done < "$REG"
С кириллицей не дружит.
Запускать
скрипт BCD.reg
Теперь видны некоторые закономерности.
Копаем дальше.
Lupus pilum mutat, non mentem.
 
Зарегистрироваться или войдите чтобы оставить сообщение.