Hello!
บทความนี้อธิบายขั้นตอนที่คุณต้องปฏิบัติตามเพื่อเพิ่มความสามารถในการบูต UEFI ให้กับ WDS ของคุณ
เหล่านั้น. คำแนะนำในบทความนี้ถือว่าคุณมีการกำหนดค่าต่อไปนี้แล้ว:
1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu
นอกจากนี้ ต่อไปนี้เป็นการกระทำที่ไม่ได้ให้ผลลัพธ์ที่เหมาะสมแก่ฉัน
ฉันอธิบายไว้เพื่ออำนวยความสะดวกในการค้นหาและประหยัดเวลาของคุณ
คำปรารภ
ฉันสร้าง WDS ในที่ทำงานพร้อมกับสารพัดมากมาย tk เหนื่อยกับการวิ่งไปมาตลอดเวลากับแฟลชไดรฟ์จำนวนมากและเขียนทับมัน
บทความเหล่านี้ช่วยฉันได้:
และทุกอย่างเรียบร้อยดี มีการเพิ่มรูปภาพใหม่สำหรับการโหลด อิมเมจ winPE เต็มไปด้วยคุณสมบัติใหม่และทุกอย่างทำงานได้
แต่นอกเหนือจากอุปกรณ์ทั้งหมดที่รองรับโหมดการบู๊ต BIOS / Legacy หรือถ้าเป็นเช่นนั้นการรวมไว้ในตำแหน่งที่ไม่ชัดเจน
ใช่ และการติดตั้ง windows ในโหมดดั้งเดิมเมื่อสามารถติดตั้งใน UEFI ได้นั้นไม่เจ๋งเลย
ด้วยเหตุนี้ ฉันจึงตัดสินใจเพิ่มความสามารถในการบูตเข้าสู่ UEFI และไปที่ Google
แต่ฉันไม่พบข้อมูลที่มีโครงสร้างเกี่ยวกับวิธีรับ WDS + UEFI ที่ใช้งานได้
อันที่จริง นั่นเป็นเหตุผลที่ฉันตัดสินใจเขียนบทความนี้
ก่อนที่ฉันจะเริ่ม ฉันจะอธิบายปัญหาที่ใช้เวลามากที่สุด
เมื่อเพิ่ม UEFI ลงใน WDS อาจเกิดสถานการณ์ต่อไปนี้ซึ่งค่อนข้างไม่ชัดเจน:
หากคุณเพิ่มไฟล์สำหรับบูตลงใน WDS และเมื่อคุณพยายามบูตบนอุปกรณ์
ใน UEFI คุณจะเห็นข้อความต่อไปนี้:
The selected boot device failed. Press <Enter> to Continue.
หรือ Boot Device Not Found
แต่การโหลดในมรดกจะได้ผลสำหรับคุณ
หนึ่งในตัวเลือกที่เป็นไปได้คือการไม่มีไฟล์ wdsmgfw.efi,
ตามเส้นทางต่อไปนี้ %WDSpath%Bootx64wdsmgfw.efi
คุณสามารถทำได้ที่นี่: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
หรือถ้าด้วยเหตุผลบางอย่างไฟล์นี้หายไปสำหรับคุณ ฉันได้โพสต์ไว้
สำหรับวิธีแก้ปัญหานี้ ขอบคุณพวกคุณจาก
ด้วยปัญหานี้ ฉันฆ่าเวลามากที่สุดเพราะ ฉันคิดว่าปัญหาอยู่ที่การกำหนดค่า WDS หรือ DHCP
กำหนดค่านโยบายโดยการเพิ่ม Vendor Classes สำหรับสถาปัตยกรรมต่างๆ และตั้งค่าตัวเลือก DHCP 060, 066, 067
สถาปัตยกรรมใน ASCII สำหรับกำหนดค่า DHCP
PXEClient:Arch:00000 - BIOS/Legacy.dll
PXEClient:ซุ้ม:00006 - UEFI x86
PXEClient:ซุ้ม:00007 - UEFI x64
ฉันยังลองใช้ตัวเลือกต่าง ๆ สำหรับไฟล์สำหรับบู๊ต .efi
- syslinux
- ด้วง 2
ฉันพยายามค้นหาปัญหาในบันทึกเหตุการณ์ด้วย
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics
แต่อย่างที่ฉันพูดไปข้างต้น ปัญหาอยู่ในไฟล์ wdsmgfw.efi.
ฉันเผลอลบเองหรือไม่ได้คัดลอกมาระหว่างการติดตั้ง
และการกำหนดค่า WDS
มาเริ่มกันเลย!
การแนะนำ
ขั้นตอนที่ 1 - ตรวจสอบว่า WDS กำลังทำงานอยู่
ใช้อุปกรณ์หรือเครื่องเสมือนที่รองรับการบูทในโหมด UEFI ผ่านเครือข่ายแล้วลองบูท
คุณควรมีภาพต่อไปนี้:
ถ้าเป็นเช่นนั้น เยี่ยมมาก คุณสามารถดำเนินการต่อได้
ถ้าไม่ใช่ ให้ดูที่ผมเขียนไว้ในคำนำ
ขั้นตอนที่ 2 - สร้างไฟล์สำหรับบูต iPXE
เราเปิดตัว Ubuntu ที่เตรียมไว้ล่วงหน้า เปิดเทอร์มินัลแล้ววางบรรทัดนี้:
git clone https://git.ipxe.org/ipxe.git ipxe
ที่นี่ฉันขอตั้งข้อสังเกตเล็กน้อยว่าคุณอาจต้องเพิ่มแพ็คเกจที่จำเป็นสำหรับการคอมไพล์ 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
หากทุกอย่างเรียบร้อย คุณควรได้รับผลลัพธ์ต่อไปนี้ในเทอร์มินัล:
และไฟล์ ipxe.efi, ระหว่างทาง: ipxe/src/bin-x86_64-efi/ipxe.efi
หากคุณไม่สามารถรวบรวมได้ด้วยเหตุผลบางประการ
ฉันได้แนบของฉัน
มันถูกรวบรวมเพื่อบูตจาก http://192.168.0.100/install.ipxe
นั่นคือทั้งหมดสำหรับ Ubuntu
ขั้นตอนที่ 3 - การเพิ่ม ipxe.efi ให้กับ WDS
เรานำไฟล์ที่เราได้รับในขั้นตอนที่สองและคัดลอกไปพร้อมกัน:
%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
ฉันยังคัดลอกไฟล์ ipxe.efi เปลี่ยนชื่อเป็น BOOTIA32.EFI และกำหนดค่าการบูตสำหรับมัน ในกรณีนี้ architecture:x86uefi
แต่โดยรวมแล้วสิ่งนี้ไม่สมเหตุสมผลเพราะ ไฟล์ Bootmgfw.efi ไม่รองรับ x86
ตรวจสอบสิ่งที่เกิดขึ้น
เยี่ยม WDS ส่งไฟล์ของเราเพื่อดาวน์โหลด และในที่สุดก็มองหาการกำหนดค่าตามเส้นทาง: http://192.168.0.100/install.ipxe
ขั้นตอนที่ 4 - การกำหนดค่าเมนู
ไปที่โฟลเดอร์รูทของไซต์ของคุณ
ค่าเริ่มต้นคือ: C:inetpubwwwroot
สร้างไฟล์ข้อความ ติดตั้ง ipxe.
และกำหนดค่าตาม
มีภาษารัสเซียด้วย
ฉันมีความสุข
ตัวอย่างการกำหนดค่า 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
.
ในการทำเช่นนี้ คุณต้องเพิ่มประเภท MIME ในแผงควบคุม IIS ตามนั้น
พร้อมนามสกุลไฟล์ที่คุณจะดาวน์โหลดผ่าน http.
ฉันไม่ได้มองหาประเภท MIME ที่ดีที่สุดสำหรับจุดประสงค์นี้ และถาม application/octet-stream
หลังจากนั้นทุกอย่างก็ทำงาน
สำหรับไฟล์ที่ไม่มีนามสกุล ให้ใช้จุด
เช่นนี้
ข้อสรุป
ในที่สุด เราได้รับความสามารถในการบูตผ่านเครือข่ายท้องถิ่นผ่าน UEFI
หากเราทำทุกอย่างถูกต้องจะมีเมนูการเลือกบูตดังนี้:
หากคุณได้เตรียมเครื่องมือพื้นฐานไว้แล้วและคุณไม่กังวลกับการกำหนดค่า จะใช้เวลาประมาณ 10-20 นาทีในการนำคุณลักษณะนี้ไปใช้
ฉันใช้เวลา 2 วันทำการเพราะ ฉันต้อง google มาก
ดำเนินการสำเร็จ!
ขอบคุณสำหรับความสนใจของคุณและขอบคุณมากสำหรับคนที่บทความช่วยฉัน!
ในHabréมันคือ:
ที่มา: will.com