이 글에서는 Windows 설치 이미지에 필요한 장치 드라이버를 직접 통합하는 방법을 소개합니다. 동일한 하드웨어 환경의 워크스테이션과 서버를 대량으로 배포해야 하는 경우, 오프라인 Windows 이미지에 드라이버를 미리 통합하는 작업이 매우 유용합니다. 각 장치에 AHCI/RAID/NVMe 등의 드라이버를 일일이 수동으로 설치하는 대신, ISO/WIM 또는 VHD/VHDX 파일에 포함된 Windows 설치 이미지의 드라이버 저장소(Driver Store)에 드라이버를 직접 추가하면 OS 배포 과정을 크게 단순화하고 속도를 높일 수 있습니다. 이렇게 만든 이미지로 Windows를 설치하면 PnP(Plug and Play) 서비스가 감지된 하드웨어에 맞는 드라이버를 자동으로 설치해 줍니다.
이 가이드는 Windows 10, Windows 8.1 데스크톱 버전과 Windows Server 2016, 2012 R2 모두에서 사용할 수 있습니다.
최신 Windows 버전에서는 설치 ISO 이미지에 드라이버를 추가하는 두 가지 방법이 있습니다.
- DISM 유틸리티 사용
- PowerShell CLI 사용
두 방식 모두 오프라인 Windows 이미지에 드라이버를 추가한다는 점에서 본질적으로 동일한 작업을 수행하며, 어떤 것을 사용할지는 관리자의 선호에 따라 선택하면 됩니다. 아래에서는 Windows 10 설치 이미지에 드라이버를 통합하는 예시를 통해 두 가지 방법을 자세히 살펴보겠습니다.
참고: Windows Server 2008 R2와 Windows 7에서는 WAIK에 포함된 imagex 명령줄 도구로 드라이버를 추가할 수 있었지만, Windows Server 2012 이상에서는 지원되지 않습니다.
PowerShell로 Windows 10 설치 이미지에 드라이버 삽입하기
먼저 필요한 모든 장치 드라이버를 다운로드하여 하나의 디렉터리에 정리합니다(각 드라이버는 별도의 폴더에 보관). 많은 제조사(Dell, HP 등)는 드라이버를 자체 압축 해제형 exe 파일이나 zip 아카이브 형태로 배포하므로, 로컬 드라이브에 압축을 풀어 드라이버 폴더 안에 inf, cat, sys 파일이 포함되도록 해야 합니다.
작업을 시작하기 전에 로컬 드라이브에 다음과 같은 디렉터리 구조를 만듭니다.
- Drivers 폴더 – Windows 10 에디션에 맞는 압축 해제된 드라이버 파일이 들어 있는 폴더입니다. 필요한 드라이버를 수동으로 다운로드·압축 해제할 수도 있고, 드라이버가 모두 설치되어 있는 기준(reference) Windows 10 PC에서 Export-WindowsDriver cmdlet으로 서드파티 드라이버를 한 번에 내보낼 수도 있습니다.
- ISO 폴더 – Windows 10 ISO 이미지를 압축 해제한 폴더입니다. 이 중 Sources 디렉터리의 Install.wim 파일만 있으면 됩니다. 만약 ISO에 ..\sources\install.esd 파일만 있다면 DISM 도구로 ESD를 WIM 형식으로 변환할 수 있습니다.
dism /export-image /SourceImageFile:"C:\WinWork\ISO\install.esd" /SourceIndex:4 /DestinationImageFile:C:\WinWork\ISO\install.wim /Compress:max /CheckIntegrity - Mount 폴더 – 이후 Windows 설치 WIM 이미지를 마운트할 빈 디렉터리입니다.
Get-WindowsImage PowerShell cmdlet을 사용하여 Install.wim 파일에 포함된 Windows 에디션 목록을 확인합니다. 이는 드라이버를 통합할 Windows 에디션을 지정하기 위해 필요합니다.
Get-WindowsImage -ImagePath C:\WinWork\ISO\install.wim
이 예제에서 WIM 파일에는 인덱스 1(ImageIndex: 1)의 Windows 10 Pro 에디션만 포함되어 있습니다.
다음으로 선택한 Windows 에디션의 이미지를 Mount 디렉터리에 마운트합니다. 마운트할 이미지의 인덱스는 Index 매개변수로 지정합니다.
Mount-WindowsImage -Path C:\WinWork\Mount\ -ImagePath C:\WinWork\ISO\install.wim -Index 1
이미지가 마운트되면 다음 명령으로 Drivers 디렉터리의 드라이버를 이미지에 추가할 수 있습니다.
Add-WindowsDriver -Path C:\WinWork\Mount\ -Driver C:\WinWork\Drivers -Recurse
Add-WindowsDriver cmdlet은 -Recurse 매개변수를 통해 지정된 폴더를 재귀적으로 검색하여 드라이버 정보가 담긴 모든 *.inf 파일을 찾습니다. inf 파일의 내용을 기반으로 해당 드라이버에 종속된 INF, DLL, CAT, PNF 등의 파일들이 Windows 이미지의 드라이버 저장소에 추가됩니다.
-ForceUnsigned 옵션을 사용하면 서명되지 않은 드라이버도 드라이버 저장소에 추가할 수 있습니다. 이 옵션을 사용하지 않으려면 디지털 서명 적용을 비활성화하거나, 자체 서명 인증서로 드라이버에 직접 서명해야 합니다.
드라이버 복사가 완료되면 변경 사항을 저장하면서 이미지를 마운트 해제합니다.
Dismount-WindowsImage -Path C:\WinWork\Mount\ –Save
위 예제에서는 Install.wim 이미지 파일에 드라이버를 추가했습니다. 이 이미지는 컴퓨터의 로컬 디스크에 배포되는 Windows 이미지입니다. 만약 Windows 설치 시 부팅에 사용되는 부팅 이미지에도 드라이버를 추가해야 한다면 Boot.wim 파일에 드라이버를 통합해야 합니다. 이는 주로 Windows 설치 중 컴퓨터가 로컬 하드 디스크를 인식하지 못하거나 LAN에 연결되지 않는 경우에 필요하며, 일반적으로 디스크 컨트롤러와 네트워크 어댑터 드라이버만 boot.wim에 통합하면 됩니다.
참고로 시간이 지나면 드라이버 저장소 폴더(%WINDIR%\System32\DriverStore\FileRepository)가 상당히 커질 수 있으므로, 사용하지 않는 오래된 드라이버 버전을 주기적으로 정리하는 것이 좋습니다.
드라이버가 통합된 install.wim 파일은 DISM의 압축 옵션을 사용해 install.esd 형식으로 변환할 수 있습니다.
DISM /Export-Image /SourceImageFile:C:\WinWork\ISO\install.wim /SourceIndex:1 /DestinationImageFile:C:\WinWork\ISO\install.esd /Compress:recovery
마지막으로 Dism++ 또는 oscdimg 명령으로 ISO 파일을 생성한 뒤 DVD나 USB 플래시 드라이브에 기록하면 됩니다.
oscdimg -n -m -bc:\ISO\boot\etfsboot.com C:\ISO C:\new_win10pro_image.iso
Windows 7 / 2008 R2에는 Add-WindowsDriver cmdlet이 없으며, 이 cmdlet은 Windows 8 / Windows Server 2012부터 제공됩니다. 따라서 Win7/2008 R2 이미지에 드라이버를 통합하려면 DISM 도구를 사용해야 합니다(아래 예시 또는 Windows 7 설치 이미지에 USB 3.0 드라이버 추가하기 문서 참조).
DISM으로 오프라인 Windows Server 2012 R2 이미지에 드라이버 추가하기
이번에는 Windows Server 2012 R2 설치 이미지에 드라이버를 통합하는 예시를 살펴보겠습니다. Windows 8.1에서 이미지를 작업하는 경우, 최신 버전의 DISM을 사용하려면 Windows 8 ADK(https://www.microsoft.com/en-us/download/details.aspx?id=30652)를 다운로드하여 설치해야 하며, 이때 Deployment Tools 구성 요소를 반드시 포함해야 합니다.
동일한 디렉터리 구조를 사용합니다. Drivers(드라이버 및 *.inf 파일 저장), ISO(압축 해제된 Windows Server 2012 R2 이미지), Mount(이미지 마운트 디렉터리). 여기서는 install.wim 파일에서 인덱스 3에 해당하는 Windows Server 2012 R2 Datacenter 에디션을 대상으로 한다고 가정합니다.
먼저 install.wim 설치 이미지를 마운트합니다.
dism /Mount-Wim /WimFile:c:\iso\sources\install.wim /Index:3 /MountDir:c:\mount
재귀 검색을 통해 새 드라이버를 Windows Server 2012 R2 이미지의 드라이버 저장소에 통합합니다.
dism /image:c:\mount /Add-Driver "/driver:c:\drivers\" /recurse
변경 사항을 WIM 이미지에 저장합니다.
dism /unmount-wim /mountdir:d:\mount /commit
네트워크 어댑터와 디스크 컨트롤러용 드라이버를 부팅 이미지 파일 boot.wim에도 통합해야 할 수 있습니다.
wim 파일에 포함된 모든 Windows Server 에디션에 드라이버를 추가하려면, 명령이 반환한 모든 OS 버전 인덱스에 대해 위 작업을 반복 수행해야 합니다.
dism /get-wiminfo /wimfile:d:\install.wim
드라이버 통합 외에도, 설치할 Windows 이미지에 보안 업데이트를 함께 삽입하는 것이 좋습니다(Windows 설치 이미지에 업데이트 추가하는 방법 참조). 이렇게 하면 설치 직후부터 OS의 보안 수준을 높일 수 있습니다. 완성된 설치 이미지를 DVD나 USB 플래시 드라이브에 기록하거나 ISO 이미지로 변환하면 작업이 끝납니다.