Динамічне завантаження драйверів в середовищі WinPE

Сьогодні ми покажемо як завантажити будь-які драйвера в середу предустановки Windows (WinPE - Windows Preinstallation Environment) безпосередньо в процесі роботи системи (тобто онлайн). У деяких випадках це набагато простіше і швидше, ніж інтегрувати драйвера в завантажувальний образ WinPE, і не вимагає наявності сторонніх програм. Все що нам потрібно, утиліта Drvload, яка вже входить в середу WinPE (починаючи з WinPE 3.0, яка зібрана на базі Windows 7).

утиліта Drvload дозволяє за допомогою inf файлів додати необхідні драйвера прямо в завантажений образ середовища WinPE. Запити на перезавантаження системи, що містяться в INF-файлах драйверів середовищем WinPE ігноруються, а тому випадку якщо вимога перезавантаження міститься в SYS-файлі, такий драйвер завантажити за допомогою Drvload не вдасться.

Можливість динамічного завантаження драйверів в середовищі предустановки Windows може знадобитися, коли в завантажувальному образі WinPE відсутні вбудовані драйвера мережевої карти, і, як наслідок, установка / завантаження системи через PXE не працює. Крім того можливість завантаження драйверів в WinPE часто потрібно при необхідності виконати повне відновлення системи (bare metal recovery) з мережевої папки.

Порада. Додати драйвера в офлайн образ Windows можна за допомогою DISM. Подробиці можна почерпнути зі статті про інтеграцію драйверів в образ Windows.

Далі ми покажемо як завантажити драйвер мережевої карти і налаштувати мережу в середовищі WinPE.

Запускаємо середу WinPE (середа предустановки Windows), завантажившись з настановної або завантажувальної флешки / диска з Windows 8 (або з ERD диска), і на екрані вибору мови / локалі натискаємо комбінацію клавіш Shift + F10. У вікні командного рядка перевіримо, чи бачить завантажувальний середу мережевий адаптер, виконавши команду:

wmic nic get NetConnectionID

Судячи з відповіді "No Instance (s) Available" в системі не встановлено жодної мережевої карти.

Тобто в даному образі завантажувального середовища WinPE відсутні мережеві драйвера, що підтримують встановлену в системі модель мережевої карти. Наше завдання: завантажити в пам'ять системи мережеві драйвера, необхідні для роботи з мережею.

У тому випадку, якщо необхідний мережевий драйвер для вашої моделі мережевої карти зберігаються на CD / DVD диску, визначимо букву CD-Room'а за допомогою WMIC:

wmic cdrom get drive

У нашому випадку CD приводу відповідає буква H: (Drive H :).

Якщо драйвера мережевої карти на диску знаходяться в запакованому стані (наприклад, у вигляді cab-файл), можна створити тимчасовий каталог і розпакувати в нього вміст cab архіву з файлами драйвера за допомогою утиліти expand:

mkdir x: \ drivers expand -r h: \ LANdriver.cab -f: * x: \ drivers

Примітка. Оскільки в нашому прикладі всі експерименти проводилися на віртуальній машині VMWare, довелося попередньо розпакувати мережеві драйвера з образу VMWare Tools. Для цього на будь-якої активної віртуальної машині монтуємо образ з VMTools (в консолі ВМ меню VM-> Guest-> Install / Upgrade VMWare Tools

За допомогою наступної команди розпакуємо вміст образу VMTools на диск:

D: \ setup.exe / A / P g: \ drivers

Після закінчення розпакування перевіримо, що повний шлях до каталогів c мережевими драйверами VMWare буде приблизно такою:

G: \ drivers \ Program Files \ VMware \ VMware Tools \ Drivers

Оскільки тип віртуальної мережевої карти нашої віртуальної машини - VMXNET 3, нас цікавить каталог саме з драйвером vmxnet3: G: \ drivers \ Program Files \ VMware \ VMware Tools \ Drivers \ vmxnet3 \ NDIS6.

Перейдемо в каталог з драйверами (він буде залежати від того, куди був розпакований архів з файлами драйвера)

Cd C: \ drv \ drivers \ Program Files \ VMware \ VMware Tools \ Drivers \ vmxnet3 \ ndis6

І за допомогою утиліти drvload завантажимо драйвер мережевої карти vmxnet3:

drvload vmxnet3ndis6.inf

DrvLoad: Successfully loaded x: \ drivers \ vmxnet3dnis6.inf

Переконаємося, що драйвер встановився і система визначила мережеву карту:

wmic nic get NetConnectionID

Для мережевого інтерфейсу "Ethernet" налаштуємо автоматичне отримання IP адреси з DHCP сервера:

wpeinit netsh interface ipv4 set address name = "Ethernet" source = dhcp

Перевіримо, що мережевий інтерфейс отримав по DHCP IP-адресу та інші параметри TCP / IP:

ipconfig

Як ми бачимо, в завантажувальної середовищі WinPE тепер доступна мережа. За допомогою наступної команди ми можемо змонтувати віддалену мережну папку під літерою R:

Net use r: \\ 192.168.1.15 \ drv