LinuxをWDSで起動してみる (iPXE for Boot a Linux via Network on Windows Server)

#WindowsServerのWDSを使用し、LiveCD LinuxをPXEブートさせる
-------------------------------------------------
Windows Server 2019(2016でも可能)で、以下のサービスをインストール
・DHCP Server
・Web Server (IIS)
・Windows Deployment Services
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/9a108434-d68c-c41e-5f3a-e8cf8d205591.png)

undionly.kpxe と memdisk.bin ファイルを https://www.ipxe.org/download/ からダウンロードし、作成する。
menu.ipxeを作成(以下、例)
 initrd http://10.0.0.1/Images/CentOSlivecd.iso
 chain memdisk.bin iso raw

boot.ipxeを作成(以下、例) 
 chain --replace --autofree http://10.0.0.1/Images/menu.ipxe ||


WDSサービスを設定し起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/1f95dcf8-a44d-6b31-ad56-8be6452b50fd.png)

DHCPサービスで、新しいスコープを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/a9d4b7ac-9f27-b1e8-96c2-ea605b64644a.png)

スコープオプションで066 Boot Server Host Nameを追加、サーバーIPを入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/8415ff6c-9378-8b44-6730-821a07cf9489.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/c595c98c-fd61-c745-93ef-c33ad9e88f27.png)

ユーザークラスにiPXEを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/cdf1a32a-e8c0-993e-8514-2d27783a042b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/ebb3e0e8-82f5-19a0-6581-a3ad3b9a2c12.png)

新しいポリシー（iPXE Policy）を追加、User Class, Equals, iPXEおよび067で\Boot\x86\boot.ipxeを設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/0775e4ff-d771-2269-2c21-36839379e4a2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/aa4eb880-b75d-9b0e-6509-2a5b521ccc9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/c6f24b29-264f-f0e7-3b10-5d088bd3a3c5.png)

IISのVertial Directoryで、Default Web Siteで以下を追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/a37e04c5-cc70-0c86-4048-a759867a6587.png)

MIMEタイプでisoとipxeを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/e507e21b-3a4a-0dbd-6968-9a222299a637.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/aada0f79-9599-4ad5-e38a-6ce13f67d1f0.png)

以下のファイルを \RemoteInstall\Boot\x86 フォルダへコピー
・undionly.kpxe
・boot.ipxe

以下のファイルを、 \RemoteInstall\Boot\x86\Images フォルダへコピー
・menu.ipxe
・memdisk.bin
・起動したいLinuxイメージ.iso

WDS上のWDS serverのプロパティで、以下のように設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/52928e23-f119-9a4c-2c88-aef3bf262b19.png)

管理者権限のコマンドプロンプトで、以下を実行する
　wdsutil /set-server /bootprogram:Boot\x86\undionly.kpxe /Architecture:x86 
　wdsutil /set-server /bootprogram:Boot\x86\undionly.kpxe /Architecture:x64 
　wdsutil /set-server /N12bootprogram:Boot\x86\undionly.kpxe /Architecture:x86 
　wdsutil /set-server /N12bootprogram:Boot\x86\undionly.kpxe /Architecture:x64 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/564748/b049d532-e079-b224-7e1f-234c64d32d37.png)

That's all :D

-------
#OMAKE

menu.ipxeと同じフォルダにpngファイルを入れ、menu.ipxe内に
console --picture background.png
と指定しておくと、iso読込中に、画像表示できる
他には、iso複数指定したい場合は、
以下のようにmenu.ipxeを作成すればOK

set server 10.0.0.1
console --picture background.png

:start
menu === BOOT MENU ===
item --key a	Linux1	Linux_1st_image
item --key b	Linux2	Linux_2nd_image
choose --default Linux1 --timeout 10000 target && goto ${target}
goto ${selected} 

:cancel
echo canceled

:failed
echo FAILED...
goto shell

:back
set submenu-timeout 0
clear submenu-default
goto start

:Linux1	
initrd http://${server}/Images/Linux1.iso
chain memdisk.bin iso raw || goto failed
goto start

:Linux2
initrd http://${server}/Images/Linux2.iso 
chain memdisk.bin iso raw || goto failed
goto start


...That's all. ☆ Knowledge of zealous young🌙🐰