UEFI環境下では、2021/08/19現在、iPXEにはMicrosoftがサインしたefiバイナリがないので、そのままではセキュアブートができません。そこでWindows PEをPXE経由でDebian 10/Buster サーバからセキュアーブートしてみました。
まず初めにWindows上でWinPEを日本語化させたものを作成します。今回はamd64のみを対象としてみました。まず、Windows ADKをダウンロードします。今回もWindows 10 バージョン 2004、Windows 10バージョン 20H2、Windows 10 バージョン 21H1 用のものをダウンロードし、インストールします。adk本体のインストールがすんだら、アドオンをダウンロードしインストールします。
続いて、スクリプトを使って amd64向けの日本語化したWinPEをセットアップします。以下、スクリプトです。C:\Tempを作成し、その中にcppe_ja.batという名前で作成し保存します。
今回は以上です。それでは。
まず初めにWindows上でWinPEを日本語化させたものを作成します。今回はamd64のみを対象としてみました。まず、Windows ADKをダウンロードします。今回もWindows 10 バージョン 2004、Windows 10バージョン 20H2、Windows 10 バージョン 21H1 用のものをダウンロードし、インストールします。adk本体のインストールがすんだら、アドオンをダウンロードしインストールします。
続いて、スクリプトを使って amd64向けの日本語化したWinPEをセットアップします。以下、スクリプトです。C:\Tempを作成し、その中にcppe_ja.batという名前で作成し保存します。
for %%d in (amd64) do call :Cppe %%d REM for %%d in (amd64, x86) do call :Cppe %%d goto End :Cppe set ADK_PATH=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit set ADK_PACK=%ADK_PATH%\Windows Preinstallation Environment\%1\WinPE_OCs set WS_DIR=C:\Temp\WinPE\%1 call copype %1 "%WS_DIR%" Dism /Mount-Image /Imagefile:"%WS_DIR%\media\sources\boot.wim" /Index:1 /Mountdir:"%WS_DIR%\mount" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\lp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-FontSupport-JA-JP.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-WMI.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-WMI_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-NetFx.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-NetFx_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-Scripting.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-Scripting_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-PowerShell.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-PowerShell_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-DismCmdlets.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-DismCmdlets_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-SecureBootCmdlets.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\WinPE-WDS-Tools.cab" Dism /Image:"%WS_DIR%\mount" /Add-Package /Packagepath:"%ADK_PACK%\ja-jp\WinPE-WDS-Tools_ja-jp.cab" Dism /Image:"%WS_DIR%\mount" /Enable-Feature /FeatureName:SMB1Protocol Dism /Image:"%WS_DIR%\mount" /Set-Allintl:ja-jp Dism /Image:"%WS_DIR%\mount" /Set-Inputlocale:0411:00000411 Dism /Image:"%WS_DIR%\mount" /Set-Layereddriver:6 Dism /Image:"%WS_DIR%\mount" /Set-Timezone:"Tokyo Standard Time" Dism /Unmount-Image /Mountdir:"%WS_DIR%\mount" /Commit goto :eof :Endバッチファイル(スクリプト)を作成したら保存します。続いて、Windows Kitというメニューのなかに、”展開およびイメージングツール環境”という項目があるので、これを、管理者権限で実行します。作成したバッチファイルを流すとC:\Temp\WinPE\amd64以下に、5分から10分程かかりますが、日本語化されたamd64向けのWinPEができるので、これをtftpサーバに展開します。Windows 10 21h1だと scp -r が使えるので、例えば以下のようにしてtftp serverにコピーしておきます。
# on power shell cd \Temp\WinPE scp -r amd64 yourid@MySrv:/tmp/WinPEコピーがすんだら、tftp server 上でtftp bootできるようにファイルを展開します。
# on server sudo su chown -R root /tmp/WinPE mv /tmp/WinPE /srv/tftp/WinPE cd /srv/tftp ln -sf WinPE/media/EFI . ln -sf WinPE/media/Boot . ln -sf WinPE/media/sources . ln -sf EFI/Microsoft/Boot/BCD '\BCD' ln -sf EFI/Microsoft/Boot/BCD '\Boot\BCD' ln -sf EFI/Microsoft/Boot/Fonts/segmono_boot.ttf '\EFI\Microsoft\Boot\Fonts\segmono_boot.ttf' ln -sf EFI/Microsoft/Boot/Fonts/segoe_slboot.ttf '\EFI\Microsoft\Boot\Fonts\segoe_slboot.ttf' ln -sf EFI/Microsoft/Boot/Fonts/wgl4_boot.ttf '\EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf' ln -sf EFI/Microsoft/Boot/Fonts/segmono_boot.ttf '\EFI\Microsoft\Boot\fonts\segmono_boot.ttf' ln -sf EFI/Microsoft/Boot/Fonts/segoe_slboot.ttf '\EFI\Microsoft\Boot\fonts\segoe_slboot.ttf' ln -sf EFI/Microsoft/Boot/Fonts/wgl4_boot.ttf '\EFI\Microsoft\Boot\fonts\wgl4_boot.ttf' ln -sf EFI/Boot/bootx64.efi '\bootx64.efi' ln -sf EFI/Boot/bootx64.efi bootx64.efi ln -sf EFI/Boot/en-us/bootx64.efi.mui '\en-US\bootx64.efi.MUI' ln -sf Boot/boot.sdi '\Boot\boot.sdi' ln -sf Boot/boot.sdi '\boot\boot.sdi' ln -sf sources/boot.wim '\sources\boot.wim'ファイルの展開は以上です。つづいて要所だけですが、dhcpサーバの設定です。
host i44 { hardware ethernet AA:BB:CC:DD:EE:FF; fixed-address 192.168.2.44; next-server 192.168.2.104; # tftp server filename "bootx64.efi"; option iscsi-initiator-iqn "iqn.1868-01.com.mydomain:i44"; option root-path "iscsi:192.168.2.104:::1:iqn.1868-01.com.mydomain:i44.disk01"; }optionはiSCSI rootのための設定ですので、不要であれば削除してください。dhcp server の設定がすんだら、systemctl restart isc-dhcp-server としておいてください。あとは、Windows機をpxe boot すれば数分でWinPEが起動します。ウィンドウズをインストールするため、インストールディスクをネットワークから接続しsetupしてもよいですし、USBディスクからsetupしてももちろんかまいません。setupの後、何らかの処理を行いたい場合は、setup /norebootとすればセットアップ終了後も再起動しません。
今回は以上です。それでは。
コメント
コメントを投稿