WDS 機能の拡張: UEFI ブート機能の追加

みなさん、こんにちは!

この記事では、WDS に UEFI ブート機能を追加するために実行する必要がある手順について説明します。

それらの。 この記事の手順では、次の構成がすでにあることを前提としています。

1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu

また、適切な結果が得られなかったアクションについても説明します。
検索を容易にし、時間を節約するために説明しました。

序文

職場でたくさんのグッズを使って WDS を作りました。 常にたくさんのフラッシュドライブを持ち歩き、それらを上書きすることにうんざりしています。

ちなみに、次の記事が役に立ちました。
WDS の多用途性の追加
System Center Configuration Manager を使用した PXE ブート メニュー


こんな感じです

WDS 機能の拡張: UEFI ブート機能の追加

そしてすべてがうまくいき、ロード用に新しいイメージが追加され、winPE イメージは新機能で大きくなりすぎて、すべてが機能しました。

ただし、すべてのデバイスが BIOS/レガシー ブート モードをサポートしているわけではありません。また、サポートしているとしても、その機能が非常に目立たない場所に含まれている可能性があります。

はい、UEFI でインストールできる場合でも、レガシー モードで Windows をインストールするのはクールではありません。

その結果、UEFI で起動する機能を追加することに決め、Google に行きました。

しかし、動作する WDS + UEFI を取得する方法に関する構造化された情報は見つかりませんでした。
実は、それがこの記事を書こうと思った理由です。

始める前に、最も時間がかかった問題について説明します。

UEFI を WDS に追加すると、次のような、あまり明白ではない状況が発生する可能性があります。

ブート ファイルを WDS に追加し、デバイスでブートしようとした場合
UEFI では、次のテキストが表示されます。
The selected boot device failed. Press <Enter> to Continue.
または Boot Device Not Found
ただし、レガシーでの読み込みは機能します。
その場合、考えられるオプションの XNUMX つは、ファイルが存在しないことです。 wdsmgfw.efi,
次のパスに沿って: %WDSpath%Bootx64wdsmgfw.efi

ここから入手できます: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
または、何らかの理由でこのファイルが見つからない場合は、次の場所に投稿しました。 グーグル.
この解決策については、皆さんに感謝します レディット.

この問題で一番時間を費やしたのは私だからです。 問題は WDS または DHCP 構成のどこかにあるのではないかと思いました。

さまざまなアーキテクチャのベンダー クラスを追加し、DHCP オプション 060、066、067 を設定してポリシーを構成しました。 命令 DHCP ポリシーを構成します。

DHCP を構成するための ASCII のアーキテクチャ

PXEClient:Arch:00000 - BIOS/レガシー
PXEClient:Arch:00006 - UEFI x86
PXEClient:Arch:00007 - UEFI x64

また、ブートファイルのさまざまなオプションを試しました。 .efi

  • syslinux
  • グラブ2

イベント ログでも問題を見つけようとしました。
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics

しかし、上で述べたように、問題はファイルにありました wdsmgfw.efi.
自分で誤って削除したか、インストール中にコピーされなかったかのどちらかです
そしてWDSの設定を行います。

さあ、始めましょう!

命令

ステージ 1 - WDS が動作していることを確認する

ネットワーク経由で UEFI モードでの起動をサポートするデバイスまたは仮想マシンを取得し、起動を試みます。

次のような画像が表示されるはずです。

WDS 機能の拡張: UEFI ブート機能の追加

そうであれば、続行できます。
そうでない場合は、序文で私が書いたことを参照してください。

ステージ 2 - iPXE ブート ファイルの構築

事前に準備された Ubuntu を起動し、ターミナルを開いて次の行を貼り付けます。

git clone https://git.ipxe.org/ipxe.git ipxe

WDS 機能の拡張: UEFI ブート機能の追加

ここで、C および C ++ のコンパイルに必要なパッケージを Ubuntu に追加する必要がある場合があることについて少し述べておきたいと思います。
インストールしてあるだけです。

ダウンロードしましたか? - 素晴らしい!
次に、アセンブリの構成ファイルを作成する必要があります。
ターミナルで次のように書きます。

cd ipxe/src
gedit chain.ipxe

そして、次のコードをこのファイルに貼り付けて保存します。

#!ipxe

dhcp
chain http://%IP-address-your-IIS-server%/install.ipxe

ターミナルに戻ってコンパイルを開始します。

make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe

WDS 機能の拡張: UEFI ブート機能の追加

すべてが正常であれば、ターミナルに次の出力が表示されるはずです。

WDS 機能の拡張: UEFI ブート機能の追加

そしてファイル ipxe.efi、途中で: ipxe/src/bin-x86_64-efi/ipxe.efi
何らかの理由で自分でコンパイルできない場合は、
私のものを添付しました файл.
から起動するようにコンパイルされています http://192.168.0.100/install.ipxe

Ubuntu については以上です。

ステップ 3 - ipxe.efi を WDS に追加する

第 XNUMX 段階で受け取ったファイルを取得し、途中でコピーします。
%WDSpath%Bootx64%your-boot-folder%EFIBOOT
名前を BOOTX64.EFI に変更した後。
必須ではありません。あると便利なだけです。

それから出発します CMD 管理者に代わって、次のコマンドを作成します。

wdsutil /set-server /bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi
и
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi

これにより、結果のファイルが WDS 経由でダウンロードされるように設定されます。

構成を確認してみましょう。

wdsutil /get-server /Show:Config

WDS 機能の拡張: UEFI ブート機能の追加

念のため、ipxe.efi ファイルもコピーし、名前を BOOTIA32.EFI に変更し、ブートを設定しました。 architecture:x86uefi
しかし、概して、これには意味がありません。 Bootmgfw.efi ファイルは x86 をサポートしていません

何が起こったのか確認してみましょう。
WDS 機能の拡張: UEFI ブート機能の追加
すばらしいですね。WDS はダウンロード用にファイルを送信し、パスに沿って構成を検索します。 http://192.168.0.100/install.ipxe

ステップ 4 - メニュー構成

サイトのルート フォルダーに移動します。
デフォルトは次のとおりです。 C:inetpubwwwroot

テキストファイルを作成する インストール.ipxe.

そしてそれに従って設定します ドキュメンテーション そしてあなたのニーズ。
ロシア語もあります 説明 コマンド。
楽しかった この WDS を構成するときの手順。

install.ipxe の設定例

#!ipxe

:start
menu Please choose an operating system to start/install
item --gap Start Win PE
item WinPE-x64 WinPE x64
item --gap ipxe shell
item shell       Drop to iPXE shell

choose target && goto ${target}

: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

:WinPE-x64
kernel http://192.168.0.100/wimboot
initrd http://192.168.0.100/peSE/Boot/bcd
initrd http://192.168.0.100/peSE/Boot/boot.sdi
initrd http://192.168.0.100/peSE/Boot/peSE64.wim
boot || goto failed

winPE をロードするための構成について読むことができます。 ここで.

ステージ 5 - MIME タイプ

メニューを作成し、必要なファイルをすべて IIS ルート フォルダーに追加した後、
彼らにアクセスを許可する必要があります。

なぜならブラウザからファイルをダウンロードしようとしても、そのアドレスでエラーが発生します。 HTTP 404.3 - Not Found.
WDS 機能の拡張: UEFI ブート機能の追加

これを行うには、に従って IIS コントロール パネルに MIME タイプを追加する必要があります。
http 経由でダウンロードするファイル拡張子が付いています。

この目的にどの MIME タイプが最適であるかを調べなかったので、質問しました。 application/octet-streamその後、すべてが機能しました。

拡張子のないファイルの場合は、ドットを使用します。

ここにそう:

WDS 機能の拡張: UEFI ブート機能の追加

まとめ

最終的には、UEFI を介してローカル ネットワーク経由で起動できるようになります。

すべてを正しく実行すると、次のようなブート選択メニューが表示されます。

WDS 機能の拡張: UEFI ブート機能の追加

基本的なツールを準備していて、設定に手間がかからない場合、この機能の実装には約 10 ~ 20 分かかります。
2営業日かかったからです。 たくさんグーグル検索する必要がありました。

導入成功!

ご清聴ありがとうございました。記事のおかげで私を助けてくれた方々に感謝します。
ハブレでは次のようになります。 インタル и ディープタウン.

出所: habr.com

コメントを追加します