How to add network driver to Windows 10 PE
Marco Franssen

Loading...
Marco Franssen

Very recently I have been trying to reinstall my Laptop using my WinPE approach as it didn't have a optical drive anymore. However my problem was that the WinPE image I created was lacking the network driver for my laptop. So then I recreated a WinPE USB drive using the Windows 10 ADK, hoping it would include the required driver. However unlucky me I still had no network when I booted by new laptop using my new Windows 10 PE USB drive. Therefore I had to add the network driver for my laptop to the WinPE image in order to be able to connect to the network and start my Windows 10 installation from my shared network folder.
Before starting the reinstall I first figure out what drivers are installed. On Windows you can find information about your drivers and your devices using msinfo32.
So simply fire up msinfo32 by hitting the Windows key on your keyboard and type msinfo32.
Browse to Components -> Network -> Adapter. Here you will find a list of all network adapters. Scroll down to your Ethernet adapter and note down the driver name and the device name in order to download the appropriate Windows 10 driver. In my case the network device looked like this.
(NIC)Name [00000007] Intel(R) 82579LM Gigabit Network Connection
PNP Device ID PCI\VEN_8086&DEV_1502&SUBSYS_21CE17AA&REV_04\3&E89B380&0&C8
Driver c:\windows\system32\drivers\e1d65x64.sysWith this information you can now look at Intel's or your laptop vendor webpage for the correct drivers for Windows 10. Download these so we can add them to our WinPE image later on.
In my case I got a package with a few subfolders (containing drivers for Win 7 Win 8 Win 8.1 and Win 10).
We are about to install the driver with the name e1d65x64.inf from the NDIS65 folder to our WinPE image. In the folder I downloaded there where multiple versions, so I went for the one with the same name as it was installed previously on my Windows 10.
Download the Windows 10 ADK and install it on your computer. Now open as admin your Deployment and Imaging tools environment (Just hit the windows key on your keyboard and start typing on Windows 10 to find it…).
copype amd64 C:\winpe_amd64_win10
Dism /Mount-Image /ImageFile:"C:\winpe_amd64_win10\media\sources\boot.wim" /index:1 /MountDir:"C:\winpe_amd64_win10\mount"
Dism /Add-Driver /Image:"C:\winpe_amd64_win10\mount" /Driver:"C:\DRIVERS\WIN\ETHERNET\PRO1000\Winx64\NDIS65\e1d65x64.inf"
Dism /Unmount-Image /MountDir:"C:\winpe_amd64_win10\mount" /commit
MakeWinPEMedia /UFD E:\winpe_amd64_win10 F:Now I could finally start my installation using the Windows install files on my shared network location. So in Windows PE you will have a command prompt available. In the command prompt I checked if I had a network connection with the network driver build into the Windows PE image.
ipconfig
ping 192.168.0.2Now I am sure I have a network connection and I can also reach the computer hosting my share I can simply use net use in order to connect to the network share. Then swich to this newly attached network drive and run the Windows 10 setup.
net use z: \\192.168.0.2\Win10
z:
setup.exeVoila, now your Windows 10 installation will start. Make sure you stay connected with the network cable until first reboot, from that point on you can switch to Wifi. The Windows 10 installation will take care of setting up your Wifi network adapter properly. Give it a couple of minutes to get you fully up and running.
First thing I usually do is getting Chocolatey setup. Chocolatey is a package manager for Windows. It allows you to easily install and update your software from the commandline. Similar to Homebrew for MacOS or e.g. apt for Ubuntu. To install Chocolatey, run the installation command from their webpage.
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"With chocolatey installed you can now open Powershell in Administrator mode (Right click -> Run as Administrator). Me woudn't be me if I didn't prepare a powershell script with all my desired software listed out so I could easily install it.
To get an easy overview of which software is available you can browse the packages on Chocolatey packages.
Below I took an extract of my personal script to give you an idea on how I get my Windows freshly installed within 45 minutes without to many manual steps.
cinst -y git git-lfs vscode GoogleChrome slack docker-for-windows 7zip winscp docker-machine golang nodejs gradle intellijidea-community dotnetcore-sdk vlc Firefox gpg4win graphviz gradle jdk8 openjdk python python2 keepass mysql.workbench postmanAnd the list goes on and on in my case. To get all my favorite developer tooling in place.
By Intention I first install Git and vscode, so I can already start cloning my repos and run my bash scripts (in git Bash) like the one below that installs my vscode extensions.
EXTENSIONS=(
ms-vscode.go
ms-vscode.csharp
ms-vscode.powershell
ms-python.python
vscoss.vscode-ansible
editorconfig.editorconfig
eamodio.gitlens
esbenp.prettier-vscode
vsmobile.vscode-react-native
dsznajder.es7-react-js-snippets
peterjausovec.vscode-docker
ms-kubernetes-tools.vscode-kubernetes-tools
technosophos.vscode-make
secanis.jenkinsfile-support
eg2.vscode-npm-script
christian-kohler.npm-intellisense
sonarsource.sonarlint-vscode
djabraham.vscode-yaml-validation
redhat.vscode-yaml
)
for ext in ${EXTENSIONS[@]} ; do
code --install-extension $ext
doneNow you have installed your desired software using Chocolatey you can keep your software updated using the following commands in Powershell.
choco outdatedcup all -ycup docker slack -yIn case you ever want to uninstall a piece of software you can allows get a list of installed software and run the uninstall command.
clist --lochoco uninstall -y virtualboxUnfortunatily I didn't went over the hassle of trying to get Wifi working on my Win PE image. I figured that would involve a bit more work which I didn't want to spent effort on as I have access to cable anyhow. Looking forward to your tips and tricks in the comments.
Marco Franssen
In my previous blog post I have covered how to setup your development environment for Golang including a simple hello world. In case this is your first Go project please have a look on this blog post first and then come back to learn about the use of defer in Go. Defer will always be triggered at the end of a function. So even if the code panics in some location of the executing code it will guarantee the deferred code will be executed. A panic in Go is an unhandled error and causes the program…
Marco Franssen
A couple of months ago I started to do some coding in Go a.k.a Golang. Not only because they have an awesome logo ;-). My main reason was because I wanted to have something running as bare metal as possible on my Raspberry Pi and I wanted to have it available for different platforms to be easy to install. Some other reasons are the ease of creating async code by using Go in front of your methods and the unique approach of channels to sync between go routines (threads). I have been reading a lot…
Marco Franssen
As we started 2 years ago with a micro-service architecture we faced some issues in the productivity of the teams a while ago. This made me think what we could do about that from an architecture and development point of view. As we used different Git repos for the various components of our micro services in the long run it became harder and harder for developers to work with those components. At that point in time I decided to simplify the development workflow to merge the different Git repos of…
Marco Franssen
In the last couple of years web applications technologies and frameworks went through a fast paced transformation and evolution. For all these evolutions there was coined a marketing term which (by coincidence) all end on …ive. So lets coin another one. In this article I'm going to explain you the basic concepts of all these principles which combined allow you to build an impressive web application. Responsive Web Design It started all back in (from top of my head) late 2010, with the idea of…