Меню Рубрики

Grub windows server 2012

Запуск Windows Server 2012R2 из VHDX файла с USB диска через UEFI

Я решил сделать дисковый массив на платформе Intel Atom D410PT. Это материнская плата с пассивным охлаждением процессора, два слота памяти (максимум 4Gb), один слот PCI (который я использовал для контроллера SATA SiliconImage 3512 — 2×1.5Gb/s), 2 SATA (3.0Gb/s) разъема, LAN 100mb/s, и многочисленными USB 2.0 портами (в том числе и на самой материнской плате).
Сама плата поместилась легко в корпус NaviPower PIX-1001 230W. Полное описание моих действий с железом я разместил на своем сайте.

Соответственно, т.к. было решено использовать 4 диска для создания RAID5 массива, то логично вырисовалось решение вынести операционную систему на внешний USB носитель (в моем случае USB HDD Seagate Freeagent GoFlex). Так как установка и настройка системы «с нуля» является зачастую долгим и кропотливым занятием, то я решил что система будет лежать на внешнем диске в контейнере VHDX, а так как материнка поддерживает UEFI, то соответственно и загрузка должна идти используя UEFI. Основная проблема была в том, что в интернете нет понятной инструкции, как это сделать. Вся информация очень разрознена, и описываются только части решения этой задачи.

Я решил сделать так: вначале установить систему как обычно на SATA диск, а затем перенести ее в контейнер VHDX и затем на внешний носитель USB HDD.
Установку системы пропущу, т.к. это банальная операция, не требующая особых знаний (единственное, что если захочется установить систему на GPT диск, то перед установкой надо будет поиграться с diskpart).
Важное дополнение: перед переносом системы на внешний диск, надо обязательно отключить файл подкачки и систему гибернации!
Соответственно устанавливаем обновления системы, программы, делаем настройки.
Далее требуется перенести систему в VHDX контейнер. Для этого была скачана программа Disk2VHD 2.01. Интерфейс ее примитивен. Нужно только выбрать диск для переноса, файл VHDX и запустить процесс.

После этого на рабочей системе (можно на Windows 7 x64, но тогда будут проблемы с работой с VHDX. Лучше брать Windows Server 2012 или Windows 8 x64), надо подготовить USB диск к загрузке. В общих словах надо очистить диск от информации, создать 2 раздела, один из которых будет EFI (fat32, 300Mb, 4kb), а второй будет основной (NTFS, 1Tb, 64kb) для размещения нашего VHDX контейнера.
Подключаем диск к компьютеру, запускаем diskpart.exe.
Смотрим список дисков:

Выбираем диск, с которым будем работать. Обычно это делается по размеру.
Внимание! если ошибетесь, то можете полностью стереть систему и данные с компьютера!

Далее надо очистить диск от всей информации:

Далее конвертируем диск в GPT диск:

Далее создаем первый раздел, где будет храниться EFI загрузчик. Мы его будем делать размером в 300мб, и размером страйпа 4kb (обычно надо тестировать, какой размер страйпа будет быстрее работать, но я делаю страйпы максимально большие, т.к. размеры файлов в наше время обычно больше 4 или даже 64 кбайт.):

Теперь его надо отформатировать в формате FAT32 (только такой формат поддерживает технология UEFI):

Теперь надо присвоить этому разделу букву диска, чтобы работать с ним (в нашем случае это будет буква Y):

Теперь надо разметить оставшуюся часть диска, где будет лежать файл rayserv.vhdx. Для начала создадим раздел:

Теперь отформатируем его в NTFS с размером страйпа в 64kb:

Теперь присвоим разделу букву Z:

Теперь можно закрывать diskpart.exe:

Теперь можно копировать rayserv.vhdx на диск Z.
Дальше надо произвести некоторые подготовительные действия. Надо подключить виртуальный диск к системе.

Так как я работаю в Windows 7 x64, то соответственно моя система не поддерживает работу с файлами VHDX. Поэтому я заранее сделал не один файл-образ системы в VHDX, а два одинаковых образа системы, только один в формат VHD, а другой — VHDX. В текущий момент файл VHD лежит на диске D:, а файл VHDX уже лежит на USB диске с буквой Z:. Диск подключаем под буквой H:.

Теперь надо сделать EFI раздел загрузочным.
Скачиваем файл bootsect.exe на диск D: (файл можно найти с помощью утилиты Get Waik Tools, или на моей странице). Запускаем с параметрами:

Для того, чтобы скопировать загрузочные файлы на раздел EFI, заходим в папку H:\Windows\System32 и запускаем команду:

Теперь надо создать указать системе, что грузиться надо с VHDX файла. Для этого из папки H:\Windows\System32 запускаем:

Ключ /store указывает путь, с каким файлом BCD нам надо работать.
Полученный код <64d49e0f-ba36-11e3-8de2-1c6f653f47df>запоминаем, или копируем с экрана.
Этой командой мы скопировали запись для загрузки по-умолчанию, и назвали ее «vhd boot (locate)».
Теперь присвоим этому номеру номер по-умолчанию:

Теперь надо системе для этой записи указать, что грузиться надо с определенного диска и определенного файла.

H:\Windows\System32>bcdedit /store Y:\EFI\Microsoft\Boot\BCD /set osdevice vhd=[locate]\rayserv.vhdx
Операция успешно завершена.

Кстати, параметр [locate] очень полезен. Он говорит операционной системе, что при загрузке файл надо искать на всех дисках по-порядку.

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

И напоследок надо отключить автозапуск консоли восстановления в случае проблем:

Отключаем виртуальный диск от системы через панель управления дисками.

Практически готово. Теперь на конечной системе надо отключить все диски, кроме нашего, и включить UEFI загрузку в BIOS для USB носителей. Также возможно надо увеличить таймаут поиска USB устройств, т.к. с холодного запуска система может не увидеть внешний жесткий диск.
После этого загружаемся с USB диска.

При первой загрузке сервер у меня не запустился. Пришлось нажать F8 и выбрать безопасную загрузку. Тут сервер заработал, и после перезагрузки все стало работать как надо. Осталось только убрать таймаут в меню загрузки и все будет готово. Это можно на запущенной системе сделать через утилиту msconfig.

Источник

Messy dual boot with Windows Server 2012 R2

OK. This seemed like simple problem to solve first but I couldn’t find a solution.

A Dell PE machine had Windows Server 2012 first and I installed latest Ubuntu LTS on the machine with dual boot. But Grub menu automatically did not pick up the Windows Server OS but another windows 10 on one of hard drives it had. How can I make grub menu display the Windows server 2012?

As a side problem you don’t have to answer, I cannot see mouse pointer for some reason. Looking at UI interaction from mouse move, I think it’s there but the cursor is invisible. This additional mess makes the issue above really difficult to resolve.

1 Answer 1

Eventually, I decided Ubuntu installation was wrong although I followed the same instruction used for other machines. Maybe Ubuntu is not for server hardware? I am not sure. Anyway in the end, I removed Ubuntu partitions after deleting Grub residue in bootloader by following:

  1. boot from DVD of Windows Server 2012 R2 -> Repair System -> Command Prompt
  2. At command prompt: diskpart -> list vol -> (find a bootloader volume with FAT partition) -> sel vol X (X: the volume number) -> assign letter=Z: -> exit
  3. At command prompt: Z: -> bootrec.exe /fixmbr -> bootrec.exe /fixboot -> bootrec.exe /rebuildbcd -> It will ask which OS to include among detected OS -> I selected All -> close command prompt window -> Reboot the machine
  4. You should be able to see OS boot selection menu.

Hope it helps others with similar problems.

Not the answer you’re looking for? Browse other questions tagged dual-boot grub2 windows mouse or ask your own question.

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2020.10.19.37839

Источник

Расширяем функционал WDS: добавление возможности загрузки в UEFI

В данной статье, описаны шаги, которые необходимо выполнить для добавления к вашему WDS, возможности загрузки в режиме UEFI.

Т.е. инструкция в данной статье, предполагает, что у вас уже имеется, примерно следующая конфигурация:

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

Предисловие

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

И всё было хорошо, добавлялись новые образы для загрузки, образ winPE обрастал новыми фичами и всё работало.

Но, уже далеко не все устройства поддерживают режим загрузки BIOS/Legacy, либо если поддерживают, то его включение может находится в очень неочевидном месте.

Да и установка windows в legacy режиме, когда есть возможность установки в UEFI — не круто.

В итоге решил добавить возможность загрузки в UEFI, и отправился в гугл.

Но структурированной информации, как получить рабочий WDS + UEFI, я так и не нашёл.
Собственно, поэтому я и решил написать эту статью.

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

Если вы добавляете загрузочный файл к WDS и при попытке загрузится на устройстве
в UEFI вы видите следующий текст:
The selected boot device failed. Press to Continue.
Или Boot Device Not Found
Но загрузка в legacy у вас работает.
Тогда один из возможных вариантов — отсутствие файла wdsmgfw.efi,
по следующему пути: %WDSpath%\Boot\x64\wdsmgfw.efi

Взять его можно тут: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
Либо, если у вас отсутствует по какой-то причине этот файл, я его выложил на google.
За это решение, спасибо ребятам с реддита.

С этой проблемой я убил больше всего времени, т.к. я думал, что проблема где-то в конфигурации WDS или DHCP.

Настраивал политики, путём добавления Vendor Classes(Классы поставщиков) для различных архитектур, и настройкой опций DHCP 060, 066, 067. Инструкция по настройке политик DHCP.

PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64

Так же, пробовал различные варианты загрузочных файлов .efi

Так же пытался найти проблему в Журнале событий.
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Но, как я уже говорил выше, проблема крылась в файле wdsmgfw.efi.
Либо я его сам случайно удалил, либо он не скопировался при установке
и настройке WDS.

Инструкция

Этап 1 — Проверка работоспособности WDS

Возьмите любое устройство или виртуальную машину с поддержкой загрузки в режиме UEFI по сети и попробуйте загрузится.

У вас должна быть следующая картина:

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

Этап 2 — Сборка загрузочного файла iPXE

Запускаем заранее подготовленную Ubuntu, открываем терминал и вставляем эту строку:

Тут хотелось бы сделать небольшое замечание, о том, что возможно вам в Ubuntu придётся добавить пакеты, необходимые для компиляции C и C++.
Просто у меня они уже были установлены.

Скачалось? — Отлично!
Теперь нужно сделать конфигурационный файл для сборки.
В терминале, пишем:

И вставляем в этот файл, следующий код, после чего сохраняем:

Идём опять в терминал и запускаем компиляцию:

Если всё в порядке, то вы должны получить следующий вывод в терминале:

И файл ipxe.efi, по пути: ipxe/src/bin-x86_64-efi/ipxe.efi
Если у вас по какой-то причине не получилось скомпилировать самостоятельно,
я приложил свой файл.
Он скомпилирован для загрузки с http://192.168.0.100/install.ipxe

На этом с Ubuntu всё.

Этап 3 — Добавление ipxe.efi к WDS

Берём файл, который мы получили во втором этапе и копируем по пути:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
После переименовываем его в BOOTX64.EFI.
Это не обязательно, так просто удобней.

Потом запускаем cmd от имени администратора, и пишем следующие команды:

Этим мы установим полученный файл для загрузки через WDS.

Я так же скопировал файл ipxe.efi, переименовал его в BOOTIA32.EFI и сконфигурировал загрузку для него, на всякий случай. architecture:x86uefi
Но по большому счёту в этом нет смысла, т.к. файл Bootmgfw.efi не поддерживает x86

Проверим, что получилось.

Отлично, WDS передаёт для загрузки наш файл и он в свою очередь ищет конфигурацию по пути: http://192.168.0.100/install.ipxe

Этап 4 — Конфигурация меню

Идём в корневую папку вашего сайта.
По умолчанию это: C:\inetpub\wwwroot

Создаём текстовый файл install.ipxe.

И конфигурируем его в соответствии с документацией и вашими нуждами.
Так же имеется русскоязычное описание команд.
Я пользовался этой инструкцией при конфигурации своего WDS.

Про конфигурацию для загрузки winPE можно прочитать здесь.

Этап 5 — MIME types

После создания меню и добавления всех необходимых файлов в корневую папку IIS,
необходимо дать к ним доступ.

Т.к. даже если вы попробуете из браузера скачать файл, по его адресу то получите ошибку: HTTP 404.3 — Not Found .

Для этого необходимо в панели управления IIS добавить типы MIME, в соответствии
с расширениями файлов которые у вас будут загружаться через http.

Я не искал какой тип MIME подходит для этих целей лучше, и задал application/octet-stream , после чего всё заработало.

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

Заключение

В конечном итоге, у нас получается возможность загрузки по локальной сети через UEFI.

Если мы всё сделали правильно, то будет примерно такое меню выбора загрузки:

Если у вас подготовлены основные инструменты, и вы не будете заморачиваться с конфигурацией, то на реализацию данной возможности уходит примерно 10-20 минут.
У меня же ушло 2 рабочих дня, т.к. пришлось много гуглить.

Спасибо за внимание и огромное спасибо тем людям чьи статьи мне помогли!
На Хабре это: Ingtar и Deeptown.

Ой, у вас баннер убежал!

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

7 очевидных правил безопасного системного администрирования физических серверов

5 основных анти-паттернов системного администрирования

Системное администрирование. Начало

Заказы

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 11

:start
set url http://192.168.3.100/tftpboot/
menu Please choose an operating system to install

item —gap Debian
item debian-net Debian net install

item sys SYSTEM-RESCUE-CD 5.1.2 (www.system-rescue-cd.org)
item memtest memtest

item —gap Windows
item win Win10 Installation Env
item veeam Veeam
item win2012 Win 2012
item dart10x86 DaRT win10 x86
item dart10x64 DaRT win10 x64
item dart8x86 DaRT win8 x86
item dart8x64 DaRT win8 x64
item dart7x86 DaRT win7 x86
item dart7x64 DaRT win7 x64
item AdminPE32 AdminPE32
item AdminPE64 AdminPE64

item —gap ipxe shell
item shell Drop to iPXE shell
item exit Exit to BIOS

choose —default exit —timeout 5000 target && goto $

:failed
echo Booting failed, dropping to shell
goto shell

:shell
echo Type ‘exit’ to get the back to the menu
shell
set menu-timeout 0
set submenu-timeout 0
goto start

:memtest
set iso memtest86-7.5.iso
sanboot —no-describe $livecd/$
# chain memdisk iso raw
# boot || read void

:win
kernel wimboot
initrd winpe/winpeshl.ini winpeshl.ini
initrd winpe/net.bat net.bat
initrd winpe/bcd BCD
initrd winpe/boot.sdi boot.sdi
initrd $winpe/boot.wim boot.wim
boot

:veeam
kernel wimboot
initrd winpe/bcd BCD
initrd winpe/boot.sdi boot.sdi
initrd $winpe/veeam/boot.wim boot.wim
boot

:win2012
kernel wimboot
initrd winpe/bcd BCD
initrd winpe/boot.sdi boot.sdi
initrd $winpe/win2012/boot.wim boot.wim
boot

:winmem
kernel wimboot
initrd winpe/dart/bootmgr bootmgr
initrd winpe/dart/BCD BCD
initrd winpe/dart/boot.sdi boot.sdi
initrd winpe/dart/memtest.exe memtest.exe
initrd $winpe/dart/bootx64.wim bootx64.wim
boot

:dart10x86
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart10x86/boot.wim boot.wim
boot

:dart10x64
kernel wimboot
initrd winpe/bcd BCD
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart10x64/boot.wim boot.wim
boot

:dart8x86
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart8x86/boot.wim boot.wim
boot

:dart8x64
kernel wimboot
initrd winpe/bcd BCD
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart8x64/boot.wim boot.wim
boot

:dart7x86
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart7x86/boot.wim boot.wim
boot

:dart7x64
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/dart7x64/boot.wim boot.wim
boot

:AdminPE64
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/AdminPE64/boot.wim boot.wim
boot

:AdminPE32
kernel wimboot
initrd winpe/bootmgr bootmgr
initrd winpe/bcd bcd
initrd winpe/boot.sdi boot.sdi
initrd $winpe/AdminPE32/boot.wim boot.wim
boot
———
:sys
kernel rescuecd/rescue64 scandelay=4 netboot=nfs://192.168.3.100:/var/lib/tftpboot/rescuecd/
initrd rescuecd/initram.igz
boot

:debian-net
kernel http://mirror.yandex.ru/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux —
initrd http://mirror.yandex.ru/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
boot
#|| goto failed

:menu
menu Network boot options for $
item —key a default Try to boot (a)ll network adapters in turn
item
item —gap — — Detected network adapters —
set i:int8 0
:loop
ifopen net$ && item —key $ net$ net($): $ — $ $ $.0.2>:$.2.2> $ ; ifclose
inc i
iseq $ 10 || goto loop
item
item —gap — — Alternatives —
item —key c config Open (c)onfiguration
item —key r reboot (R)eboot computer
item —key s shell Drop to iPXE (s)hell
item —key x exit E(x)it and continue BIOS boot order
choose —timeout $ selected && goto select || goto default
goto menu

:select
isset $<$/mac> && goto nic || goto label

:nic
autoboot $ && goto exit ||
echo Booting ‘$‘ failed, exiting iPXE.
goto exit

:label
goto $ ||
echo The label ‘$‘ could not be found, returning to menu.
sleep 2
goto restart

:default
autoboot && goto exit ||
echo Booting failed, exiting iPXE.
goto exit

:config
config
goto restart

:shell
shell
goto restart

:restart
set timeout 0
goto menu

:exit
echo Continuing BIOS boot order.
sleep 1
exit

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Grub windows recovery environment
  • Grub windows invalid signature
  • Grub restore after windows install
  • Grub rescue установка windows
  • Grub rescue windows что делать