บทนำ
บทความนี้จะแสดงวิธีเพิ่ม Device Drivers ที่จำเป็นเข้าไปใน Windows Installation Image โดยตรง การรวม Device Drivers เข้าใน Offline Windows Image ใช้กันอย่างกว้างขวางเมื่อต้อง Deploy Workstations และ Servers จำนวนมากบน Hardware เดียวกัน แทนที่จะติดตั้ง Drivers เฉพาะ (รวมถึง AHCI/RAID/NVMe) บนแต่ละเครื่องด้วยตนเอง สามารถลดความซับซ้อนและเร่งกระบวนการ Deploy OS ได้โดยการรวม Drivers เข้า Driver Store ของ Windows Installation Image ใน ISO/WIM หรือ VHD/VHDX File ตอนติดตั้ง Image ประเภทนี้ Plug and Play Service (PnP) จะติดตั้ง Drivers ที่จำเป็นสำหรับ Hardware ที่ตรวจพบได้โดยอัตโนมัติ
คู่มือนี้เกี่ยวกับการรวม Device Drivers เข้า Windows Image ใช้ได้ทั้ง Desktop Editions ของ Windows 10, Windows 8.1 และ Windows Server 2016, 2012 R2
ใน Windows รุ่นใหม่ สามารถเพิ่ม Drivers เข้า Installation ISO Image ได้ 2 วิธี:
- ใช้ Utility DISM
- ใช้ PowerShell CLI
จริงๆ แล้วทั้งสองเทคนิคทำ Operation เดียวกันคือ เพิ่ม Additional Drivers เข้า Offline Windows Image วิธีไหนก็ดี ขึ้นอยู่กับความชอบของ Admin มาดูรายละเอียดทั้งสองวิธีด้วยตัวอย่างการรวม Drivers เข้า Windows 10 Installation Image
หมายเหตุ: ใน Windows Server 2008 R2 และ Windows 7 สามารถเพิ่ม Driver เข้า Windows Installation Image ด้วย Tool imagex (รวมใน WAIK) แต่ไม่รองรับใน Windows Server 2012 ขึ้นไป
วิธีที่ 1: Inject Driver ด้วย PowerShell
Download และวาง Device Drivers ที่จำเป็นทั้งหมดไว้ใน Directory เดียว (แต่ละ Driver สร้าง Folder แยก) โปรดทราบหลาย Vendor (รวมถึง Dell, HP) จัดเตรียม Drivers ในรูปแบบ Self-extracting EXE หรือ ZIP Archive ต้อง Extract ไปยัง Local Drive ให้ Directory Drivers มีไฟล์ inf, cat, sys
ก่อนเริ่ม สร้าง Directory Structure บน Local Drive:
- Folder Drivers – เก็บไฟล์ Driver ที่ Extract แล้วสำหรับ Windows 10 Edition (จะรวมเข้า Install Media) สามารถ Download/Extract เอง หรือ Export Third-party Drivers ทั้งหมดจาก Reference Windows 10 Computer ที่ติดตั้ง Drivers ครบแล้ว (ใช้ Export-WindowsDriver Cmdlet)
- Folder ISO – เก็บ ISO Image ของ Windows 10 ที่ Extract แล้ว ต้องการแค่ไฟล์ Install.wim จาก Sources Directory หาก ISO มีแค่
..\sources\install.esdให้ Convert ESD เป็น WIM ด้วย DISM:dism /export-image /SourceImageFile:"C:\WinWork\ISO\install.esd" /SourceIndex:4 /DestinationImageFile:C:\WinWork\ISO\install.wim /Compress:max /CheckIntegrity - Folder Mount – Directory ว่างสำหรับ Mount Windows Install WIM Image ภายหลัง
List Windows Editions ใน Install.wim ด้วย Get-WindowsImage เพื่อระบุ Edition ที่จะ Inject Drivers:
Get-WindowsImage -ImagePath C:\WinWork\ISO\install.wim
ตัวอย่าง WIM มี Windows 10 Pro Edition เดียว Index 1 (ImageIndex: 1)
Mount Image ของ Edition ที่เลือกใน Directory Mount:
Mount-WindowsImage -Path C:\WinWork\Mount\ -ImagePath C:\WinWork\ISO\install.wim -Index 1
หลัง Mount แล้ว เพิ่ม Drivers จาก Drivers Directory:
Add-WindowsDriver -Path C:\WinWork\Mount\ -Driver C:\WinWork\Drivers -Recurse
Add-WindowsDriver Cmdlet จะค้นหาแบบ Recursive (Parameter -Recurse) ไฟล์ *.inf ทั้งหมดใน Folder ที่ระบุ ตาม Description ใน inf file Cmdlet จะเพิ่ม Dependent INF, DLL, CAT, PNF ไฟล์ต่างๆ เข้า Driver Store ของ Windows Image
ใช้ Key –ForceUnsigned เพื่อเพิ่ม Unsigned Drivers เข้า Driver Store ได้ มิฉะนั้นต้อง Disable Digital Signature Enforcement หรือ Self-sign Driver เอง
Drivers ถูก Copy แล้ว Unmount Image พร้อมบันทึกการเปลี่ยนแปลง:
Dismount-WindowsImage -Path C:\WinWork\Mount\ –Save
ตัวอย่างข้างต้นเพิ่ม Drivers เข้า Install.wim (Windows Image ที่จะ Deploy ไป Local Disk) หากต้องการเพิ่ม Drivers เข้า Windows Boot Image (ที่บูทตอนติดตั้ง Windows) ต้องเพิ่ม Drivers เข้าไฟล์ Boot.wim ปกติต้องการแค่ Disk Controller Drivers และ Network Adapters
หมายเหตุ: Driver Store Folder (%WINDIR%\System32\DriverStore\FileRepository) อาจใหญ่ขึ้นเรื่อยๆ ต้องลบ Unused และ Old Driver Versions ออกจาก Driver Store เป็นระยะ
Convert Install.wim ที่มี Drivers Integrated ให้เป็น Install.esd ด้วย DISM Compress Option:
DISM /Export-Image /SourceImageFile:C:\WinWork\ISO\install.wim /SourceIndex:1 /DestinationImageFile:C:\WinWork\ISO\install.esd /Compress:recovery
สร้าง ISO File ด้วย Dism++ หรือคำสั่ง oscdimg และเขียนลง Disk หรือ USB:
oscdimg -n -m -bc:\ISO\boot\etfsboot.com C:\ISO C:\new_win10pro_image.iso
หมายเหตุ: ไม่มี Add-WindowsDriver Cmdlet ใน Windows 7 / 2008R2 ปรากฏครั้งแรกใน Windows 8 / Windows Server 2012 ขึ้นไป ดังนั้นเพื่อ Integrate Drivers เข้า Image ของ Win7/2008 R2 ใช้ DISM Tool (ดูตัวอย่างด้านล่าง หรือบทความ Adding the USB 3.0 Drivers In Windows 7 Installation)
วิธีที่ 2: เพิ่ม Drivers เข้า Offline Windows Server 2012 R2 Image ด้วย DISM
ตัวอย่างการ Integrate Drivers เข้า Install Image ของ Windows Server 2012 R2 หาก Build Image บน Windows 8.1 ต้อง Download และติดตั้ง Windows 8 ADK (https://www.microsoft.com/en-us/download/details.aspx?id=30652) เพื่อใช้ DISM ล่าสุด ติดตั้ง Component Deployment Tools
ใช้ Directory Structure เดียวกัน: Drivers, ISO, Mount สมมติใน install.wim สนใจ Windows Server 2012 R2 Datacenter Edition Index 3
Mount Install.wim:
dism /Mount-Wim /WimFile:c:\iso\sources\install.wim /Index:3 /MountDir:c:\mount
ค้นหาและ Integrate Drivers ใหม่เข้า Driver Store แบบ Recursive:
dism /image:c:\mount /Add-Driver "/driver:c:\drivers\" /recurse
บันทึกการเปลี่ยนแปลง WIM Image:
dism /unmount-wim /mountdir:d:\mount /commit
อาจต้อง Integrate Network Adapter และ Disk Controller Drivers เข้า Boot Image File boot.wim ด้วย
หากต้องการเพิ่ม Drivers ให้ทุก Windows Server Editions ใน WIM File ต้องทำซ้ำสำหรับทุก Index ที่คำสั่งคืนค่า:
dism /get-wiminfo /wimfile:d:\install.wim
นอกจาก Driver Integration ปกติแล้วต้อง Inject Security Updates เข้า Windows Image ที่จะติดตั้ง (How to add updates into the Windows installation image) เพื่อเพิ่ม Security ทันทีหลังติดตั้ง เหลือแค่เขียน Installation Image ลง DVD/USB หรือ Convert เป็น ISO Image