Ви завантажуєте інсталятор Windows. Натискаєте «Install now». І тут з’являється прикрість: диски не знайдено, немає мережі,
іноді навіть клавіатури на нових платформах. Це момент, коли команди або виглядають професійно, або починають ритися в купі
ZIP‑архівів, ніби на розпродажі.
Впровадження драйверів — інжекція їх у образ інсталятора — перетворює цей хаос на нудний, відтворюваний результат.
Setup бачить накопичувачі. WinPE бачить мережеві адаптери. Інструменти для образів поводяться передбачувано. Ваш нічний вікно
обслуговування залишається нудним, а у експлуатації це найвищий ступінь успіху.
Що насправді означає впровадження драйверів (і чого воно не означає)
Впровадження драйверів — це офлайн‑обслуговування: ви монтуєте файли образів Windows (WIM), інжектите драйвери (зазвичай через пакети .inf),
фіксуєте зміни і перебудовуєте ISO, щоб Windows Setup підвантажував ці драйвери без вашого кліку «Load driver».
Ви не «встановлюєте драйвери» в запущеній ОС. Ви запікаєте їх у середовище інсталятора (WinPE) і/або в образ встановленої ОС.
Є два основні образи, які мають значення:
-
boot.wim: середовище для передінсталяції Windows (WinPE), яке використовує Setup. Якщо Setup не
бачить дисків або мережі, зазвичай саме тут ви інжектите драйвери. -
install.wim(абоinstall.esd): власне образи видань Windows, які застосовуються на диск.
Якщо Windows встановлено, але потім при першому завантаженні виникає BSOD або немає NIC після встановлення, інжектте сюди також.
Впровадження драйверів — не магія. Якщо ви інжектите неправильну архітектуру (x86 проти x64), неправильну модель драйвера
(старий інсталятор EXE замість пакета на основі INF) або драйвер, що вимагає ко‑інсталятора, який не підтримується в WinPE,
ви все одно програєте. Просто програєте раніше і детерміновано — що, чесно кажучи, поліпшення.
Одна операційна істина: ставтеся до інсталяційних носіїв як до коду. Версіонуйте їх. Маркуйте. Тестуйте. Якщо хтось каже
«Я зробив новий ISO, має бути нормально», це не процес; це забобон з прикріпленим zip‑файлом.
Факти та контекст, які корисні на зустрічах
Кілька конкретних фактів і історичних контекстів, які роблять цю тему менш містичною і більш передбачуваною:
-
Термін «slipstreaming» став популярним у епоху Windows XP, коли адміністратори вливали сервіс‑пакети в
інсталяційні носії, щоб уникнути негайного патч‑інг після встановлення. - WIM‑образи файлові, а не секторні, тому DISM може монтувати їх, змінювати вміст і дедуплікувати файли між виданнями.
-
WinPE мінімалістичний за дизайном. Він не містить усіх відомих драйверів накопичувачів і NIC, бо мета — невеликий
розмір і широка, але не безкінечна, сумісність. -
Поширення UEFI змінило історію інсталятора. Сучасні платформи використовують UEFI, GPT, Secure Boot і нові
абстракції збереження (NVMe, VMD, RAID‑на‑CPU), які вимагають драйверів в ранній стадії завантаження/інсталяції. -
Підтримка NVMe у Windows значно еволюціонувала; старі версії Windows вимагали хотфіксів або драйверів від вендора,
тоді як новіші релізи включають широку підтримку NVMe — але не для кожного режиму контролера платформи. -
Intel RST/VMD та подібні стек‑рішення часто ховають фізичні NVMe під шаром контролера, тож універсальний NVMe‑драйвер
Windows не побачить диски доти, доки не підвантажиться драйвер вендора. -
install.esd vs install.wim: ESD — більш стиснений формат. Він зручний для розповсюдження, але незручний для
обслуговування. Багато робочих процесів конвертують ESD у WIM для надійної інжекції драйверів. -
Windows Setup використовує два індекси в boot.wim на типовому носії: один для WinPE і один для середовища Setup.
Якщо ви інжектите в неправильний індекс, нічого не зміниться і ви почнете звинувачувати DISM у брехні.
Визначте, що інжектити: збереження, мережа та два WIM
Якщо ви тут через «диски не знайдено», починайте з драйверів збереження в boot.wim. Якщо інсталятор не може
дістатися до вашого деплоймент‑шерва, починайте з NIC‑драйверів у boot.wim. Якщо Windows встановлюється, а потім
не завантажується або не бачить мережу після встановлення — інжектте в install.wim також.
Збереження: типові підозрювані
- Intel RST / VMD на сучасних ноутбуках і деяких серверах.
- Broadcom/LSI MegaRAID на корпоративних серверах.
- HPE Smart Array, Dell PERC у різних поколіннях.
- Дивакуватості Marvell/JMicron на білд‑бордах і аплайєнсах.
Мережа: це ніколи не «просто DHCP»
Без NIC‑драйверів у WinPE ви не зможете підвантажити answer file, драйвери, пакети або образ з мережі. Ви не зможете приєднатися до
системи розгортання. Ви також не зможете легко відлагоджувати, бо половина ваших інструментів знаходиться «на іншому боці» мережі.
Визначення місця приземлення драйвера
Використайте це правило прийняття рішення:
- Setup не бачить дисків/NIC → інжектити в
boot.wim(середовище Setup). - Setup працює, але перший запуск не вдається → інжектити в
install.wim(образ встановленої ОС). - Трапляються обидва випадки → інжектити в обидва. Не сперечайтеся з фізикою.
Гігієна драйверів: вибір правильного INF і уникнення «супу» драйверів
Вендори люблять давати один завантажуваний пакет з назвою на кшталт «Storage Driver Package», що містить:
MSI, інсталятор EXE, три різні папки з INF і PDF, який припускає, що ви розгортаєте з інструментом, якого у вас немає.
Ваше завдання — знайти файли .inf для точної апаратури і архітектури ОС.
Операційно вам потрібне:
- Підписані драйвери (особливо при Secure Boot). Непідписані в WinPE — це міна уповільненої дії.
- Мінімальний набір: тільки ті драйвери збереження/NIC, які потрібні для цього сімейства платформ.
- Відстежуваність: фіксуйте версію вендора, дату релізу й моделі апаратури, які підтримуються.
Не інжектте «всі драйвери, які у нас колись були» в свій ISO. Це здається безпечним. Це не безпечно. Це збільшує розмір boot.wim,
час завантаження, шанс конфліктів драйверів і робить відлагодження неоднозначним.
Жарт №1: Інжектити всі драйвери, які знайдете — це як привезти всю свою майстерню, щоб поміняти колесо. Ви все одно загубите
головку на 10 мм.
Практичне розміщення в лабораторії (папки, інструменти, очікування)
Ви можете робити це на Windows‑адмін‑робочій станції, у збірному VM або на CI‑раннері. Частини процесу можна виконувати з Linux
(монтаж ISO, витягування файлів), але обслуговування DISM простіше та краще підтримується на Windows.
Проста структура:
C:\ISO\src— розпакований вміст Windows ISOC:\ISO\mount\boot— точка монтування для boot.wimC:\ISO\mount\install— точка монтування для install.wimC:\ISO\drivers\storage— драйвери збереження, на основі INFC:\ISO\drivers\nic— NIC‑драйвери, на основі INFC:\ISO\out— вихідна директорія для перебудованого ISO
Інструменти, які ви зазвичай використовуватимете:
- DISM (вбудований у Windows) для mount/add‑driver/commit/export
- oscdimg (Windows ADK) для правильного створення завантажувального ISO
- Get-FileHash / signtool (необов’язково) для перевірки цілісності й підписів
Практичні завдання з командами: реальна робота
Завдання нижче написані так, ніби ви виконуєте збірку для продакшену: перевіряєте стан, підтверджуєте припущення і приймаєте
рішення на основі виводу. Я використовую оболонку‑промпт у стилі bash задля читабельності; команди — Windows‑нативні і
виконуються в PowerShell або CMD.
Завдання 1: Підтвердіть, що ви обслуговуєте правильну збірку ISO (перевірка версії)
cr0x@server:~$ dism /Get-WimInfo /WimFile:C:\ISO\src\sources\install.wim
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Details for image : C:\ISO\src\sources\install.wim
Index : 1
Name : Windows 11 Pro
Description : Windows 11 Pro
Size : 16,123,456,789 bytes
Index : 2
Name : Windows 11 Pro N
Description : Windows 11 Pro N
Size : 15,987,654,321 bytes
The operation completed successfully.
Що це означає: У вас WIM з кількома індексами (виданнями). Інжекція лише в один індекс означає, що драйвер
потрапить тільки в це видання.
Рішення: Визначте, яке індекс‑видання ви деплойте. Якщо ви використовуєте кілька видань, плануйте інжектити в кожний
індекс, який можете встановлювати.
Завдання 2: Перегляньте індекси boot.wim (пастка «не той індекс»)
cr0x@server:~$ dism /Get-WimInfo /WimFile:C:\ISO\src\sources\boot.wim
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Details for image : C:\ISO\src\sources\boot.wim
Index : 1
Name : Microsoft Windows PE (x64)
Description : Microsoft Windows PE (x64)
Index : 2
Name : Microsoft Windows Setup (x64)
Description : Microsoft Windows Setup (x64)
The operation completed successfully.
Що це означає: Індекс 2 зазвичай — це середовище Setup, яке фактично перелічує накопичувачі в UI.
Рішення: Інжектте драйвери збереження/NIC хоча б в індекс 2. Для безпеки багато команд інжектять і в індекс 1.
Завдання 3: Монтуйте boot.wim індекс 2 (Setup) в режимі запису
cr0x@server:~$ dism /Mount-Wim /WimFile:C:\ISO\src\sources\boot.wim /Index:2 /MountDir:C:\ISO\mount\boot
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Mounting image
[==========================100.0%==========================]
The operation completed successfully.
Що це означає: У вас тепер офлайн‑образ Windows у C:\ISO\mount\boot.
Рішення: Якщо монтаж зазнає помилку «Access is denied» або «The directory is not empty», зупиніться і приберіть
помилковий стан перед продовженням. Не накопичуйте поганий стан.
Завдання 4: Перелічіть існуючі драйвери третьої сторони в WinPE перед додаванням
cr0x@server:~$ dism /Image:C:\ISO\mount\boot /Get-Drivers /Format:Table
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Published Name Original File Name Inbox Class Name
oem1.inf e1d68x64.inf No Net
oem2.inf iaStorVD.inf No SCSIAdapter
The operation completed successfully.
Що це означає: «Inbox: No» вказує на додані драйвери. Ви бачите, що вже є в образі.
Рішення: Якщо потрібний драйвер уже присутній, ймовірно, проблема не в «відсутньому драйвері», а в «неправильному
режимі контролера», «Secure Boot блокує непідписане» або «неправильному індексі».
Завдання 5: Додайте драйвери збереження рекурсивно (на основі INF)
cr0x@server:~$ dism /Image:C:\ISO\mount\boot /Add-Driver /Driver:C:\ISO\drivers\storage /Recurse
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Searching for driver packages to install...
Found 3 driver package(s) to install.
Installing 1 of 3 - C:\ISO\drivers\storage\iaStorVD.inf: The driver package was successfully installed.
Installing 2 of 3 - C:\ISO\drivers\storage\iaStorAC.inf: The driver package was successfully installed.
Installing 3 of 3 - C:\ISO\drivers\storage\iaVMD.inf: The driver package was successfully installed.
The operation completed successfully.
Що це означає: DISM знайшов пакети INF і інжектнув їх у магазин драйверів офлайн‑образу.
Рішення: Якщо DISM повідомляє «No driver packages were found», ви вказали неправильну папку (ймовірно EXE/MSI‑пакет)
або INF не для цієї архітектури.
Завдання 6: Додайте NIC‑драйвери (щоб WinPE мав доступ до ваших систем розгортання)
cr0x@server:~$ dism /Image:C:\ISO\mount\boot /Add-Driver /Driver:C:\ISO\drivers\nic /Recurse
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Searching for driver packages to install...
Found 1 driver package(s) to install.
Installing 1 of 1 - C:\ISO\drivers\nic\rt68x64.inf: The driver package was successfully installed.
The operation completed successfully.
Що це означає: WinPE тепер спробує підвантажити ці драйвери при завантаженні, що дає змогу використовувати мережу раніше.
Рішення: Якщо ваш деплоймент залежить від SMB‑шарів, PXE або підвантаження answer file, NIC‑драйвери в boot.wim
обов’язкові. Не розраховуйте на «ми підключимо USB пізніше» у продакшені.
Завдання 7: Підтвердіть наявність драйверів після інжекції (довіряй, але перевіряй)
cr0x@server:~$ dism /Image:C:\ISO\mount\boot /Get-Drivers /Format:Table
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Published Name Original File Name Inbox Class Name
oem1.inf e1d68x64.inf No Net
oem2.inf iaStorVD.inf No SCSIAdapter
oem3.inf iaStorAC.inf No SCSIAdapter
oem4.inf iaVMD.inf No SCSIAdapter
oem5.inf rt68x64.inf No Net
The operation completed successfully.
Що це означає: Ви отримали підтвердження, що пакети драйверів додані в образ.
Рішення: Якщо драйвери відображаються, але апарат не виявляється в Setup, ймовірно, бракує залежності,
інжектовано неправильний стек збереження або проблема в налаштуваннях BIOS.
Завдання 8: Застосуйте зміни і демонтуйте boot.wim
cr0x@server:~$ dism /Unmount-Wim /MountDir:C:\ISO\mount\boot /Commit
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.
Що це означає: Ваші зміни записані назад у boot.wim.
Рішення: Якщо DISM попереджає про непідтверджені операції або помилки при демонтажі, не переходьте до перебудови ISO.
Виправте стан образу спочатку, інакше ви відправите пошкоджений інсталятор і станете попереджальною історією.
Завдання 9: Монтуйте install.wim для видання, яке ви деплойте, і інжектте ті самі драйвери
cr0x@server:~$ dism /Mount-Wim /WimFile:C:\ISO\src\sources\install.wim /Index:1 /MountDir:C:\ISO\mount\install
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Mounting image
[==========================100.0%==========================]
The operation completed successfully.
Що це означає: Ви редагуєте фактичний образ ОС, який буде встановлено.
Рішення: Якщо ви деплойте кілька індексів, повторіть для кожного. Так, це нудно. Ні, не можна пропустити і сподіватися,
що ваша задача завжди вибере одне й те саме видання назавжди.
Завдання 10: Додайте драйвери в install.wim (збереження + NIC)
cr0x@server:~$ dism /Image:C:\ISO\mount\install /Add-Driver /Driver:C:\ISO\drivers\storage /Recurse
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Searching for driver packages to install...
Found 3 driver package(s) to install.
Installing 1 of 3 - C:\ISO\drivers\storage\iaStorVD.inf: The driver package was successfully installed.
Installing 2 of 3 - C:\ISO\drivers\storage\iaStorAC.inf: The driver package was successfully installed.
Installing 3 of 3 - C:\ISO\drivers\storage\iaVMD.inf: The driver package was successfully installed.
The operation completed successfully.
cr0x@server:~$ dism /Image:C:\ISO\mount\install /Add-Driver /Driver:C:\ISO\drivers\nic /Recurse
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Searching for driver packages to install...
Found 1 driver package(s) to install.
Installing 1 of 1 - C:\ISO\drivers\nic\rt68x64.inf: The driver package was successfully installed.
The operation completed successfully.
Що це означає: Встановлена ОС матиме ці драйвери доступними при першому завантаженні.
Рішення: Якщо ваш перший запуск раніше завершувався з INACCESSIBLE_BOOT_DEVICE, це основна міра:
переконайтеся, що драйвер контролера збереження є в образі ОС до того, як вона спробує завантажитися.
Завдання 11: Перевірте стан підпису драйвера (не відправляйте непідписані сюрпризи)
cr0x@server:~$ pnputil /enum-drivers
Published Name: oem10.inf
Original Name: iaVMD.inf
Provider Name: Intel
Class Name: SCSIAdapter
Driver Version: 07/18/2024 20.0.0.1038
Signer Name: Microsoft Windows Hardware Compatibility Publisher
Що це означає: Авторитетне ім’я підписувача зазвичай вказує на правильно підписаний пакет. Непідписані пакети
— це ставка з ризиком через Secure Boot і політику сучасних Windows.
Рішення: Якщо підписувач порожній або «Unknown», зупиніться і знайдіть підписаний реліз. Якщо ви змушені використовувати
непідписане в лабораторії — вважайте це артефактом лише для лабораторії.
Завдання 12: Застосуйте зміни і демонтуйте install.wim
cr0x@server:~$ dism /Unmount-Wim /MountDir:C:\ISO\mount\install /Commit
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.
Що це означає: Образ встановленої ОС тепер оновлено.
Рішення: Якщо WIM значно виріс і вам важлива вага розповсюдження, заплануйте крок експорту/стиснення
(наступне завдання). Але не ускладнюйте процес, поки у вас не працює інсталятор.
Завдання 13: Переекспортуйте install.wim, щоб очистити і опціонально стиснути
cr0x@server:~$ dism /Export-Image /SourceImageFile:C:\ISO\src\sources\install.wim /SourceIndex:1 /DestinationImageFile:C:\ISO\src\sources\install.new.wim /Compress:max /CheckIntegrity
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
Exporting image
[==========================100.0%==========================]
The operation completed successfully.
Що це означає: Експорт переписує образ чисто і може зменшити фрагментацію та розмір.
Рішення: Якщо у вас кілька індексів, експортуйте кожен і зберіть консолідований WIM; інакше ви відправите носій,
де тільки одне видання виправлено.
Завдання 14: Безпечно замініть старий install.wim
cr0x@server:~$ move C:\ISO\src\sources\install.wim C:\ISO\src\sources\install.bak.wim
1 file(s) moved.
cr0x@server:~$ move C:\ISO\src\sources\install.new.wim C:\ISO\src\sources\install.wim
1 file(s) moved.
Що це означає: Ви зберігаєте копію для відкату. Завжди.
Рішення: Якщо це частина релізного процесу, зберігайте .bak поза деревом збірки. Локальні відкати
не допомагають, коли хтось «прибиратиме» папку.
Завдання 15: Перевірте стан WIM і цілісність перед перебудовою ISO
cr0x@server:~$ dism /Cleanup-Wim
Deployment Image Servicing and Management tool
Version: 10.0.22621.1
No mounted WIM images found.
The operation completed successfully.
Що це означає: Немає залишкових монтувань. Це добре. Залишкові монтування — це шлях відправити напівзаписані образи.
Рішення: Якщо повідомляє про змонтовані образи, яких ви не очікували, розслідуйте і прибирайте. Не перебудовуйте ISO,
поки DISM вважає, що монтування активне.
Завдання 16: Зберіть завантажувальний ISO з oscdimg (ADK)
cr0x@server:~$ oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bC:\ISO\src\boot\etfsboot.com#pEF,e,bC:\ISO\src\efi\microsoft\boot\efisys.bin C:\ISO\src C:\ISO\out\Win-Setup-Drivers.iso
OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
Scanning source tree (100 files in 20 directories)
Computing directory information complete
Writing 100 files in 20 directories to disc
100% complete
Final image file is 5,123,456,000 bytes
Done.
Що це означає: Ви створили dual‑boot (BIOS + UEFI) ISO з правильними завантажувальними секторами.
Рішення: Якщо ви завантажуєтесь лише по UEFI, можна спростити, але не робіть цього, поки не впевнені в прошивці
всього парку. «Впевненість» означає дані про активи, а не відчуття.
Завдання 17: Швидка перевірка — перелік драйверів в boot.wim без монтування (spot‑check)
cr0x@server:~$ dism /Get-Drivers /Image:C:\ISO\mount\boot
Error: 2
The system cannot find the file specified.
Що це означає: Це падає, бо образ не змонтовано. Це очікувано і нагадує: запити DISM вимагають шляху змонтованого образу
або роботи з /WimFile + /Index.
Рішення: Якщо хочете швидку перевірку, змонтуйте у режимі read‑only або змонтуйте знову і перевірте. Не припускайте,
що останній крок збірки зробив те, що ви думаєте.
Покроковий план швидкої діагностики
Коли Windows Setup не «просто працює», потрібен детермінований порядок триажу. Не тому, що ви нетерплячі (ви таки нетерплячі),
а тому, що режими відмов перекриваються і неправильне припущення забирає найбільше часу.
Перш за все: визначте, чи це помилка перерахунку дисків або невідповідність режиму контролера
-
Перевірте режим збереження в BIOS/UEFI: AHCI проти RAID проти VMD. Якщо VMD увімкнено і у вас немає VMD‑драйвера
в WinPE, Setup не побачить диски. Якщо ви зміните режим після встановлення, Windows може не завантажитися. - Перевірте, який апарат присутній: NVMe за VMD виглядає інакше, ніж «чистий» NVMe.
По‑друге: підтвердіть, що ви інжектнули в правильний WIM і індекс
- Диск відсутній у UI Setup? Це
boot.wimіндекс 2 дев’ять разів з десяти. - Диск видно під час Setup, але перший запуск невдалий? Це
install.wim.
По‑третє: перевірте упаковку драйвера і підпис
- Чи є у вас INF‑базовані драйвери, а не інсталятор EXE?
- Чи вони x64 для сучасних збірок Windows?
- Чи підписані вони так, щоб пройти політику Secure Boot?
По‑четверте: остерігайтеся «відволікаючого» повідомлення про відсутній драйвер медіа
Прокляте «A media driver your computer needs is missing» часто не має нічого спільного з USB‑драйверами. Це може бути драйвер
збереження, пошкоджений install.wim, погано записаний ISO на USB або те, що Setup не може прочитати джерело.
По‑п’яте: зменшіть кількість змінних
- Спробуйте інший USB‑накопичувач.
- Спробуйте інший USB‑порт (USB‑C хаби — джерело хаосу).
- Спробуйте завантажити ISO у VM, щоб підтвердити, що носій не пошкоджено.
Цитата (парафразована ідея): Послання Джона Оллспо — надійність приходить через навчання і адаптацію, а не через ігнорування можливості відмови.
Поширені помилки: симптом → корінь проблеми → виправлення
Ось відмови, що постійно повертаються, бо їх легко допустити і важко помітити.
1) Симптом: «No drives were found. Click Load driver…»
- Корінь проблеми: Режим контролера збереження вимагає драйвер вендора (RST/VMD/RAID), який відсутній у
boot.wimіндексі 2. - Виправлення: Інжектніть правильний INF для збереження в
boot.wimіндекс 2 (і зазвичай у індекс 1 теж). Перевірте через/Get-Drivers. Підтвердіть, що режим BIOS не змінився.
2) Симптом: Setup бачить диск, але Windows BSOD при першому завантаженні (INACCESSIBLE_BOOT_DEVICE)
- Корінь проблеми: Драйвер є у WinPE (boot.wim), але відсутній в образі встановленої ОС (install.wim), або режим збереження у прошивці змінився після інсталяції.
- Виправлення: Інжектніть драйвер збереження в правильний індекс
install.wim. Дотримуйтеся однакового режиму збереження від інсталяції до першого завантаження.
3) Симптом: «A media driver your computer needs is missing» на ранній стадії Setup
- Корінь проблеми: Погана методика створення USB, пошкоджений ISO, відсутній драйвер збереження або Setup не може прочитати джерело через ненадійний порт/хаб.
- Виправлення: Перегенеруйте USB надійним інструментом, спробуйте інший порт, перевірте хеш ISO і інжектніть драйвери збереження, якщо платформа використовує VMD/RAID.
4) Симптом: DISM каже «No driver packages were found»
- Корінь проблеми: Ви вказали DISM папку без
.inf, або драйвер має неправильну архітектуру. - Виправлення: Розпакуйте пакет драйверів до моменту, коли з’являться INF + SYS + CAT. Підтвердіть x64‑версії для x64 WinPE.
5) Симптом: Setup працює, але в WinPE немає мережі (не можу дістатися до деплоймент‑шару)
- Корінь проблеми: NIC‑драйвер відсутній в boot.wim, або NIC новіший за вбудовані драйвери.
- Виправлення: Інжектніть NIC‑драйвери в
boot.wimіндекс 2. Перевірте через завантаження shell у WinPE і запускipconfig, якщо маєте доступ до консолі.
6) Симптом: Драйвер інжектиться, але апарат все одно не визначається
- Корінь проблеми: Неправильний варіант драйвера (схожі моделі, різні PCI ID) або прошивка ховає пристрій за іншим режимом контролера.
- Виправлення: Підтвердіть PCI hardware IDs у працюючій ОС або за допомогою інвентаризаційних інструментів вендора; співставте їх з INF. Перевірте налаштування прошивки (VMD увімкнено/вимкнено, RAID увімкнено/вимкнено).
7) Симптом: Помилки монтування/демонтування, «The image is in use» або коміти не зберігаються
- Корінь проблеми: Застійні монтажі, антивірус сканує папки монтування або перервані операції DISM.
- Виправлення: Виконайте
dism /Cleanup-Wim, використовуйте чисту папку монтування, тимчасово виключіть шляхи монтування з AV у контрольованому середовищі збірки.
Три корпоративні міні‑історії з практики
Міні‑історія 1: Інцидент через хибне припущення
Компанія розгорнула партію нових ноутбуків для інженерів. Команда збірки IT мала «відомо нормальний» ISO Windows, який працював
роками на попередньому поколінні заліза. Вони припустили, що NVMe — це NVMe, Windows — це Windows, і Setup побачить диск.
В перший день черга до служби підтримки наповнилася одним і тим самим скріншотом: диски не знайдено. Хтось вирішив, що USB‑накопичувачі
погані, і перевиписав їх. Та сама помилка. Хтось інший звинуватив Secure Boot і почав перемикати налаштування прошивки, наче налаштовував радіо.
Корінь проблеми був приземленим: OEM постачав парк з VMD увімкненим за замовчуванням. Це ховало NVMe під шаром контролера, для якого
потрібен був Intel‑драйвер у WinPE. «Знайоме» ISO такого драйвера не мало, бо старий парк його не потребував.
Виправлення полягало в інжекції правильних VMD/RST‑драйверів у boot.wim індекс 2 і перебудові носія, а також у стандартизації
налаштування BIOS по всьому парку. Постмортем вивчив урок: припущення про «універсальну підтримку NVMe» не витримують абстракцій вендорів.
Вони додали передрейдовий чек: підтвердити режим збереження, PCI ID і покриття драйверів WinPE. Це не було ефектно, але зупинило кровотечу.
Міні‑історія 2: Оптимізація, що дала протилежний результат
Інша організація хотіла прискорити деплой. Хтось придумав «універсальний інсталятор ISO» з усіма драйверами, які коли‑небудь використовували:
чіпсет, GPU, аудіо, Wi‑Fi, збереження, NIC, принтери — так, навіть принтери. Ідея була проста: більше драйверів — менше сюрпризів.
Насправді ISO роздутилося. boot.wim став настільки великим, що час завантаження WinPE помітно зріс, особливо на старих USB‑носіях.
Підсумок: накладки в стеку збереження. На частині серверів Setup іноді підвантажував «неправильний» мініпорт першим, і диски
зникали та з’являлися при перезавантаженнях. Інтермітентні помилки — це місце, де ваш календар помирає.
Потім з’явилася комплаєнс‑проблема: не було чистого запису, які драйвери всередині, які версії і що підтримується. Коли команда безпеки
запитала про походження, відповідь була «папка з якоюсь хренькою». Це не відповідь.
Відкат не був відкатом — це була детоксикація. Вони перебудували носії під сімейство апаратури: один ISO для лінійки ноутбуків,
один для певного покоління серверів, один для нішевого аплайєнсу. Менше, цілеспрямовано, перевірено. Швидкість розгортання зросла,
бо час на відлагодження впав.
Жарт №2: «Універсальний драйвер‑ISO» — як універсальний пульт: хороший, поки він не почне керувати чужим телевізором і ви не заглушите свою зустріч.
Міні‑історія 3: Нудна, але правильна практика, що врятувала день
Фінансова команда мала рутину, яка здавалася нудною: кожен квартал вони перебудовували свої інсталяційні носії у чистому VM, інжектували лише
драйвери збереження і NIC, потрібні для кожного класу платформ, і тест‑встановлювали на одному репрезентативному пристрої на клас.
Вели невеликий changelog: версія драйвера, причина, протестована модель і дата.
Під час оновлення дата‑центру вони отримали сервери з трохи іншим ревізією RAID‑контролера, ніж очікували. Документація вендора була
неоднозначною. Здавалося те саме. Насправді — ні.
Їхній перший тест‑встановлення відразу зловив проблему: диски не видно в Setup. Замість того, щоб дізнатися це о третій ночі під час
переносу, вони виявили проблему у вівторок вдень з наявною кавою і ніхто не піднімав пейджинг.
Оскільки процес був контрольований, виправлення було простим: додати оновлений драйвер контролера в серверний ISO, перебудувати,
повторити тест. Зміна була задокументована і легко обґрунтована.
Нудна практика — повторювані збірки, мінімальні набори драйверів і один принесений у жертву тест‑пристрій — врятувала розгортання.
Нічого героїчного. Просто менше сюрпризів.
Чеклісти / покроковий план
Чекліст A: Перед тим, як торкатися DISM
- Визначте цільові моделі апаратури та режими контролера (AHCI/RAID/VMD).
- Завантажте пакети драйверів, що містять INF‑файли для x64.
- Розділіть драйвери в папки
storageтаnic. - Розпакуйте пакети до моменту, коли зможете вказати DISM на папки з
.inf. - Визначте, який індекс видання Windows ви деплойте (індекс install.wim).
Чекліст B: Кроки інжекції, яких варто дотримуватися
- Розпакуйте вміст ISO в
C:\ISO\src. - Запустіть
dism /Get-WimInfoдляboot.wimіinstall.wim. - Змонтуйте
boot.wimіндекс 2 уC:\ISO\mount\boot. - Додайте драйвери збереження і NIC з
/Add-Driver /Recurse. - Перевірте через
/Get-Drivers. - Фіксуйте/демонтуйте.
- Змонтуйте
install.wimдля індексу, який ви деплойте. - Додайте ті самі драйвери (принаймні драйвер контролера збереження; зазвичай NIC теж).
- Фіксуйте/демонтуйте.
- Опціонально експортуйте/скомпресуйте WIM.
- Перебудуйте ISO з
oscdimg. - Протестуйте завантаження й виявлення дисків на репрезентативному обладнанні.
Чекліст C: Тести прийняття (не пропускайте їх)
- Setup бачить цільовий диск без натискання «Load driver».
- Setup бачить мережу, якщо ви на неї залежите (деплоймент‑шер або підвантаження answer file).
- Windows успішно завершує перший запуск без BSOD, пов’язаних із збереженням.
- Device Manager у встановленій ОС не показує невідомих контролерів збереження.
- ISO завантажується в UEFI на вашій новішій платформі і в legacy, де це потрібно.
Питання та відповіді
1) Чи справді потрібно інжектити драйвери і в boot.wim, і в install.wim?
Якщо ви хочете, щоб Setup бачив диски і щоб встановлена ОС завантажувалася надійно — так, інжектте в обидва. Boot.wim допомагає
пройти інсталяцію; install.wim — пройти перший запуск і далі.
2) В який індекс boot.wim мені інжектити?
Зазвичай індекс 2 (Windows Setup). Багато команд інжектять в обидва індекси 1 і 2, бо це недорого і запобігає сюрпризам в альтернативних шляхах завантаження.
3) У мене лише EXE від вендора. Чи може DISM інжектити його?
Ні. DISM інжектить пакети драйверів через INF. Розпакуйте EXE (часто це просто обгортка), поки не отримаєте .inf,
.sys і .cat.
4) Чому Setup каже «media driver is missing», хоча я явно завантажився з USB?
Це повідомлення розмите. Воно може означати відсутній драйвер збереження, неможливість прочитати джерело, проблеми з створенням USB
або те, що Setup не може дістатися до install.wim. Трактуйте його як «Setup не може прочитати щось необхідне», і звужуйте область пошуку.
5) Чи можу я просто переключити BIOS з RAID/VMD на AHCI і уникнути драйверів?
Іноді — так. Але зміна режиму може зламати існуючі установки і може не відповідати стандартам вашої організації. Якщо це парк машин,
стандартизуйтe налаштування прошивки і будуйте носії відповідно. Випадки довільних переключень не масштабуются.
6) Як працювати з install.esd замість install.wim?
Конвертуйте або експортуйте його у WIM для обслуговування, інжектьте драйвери, потім опціонально стисніть назад у ESD, якщо є потреба.
Якщо немає причин — залишайтеся на WIM, він зручніший в операціях.
7) Чи заблокує Secure Boot мої інжектовані драйвери?
Може заблокувати. Непідписані або неправильно підписані драйвери можуть не завантажуватися залежно від політик і платформи. Надавайте
перевагу WHQL‑пакетам і перевіряйте метадані підпису перед відправленням у продакшен.
8) Чи варто інжектити чіпсет, GPU, аудіо та всі «приємні» драйвери теж?
Не в інсталяційний носій, якщо немає конкретної потреби в WinPE. Для успішної інсталяції пріоритет — збереження і NIC.
Все інше можна встановити після інсталяції через засоби управління, розгортання драйверів або пакети OEM.
9) Як підтримувати це масштабовано для кількох моделей апаратури?
Збирайте для кожного сімейства апаратури і тримайте набори драйверів мінімальними. Версіонуйте артефакти ISO, ведіть changelog і тестуйте
на одному репрезентативному пристрої з кожного сімейства перед просуванням носія в продакшен.
10) Мій інжектований драйвер присутній у /Get-Drivers, але диски все одно не показуються. Що далі?
Підтвердіть, що ви інжектували в правильний індекс. Підтвердіть режим прошивки контролера. Підтвердіть, що INF співпадає з PCI IDs.
І підтвердіть сумісність драйвера з конкретною збіркою Windows. Після цього ви вже відлагоджуєте реальність платформи, а не DISM.
Наступні кроки, що вбережуть вас від проблем
Якщо ви хочете, щоб Setup «просто працював», перестаньте ставитися до інсталяційних носіїв як до одноразового артефакту і почніть
ставитися до них як до невеликого контрольованого релізу. Інжектуйте правильні драйвери в boot.wim (Setup) і
install.wim (встановлена ОС), перебудуйте з правильним інструментарієм і тестуйте на реальному обладнанні.
Практичні кроки:
- Створіть чистий VM для збірки та стандартну структуру папок для обслуговування ISO.
- Зберіть мінімальний пакет драйверів для кожного сімейства апаратури (першочергово збереження + NIC).
- Автоматизуйте workflow DISM mount/inject/commit у скрипті і логуйтесь кожен запуск.
- Ведіть невеликий changelog: який драйвер змінено, чому і що протестовано.
- Щоквартально робіть тест‑встановлення на репрезентативному обладнанні, щоб ловити сюрпризи «те саме, але інший контролер».
Мета не стати митцем образів Windows. Мета — перестати знаходити проблеми з драйверами перед керівництвом, клієнтом або вікном технічного обслуговування.