PXE

How to install Windows 10 over PXE Linux Server

Share on Social Media

Learn how to install Windows 10 over PXE Linux server with this comprehensive guide. Follow step-by-step instructions to set up and deploy Windows 10 seamlessly over your network. #centlinux #linux #pxe

Problem Statement

In our previous posts, we have configured a PXE boot server for automated installation of RHEL 7.5 operating system that supports both BIOS and UEFI based clients. Later on, we added RHEL 6 and Ubuntu 18.10 installation options in our PXE boot server. We have also written Kickstart files for automated installations of both operating systems.

Before concluding our PXE configuration series, we decided to write an article to add the installation option of a Microsoft’s operating system. Therefore, we have selected the Microsoft Windows 10 (the latest OS at the time of this writeup) as the candidate for our PXE boot server.

Note: In this article, we are performing everything from CLI, therefore, it is highly recommended that, you should have Linux Pocket Guide: Essential Commands (PAID LINK) by O’Reilly Media for quick reference.

Linux Server Specification

In this article, we will install Windows 10 over PXE Server.

We use the same Linux server that we have configured as PXE Boot Server in our previous article. These specifications have been re-mentioned below for convenience of the readers.

  • CPU – 2 Core (2.4 Mhz)
  • Memory – 2 GB
  • Storage – 50 GB
  • Operating System – RHEL 7.5
  • Hostname – pxe-server.itlab.com
  • IP Address – 192.168.116.41/24

Furthermore, we need a client system to create Windows PE iso file. Here, we are using a MS Windows 8.1 machine for this purpose, however, you can use other versions of MS Windows as well (be noted that configurations are slightly different in MS Windows versions prior to 8.1).

Read Also: How to install Linux over PXE Server

Install Samba Server on Linux

We used Samba server to share installation media of MS Windows 10 Operating System with PXE clients.

Connect to pxe-server.itlab.com using ssh and install Samba server.

# yum install -y samba

Create a directory to share Windows 10 installation media.

# mkdir /smbshare

Adjust SELinux permissions.

# semanage fcontext -a '/smbshare(/.*)?' -t samba_share_t
# restorecon -Rv /smbshare

Create an user to control access to Samba share.

# useradd -s /sbin/nologin ahmer
# smbpasswd -a ahmer

Change owner of the shared directory with user ahmer.

# chown ahmer:ahmer /smbshare/

Allow Samba service in Linux Firewall.

# firewall-cmd --permanent --add-service=samba
success
# firewall-cmd --reload
success

Add directives in /etc/samba/smb.conf to share the directory /smbshare with clients.

# cat >> /etc/samba/smb.conf << EOF
> [install]
>         comment = Installation Media
>         path = /smbshare
>         public = yes
>         writable = no
>         printable = no
>         browseable = yes
> EOF

Start and enable Samba services.

# systemctl start smb nmb
# systemctl enable smb nmb

Attach MS Windows 10 ISO/DVD and mount it at /mnt/iso (you can use any mountpoint, according to your choice).

# mount -t iso9660 /dev/cdrom /mnt/iso
mount: /dev/sr0 is write-protected, mounting read-only

Copy contents of /mnt/iso to /smbshare/windows10 directory.

# cp -rf /mnt/iso /smbshare/windows10

Create a Customized Windows PE ISO

Connect to MS Windows 8.1 client.

We required Windows ADK (Assessment and Deployment Kit) to create our Windows PE iso. Therefore, we have downloaded it from Microsoft’s website and installed it on our Windows 8.1 client.

After installation, run Deployment and Imaging Tools Environment as Administrator.

Run the following command to create working directories for Win PE. (Command output has been trimmed to show only success status)

C:Program Files (x86)Windows Kits8.0Assessment and Deployment KitWindows Pr
einstallation Environment> copype x86 c:WinPE_x86
---
186 File(s) copied
        1 file(s) copied.
        1 file(s) copied.
        1 file(s) copied.

Success

c:WinPE_x86>

We will customize the startup script startcmd.net, so MS Windows 10 setup will start automatically. Therefore, mount the image file and customize it accordingly.

c:WinPE_x86> Dism /Mount-Image /ImageFile:"c:WinPE_x86mediasourcesboot.wim"
/index:1 /MountDir:"c:WinPE_x86mount"

Deployment Image Servicing and Management tool
Version: 6.2.9200.16384

Mounting image
[==========================100.0%==========================]
The operation completed successfully.

Now, edit startnet.cmd.

c:WinPE_x86> notepad c:WinPE_x86mountWindowsSystem32Startnet.cmd

And add following lines therein.

wpeinit 
net use z: \192.168.116.41installwindows10 /user:ahmer 123
z:setup.exe

Save and unmount the image file.

c:WinPE_x86> Dism /Unmount-Image /MountDir:"c:WinPE_x86mount" /commit

Deployment Image Servicing and Management tool
Version: 6.2.9200.16384

Saving image
[==========================100.0%==========================]
Unmounting image
[==========================100.0%==========================]
The operation completed successfully.

c:WinPE_x86>

Generate winpe.iso file.

c:WinPE_x86> MakeWinPEMedia /ISO c:WinPE_x86 c:winpe.iso
Creating c:winpe.iso...

100% complete

Success

c:WinPE_x86>

Transfer winpe.iso file to pxe-server-itlab.com and copy it to /var/lib/tftpboot/networkboot/windows10/ directory.

Add MS Windows 10 installation option to PXE boot menu

Now, connect to pxe-server.itlab.com again using ssh.

Copy Kernel boot image for MS Windows in tftpboot directory.

# cp /usr/lib/syslinux/memdisk /var/lib/tftpboot/

Edit PXE boot menu for BIOS based clients.

# vi /var/lib/tftpboot/pxelinux.cfg/default

And add following menu option at the end of file.

label Install MS Windows 10
menu label Install MS Windows 10
kernel memdisk
initrd /networkboot/windows10/winpe.iso
append iso raw

Connect a new client to your network and turn it on. It should get the IP address from DHCP server and display our PXE boot Menu as follows:

PXE Boot Menu

Select Install MS Windows 10 option and press <ENTER>.

install Windows 10 over PXE
Microsoft Windows 10 Setup

We have successfully added the MS Windows 10 installation option in our Linux based PXE server.

Recommended Online Training: Learn Bash Shell in Linux for Beginners

Final Thoughts

If you found this guide on installing Windows 10 over a PXE Linux server helpful and need further assistance, I’m here to help. I offer professional services to ensure your PXE server setup and Windows deployment are smooth and efficient. Visit my Fiverr profile for more details and to get started: Linux System Administrator. Let’s make your installation process seamless!

Alaric Bird

Alaric Bird is a seasoned Linux System Administrator with over a decade of experience in managing and optimizing Linux-based servers and infrastructure. Known for his expertise in server deployment, security hardening, and performance tuning, Alaric has a deep understanding of various Linux distributions, including Ubuntu, CentOS, and Red Hat Enterprise Linux. His skills extend to cloud platforms like AWS, where he effectively manages virtual private servers and services. Alaric is also proficient in scripting languages such as Bash and Python, which he uses to automate routine tasks, enhancing efficiency and reliability. With a strong commitment to continuous learning, he stays updated with the latest developments in open-source technologies and best practices. His problem-solving abilities, combined with excellent communication skills, make him a valuable asset to any IT team. In addition to his technical expertise, Alaric is passionate about mentoring junior administrators and fostering a collaborative environment.

View Comments

  • Hi, Thank you for liking this article.
    Lately, I worked on adding UEFI support to Windows 10 PXE installation, but didn't succeed. Please let me know if you have workaround this issue.

  • Hello, well detailed tutorial. By the way, i'm unable to make it working... :(
    My Winpe ISO file is fine, i tested it and booted on it but when using it with PXE server, nothing happens, WINPE does not launch... RHEL 7 installation is working... Any suggestion please?

  • Hi Alex, I am afraid, I cannot help you with this little information. But, I am advicing you to look into /var/log/messages at CentOS server. Contact me, if you find anything notable there.

  • Hello Ahmer
    thanks a lot for your great job,
    i've successfully launched WINPE, but cant mount Windows image from samba share
    however i cannot ping to server from winpe.
    it seems that nic driver is missed on winpe image

  • Thanks for your kind remarks.
    - If you are unable to mount Windows 10 DVD. then you can also copy the contents of DVD to disk and use it by using the same steps above.
    - If your client is obtaining an IP from DHCP then this is not an NIC issue. Otherwise, troubleshoot it.

Share
Published by
Alaric Bird

Recent Posts

Puppy Linux: Fast and Simple OS

Puppy Linux is a fast, lightweight OS designed for speed and simplicity, perfect for old…

1 day ago

Change Apache Document Root in Linux

Learn how to change Apache document root in Linux by following this step-by-step guide. Adjust…

2 weeks ago

How to Change Apache Port in Linux

Discover how to change Apache port in Linux easily. Follow our simple guide to modify…

2 weeks ago

How to Create Virtual Host in Apache Server

Learn how to create a virtual host in Apache Server with this comprehensive guide. Set…

3 weeks ago

10 Practical Tasks for RHCSA Exam with Solutions

Discover 10 practical tasks for the RHCSA exam with step-by-step solutions. Boost your Linux skills…

3 weeks ago

Ultimate Fail2ban Configuration Guide

Discover the ultimate Fail2ban configuration guide. Learn how to set up, customize, and optimize Fail2ban…

4 weeks ago

This website uses cookies.