maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Многие жители форума знакомы с моей статьей, в которой рассказывается об установке 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. Создаем загрузочную флешку Дело в том, что семерка не хочет устанавливаться в EFI-режиме с DVD. Вот не хочет и всё. К тому же, на установочном носителе нам понадобятся дополнительные утилиты, которые туда надо поместить, а в случае с шлешкой это несколько проще, чем в случае с DVD. Монтируем установочный образ с виндой, допустим он лежит у нас в хомяке в каталоге install с именем win7-setup.iso
Вставляем флешку в USB-порт. Допустим, она получила имя устройства /dev/sdb. Выполним её разметку в формате MBR
Создем на флешке один единственный раздел. После чего форматируем её в FAT
Копируем содержимое дистрибутива винды на флешку
Скопируем конфиги EFI-загрузчика на уровень выше
Теперь нам нужен EFI-загрузчик винды. Его придется выцарапать из дистрибутива. Это легко сделать с помощью архиватора 7-zip, который имеется в репозитории extra/p7zip. Все содержимое дистрибутива винды сжато в образ wim-формата находится на установочном DVD в файле source/install.wim. Обычно этот образ имеет следующую структуру В каталогах с именами в виде цифр 1-4 находятся разные редакции винды. Чтобы выбрать нужную надо посмотреть внутрь файла с именем [1].xml. Распакуем его в /tmp
и посмотрим с помощью какого-нибудь браузера, ибо в текстовом редакторе он выглядит ужасно, а специального редактора xml у меня в наличии не оказалось. Каждую редакцию винды описывают структурой вида где нода <EDITIONID> указывает на редакцию. Параметр INDEX - как раз номер каталога, в котором валяется нужная редакция. Итак, мне нужна Ultimate, а это индекс 4. Соответсвенно выковыриваем загрузчик оттуда
Оки, теперь перенесем полученный файл на флешку
Порядок, теперь у нас в наличии загрузочная флешка для установки винды. Теперь добавим на неё необходимые для установки утилиты - виндозную версию архиватора 7-zip и утилиту BootICE. Архиватор качаем с официального сайта и распаковываем на флешку в каталог utils
Туда же помещаем и bootice
Уф, всё, отмонтируем флешку
Перезагружаемся. Если у вас система с EFI и съемные диски стоят в приоритете загрузки, то компьютер загрузится в установку винды автоматом. Если же появилось таки меню GRUB, ничего страшного, жмем "С" и в консоли набиваем команду exit. Вас вывалит в меню EFI, где выбираем загрузку с флешки. Если же ваша система с BIOS, то тут чуть сложнее, ибо мы не стали заморачиваться с настройкой MBR на флешке. Тогда в консоли GRUB даем команду ls - появися список всех дисков и разделов. Находим нашу флешку, она отобразится в виде (hdX, msdosY), где X, Y - номер диска и раздела соответственно. Теперь вбиваем в консоли команды
Для режима MBR можно поставить GRUB на флешку, тогда при выборе в биосе загрузки со съемного носителя, установщик винды будет грузится так же автоматически, как и в случае с EFI
Конфигурируем GRUB, причем корень лучше установить по метке тома /tmp/flash/grub/grub/grub.cfg
Начнется загрузка установщика винды. Он то загрузится, но нам он и нафиг не нужен - мы всё будем делать руками ))) Чтобы стало понятно, что к чему, придется рассмотреть некоторую теорию 2. О развертываении Windows из WIM-образа и капризном нраве Sysprep Начиная с семерки установка Windows заключается в следующих этапах
Это стандартный путь. У нас же диск уже размечен. И нам не нужна автоматическая установка загрузчика - мы поставим его вручную. Разметка диска должна удовлетворять следующим требованиям
Таким образом, перед распаковкой системы мы должны убедится в том, что перечисленные требования выполнены. После того, как мы распакуем все файл системы и установим загрузчик, система перезагрузиться. После перезагрузки запустится утилита Sysprep, среди прочего настраивающая оборудования и проверяющая конфигурацию системы. Так вот, если в режиме EFI Sysprep не найдет загрузчик и его конфигурацию в EFI-разделе по пути EFI/microsof/boot, а в системе с BIOS каталог \Boot и bootmgr будут лежать в неактивном разделе, то Sysprep завершится с ошибкой sysprep generalize error, а в лог, расположенный по адресу \Windows\Panther\sysperr.log выплюнет что-то похожее на
и никакие танцы с бубном нам уже не помогут. Винда требует, чтобы загручик лежал в загрузочном разделе и точка. В случае с BIOS просто делаем активным раздел NTFS в котором лежит винда и туда же кладем и загрузчик. Грузится будем всё равно с помощью GRUB, а ему все равно, какой раздел будет активным. В случае с EFI загрузчик придется положить рядом с GRUB в EFI-разделе. 3. Распаковка системы Итак, определимся, куда мы хотим ставить винду. Можно поставить в NTFS-раздел, а можно и в VHD-диск. Это уж как вам хочется. Я буду показывать процесс на примере с виртуальной машиной EFI, имеющей следующую разметку
На этом диске нет линукса, установлен только GRUB в раздел с EFI. Если мы ставим систему непосредственно в NTFS-раздел, то загружаемся с флешки, дожидаемся запуска программы установки и жмем Shift + F10, чтобы вызвать консоль. Запускаем утилиту diskpart и смотрим список подключенных томов
Видим, что флешка (объемом 8 Гб) подключена как диск C:, а раздел для установки вовсе не смонтирован. Непорядок. Делаем так
Вот теперь порядок, диск на который будем ставить винду стал диском C:, флешка - диском E:, а EFI-раздел - диском F: Если же мы хотим поставить систему на VHD, то делаем так
Для порядка создаем каталог с образами
Создаем виртуальный диск, создаем на нем разметку GPT и раздел NTFS и понтируем его к C:
EFI-раздел монтируем к F:
Получаем такую картину Очень важно! Убеждаемся в том, что EFI-раздел отформатирован именно в FAT, а не в FAT32. Иначе Sysprep не простит нам этой ошибки. Если на компе уже есть линукс, то настройки будут верны. Теперь распаковываем дистрибутив на диск C:
Откроется GUI архиватора 7-zip. В нем открываем каталог E:\sources, находим там файл install.wim Правой кнопкой на этом файле вызываем контектстное меню и переходим по 7-zip -> Открыть архив. Появится содержимое образа. Лезем в папку 4 - там лежит ультимейт Выделяем всё Ctrl + A и жмем кнопку "Извлечь". Появится окно, где нам предложат указать путь распаковки Указываем корень диска C: и жмем ОК. Всё, теперь ждемс... 4. Установка и настройка загрузчика Итак, после некоторого время ожидания распаковка окончена. И вот тут, вот в этом месте винда обчно делает бяку, а именно портит MBR или перенастраивает NVRAM. Но мы не дадим ей этого сделать - мы установим загрузчик вручную. В случае с EFI, переходим на раздел EFI, смонтированный к F: и создаем необходимые пути и копируем файлы загрузчика
Отлично, загрузчик скопирован. Теперь настроим его
Открываем файл F:\EFI\Microsoft\Boot\BCD. В случае установки на раздел, его параметры задаются так Если же мы устанавливали систему на VHD, то настройки будут такими Важно! Имя вторичного загрузчика для EFI-системы winload.efi, для BIOS-системы - winload.exe. В случае, если мы устанавливаем BIOS-систему установка загрузчика будет выглядеть так
Важно! Раздел, смонтированный к C: (там где размещен загрузчик) обязан быть активным! Убедитесь в этом перед перезагрузкой! Настройку выполняем так же точно, используя BootICE. Ну, вроде все. Закрываем все окна и идем в ребут. Флешку можно вытащить из компа. 5. Скрестим пальцы да вознесем молитвы тебе, о Великий и Ужасный Sysprep...! GRUB у нас еще не настроен пункта для винды в меню нет. Как только появится меню GRUB жмем "C". В консоли набираем
X, Y - соответственно диск и раздел, где лежит загрузчик. Это в случае EFI. В случае с BIOS делаем так
X, Y - диск и раздел с NTFS. Там где распакована винда и лежит её загрузчик. Ждем... В режиме EFI вы сначала увидите черный экран. Не пугайтесь - просто я не нашел злосчатную dll с логотипами, пока что. В случае с BIOS увидим знакомую летающую эмблему винды. А потом в обоих случаях увидим это Ждем и молимся. На 57% моргнет экран - настраивается видяха. И если мы все сделали верно, то надпись "Применение параметров системы" повисит довольно долго, потом система сообщит, что установка будет продолжена после перезагрузки. Если мы где-то напортачили с установкой загрузчика - неправильный EFI раздел или неактивный NTFS, то тогда будет ошибка :( Но мы молодцы и у нас все получится, и после очередной перезагрузки мы увидим это а потом, наконец вот это Дальше все как при обычной, штатной установке. 6. Настраиваем GRUB Обратили внимание на то, что каждый раз мы грузим систему из консоли GRUB руками. Это очень хорошо - значит ни MBR ни NVRAM не перезаписаны коварным майкрософтом. Настало время грузится в арч и добавить в меню GRUB новый пункт
в случае EFI. Или
в случае BIOS. Применяем настройки GRUB и перезагружаемся.... Выводы Злой Майкрософт побежден. Винда может быть установлена без вмешательства в настройки загрузки. А если бы написать аналог bcdedit.exe или BootICE под линукс, то всё перечисленное можно было бы проделать не выходя из Арча. Прямо в арче - и образ раскатать и загрузчик настроить. И никаких виртуальных машин.
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
maisvendooзначит wim можно распаковать из линукса?
Lupus pilum mutat, non mentem.
|
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
jim945Да, можно. Используя 7-zip И если бы был аналог bcdedit для линукса, то можно было бы установить винду из линукса. И, например сделать live-носитель с установщиком на bash-скриптах. Как говорят на лоре - "не нужен" стандартный установщик Upd: Опубликовал это на хабре. Тут же посоветовали ценный для данной задачи тулз - wimlib
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
BCD файл - это же кусок реестра, если не ошибаюсь. Открылся в hivexsh. Что-то там есть...
Lupus pilum mutat, non mentem.
|
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
jim945Да, это куст реестра. И да, читается верно
Причем {9dea862c-5cdd-4e70-acc1-f32b344d4795} - это стандартный раздел {bootmgr}. Остальные две - загрузочные записи имеющиеся у меня Весьма и весьма занятно... Проект хостится на битбукете Upd: hivexml позволяет перекрутить данные в структуру
И это таки один из пунктов моего меню для загрузки винды. Сама библиотека hivex позволяет редактировать реестр винды. Это уже что-то, что можно использовать
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
Вот. Поднял архивы))) может пригодится
Lupus pilum mutat, non mentem.
|
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
jim945Я знаком с этим циклом статей. Оттуда многое почерпнул. Но всё равно спасибо. Ещё есть замечательный блог, на котором в частности есть вот это, это и ещё вот )
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
maisvendooСпасибо. проходили))) maisvendooОбратно соберется интересно? :)
Lupus pilum mutat, non mentem.
|
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
jim945Это излишне сложно будет, тем более что обратного конвертора в составе пакета нет. Единственный вариант - писать специальное приложение на C/С++, используя hivex в качестве средства работы с реестром. Тут же можно задействовать и исходники ReactOS - там есть ашник, описывающий BCD-хранилище, и при просмотре по диагонали вроде значения ключей совпадают с виндовыми. И в MSDN имеется описание некоторых структур этого файла. Так что задача написания редактора BCD для линукс представляется мне вполне решаемой. При наличии такой утилиты и используя wimlib вполне реально создать альтернативный инсталлятор винды на основе live-носителя с Linux, с кастомизацией загрузчика, да и много ещё с чем. Если использовать в качестве Live-носителя winPE, то такой инсталлятор можно сделать уже сейчас - приведенная выше статья это примерный алгоритм его работы
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
scorpid |
|
Темы:
4
Сообщения:
294
Участник с: 14 апреля 2015
|
Спасибо за мануал !!! |