Windows Network Installation through Linux PXE Server

Linux PXE Seerver

PXE Server (preboot execution environment) helps to install a system in the network without having a physical media. Instead of using manual installation method by using CD/DVD or pen drive, we can configure pxe server in any system in the network and install the operating system by selecting network mode installation. It is must needed to enable a network interface card from BIOS to boot from a network interface card. This method helps to install OS on many systems at a time in the network. In order to deploy a PXE server the PXE environment needs a DHCP server that distributes the IP addresses to the client systems, and a TFTP server that downloads the installation files to the PXE clients. PXE server also helps to configure several automation tasks like software installation, join to ad server and so on.

Topic

  • How to configure PXE server on Centos Linux?
  • How to configure PXE server on RHEL?
  • PXE server installation and configuration on Linux
  • Network installation of windows through Linux PXE server
  • How to install windows through Linux PXE server?
  • Windows network/PXE installation through Linux PXE server.

apt

  • Centos
  • RHEL
  • Scientific Linux


Solution


PXE Prerequisite
  • Bare minimum install of Centos
PXE Installation Requirement
  • Here we configure a PXE server on Centos 7 operating system which allows to setup network/PXE installation of windows 10(custom and automatic).
  • Other windows operating system (windows 7, windows server 2008, windows 8, windows server 2012 and etc…) can be installed by adding their appropriate ISO image in samba shared repository.
PXE Server details
  • Server IP = 192.168.0.101
  • Host name = server.example.local
  • OS = CentOS 7.x

Four stages of PXE configuration
  • Configuration of samba share for windows operating system installation.
  • Installation and configuration of DHCP server.
  • Installation and configuration of SYSLINUX bootloader.
  • Installation and configuration of TFTP server.


Samba Share Configuration [1]
# yum install samba -y

  • mount Windows 10 ISO image then copy the contents to samba shared directory.
mkdir -p /data/winos/win10auto
mkdir -p /data/winos/win10cutom
mount Win10_1903_V1_English_x64.iso /mnt/test
cp -rv /mnt/test/* /data/winos/win10auto
cp -rv /mnt/test/* /data/winos/win10cutom
chmod 755 /data/winos/win10auto/*
chmod 755 /data/winos/win10cutom/*
umount /mnt/test

  • Edit samba configuration file and add the following changes.
# vim /etc/samba/smb.conf
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        security = user
        passdb backend = tdbsam
        max log size = 50

[winos]
        comment = Install Windows Software
        path = /data/winos
        public = yes
        browseable = Yes
        writable = no
        printable = no
        valid users = test
        guest ok = yes
        oplocks = no
        level2 oplocks = no
        locking = no

  • Add firewall rules and selinux contexts for samba
# semanage fcontext -a '/data/winos(/.*)?' -t samba_share_t
# restorecon -Rv /data/winos
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload

  • Start and enable samba service.
# systemctl start smb nmb
# systemctl enable smb nmb

Installation and configuration of DHCP server [2]
  • Execute the following command to install DHCP package.
# yum install dhcp* -y

  • Add the following DCP configuration in /etc/dhcp/dhcpd.conf file.
authoritative;
allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.101;
filename "pxelinux.0";

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {

  range 192.168.0.101 192.168.0.254;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;
  option subnet-mask 255.255.255.0;
}

  • Start dhcp service and enable DHCP ports in the firewall.
systemctl start dhcpd
systemctl enable dhcpd
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

Installation and configuration of SYSLINUX boot loader [3]
  • The boot loaders files needed for PXE environment are available at /usr/share/syslinux. Copy those files to TFTP Server once TFTP server packages are installed.
# yum install syslinux
# ls /usr/share/syslinux/

Install and configure TFTP server [4]
  • TFTP (Trivial File Transfer Protocol ) transfers files to its clients without any kind of authentication. Edit configuration file of tftp server in /etc/xinetd.d/tftp and add the following changes.
# vim /etc/xinetd.d/tftp

service tftp
{
        socket_type   = dgram
        protocol         = udp
        wait                = yes
        user               = root
        server            = /usr/sbin/in.tftpd
        server_args   = -s /var/lib/tftpboot
        disable           = no
        per_source     = 11
        cps                 = 100 2
        flags               = IPv4
}

  • Copy syslinux files form /usr/share/syslinux to /var/lib/tftpboot directory.
cp -r /usr/share/syslinux/* /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
mkdir /var/lib/tftpboot/networkboot-win10auto
mkdir /var/lib/tftpboot/networkboot-win10custom

  • Generate Windows PE iso file in Windows 10 operating system. Here we will generate two iso file, one for auto and another for custom installation.
  • ADK (Assessment and Deployment Kit) is required to create Windows PE iso. Download ADK kit from Microsoft site and install it on windows 10 system.
  • Once the installation done, run Deployment and Imaging Tools Environment as Administrator and execute below command to create working directories for Win PE.
copype amd64 C:\WinPE_amd64

  • Mount the image file and customize as required.
Dism /Mount-Image /ImageFile:"C:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_amd64\mount"

  • Edit startup script startcmd.net and add the below changes.
notepad c:\WinPE_amd64\mount\Windows\System32\Startnet.cmd

  • Paste the following content in notepad.
wpeinit
net use Z: \192.168.0.101\winos\win10auto /user:pxiadmin "Your password without quotes"
Z:\setup.exe

  • Save the file and unmount the image.
Dism /Unmount-Image /MountDir:"c:\WinPE_amd64\mount" /commit

  • Generate winpe file.
MakeWinPEMedia /ISO c:\WinPE_amd64 c:\winpeauto.iso

  • Once required files are generated, delete WinPE_amd64 directory created in C drive then regenerate another winpe iso file for custom installation by using same steps.
  • Execute the below command to create working directories for Win PE.

copype amd64 C:\WinPE_amd64

  • Mount the image file and customize it as required.
Dism /Mount-Image /ImageFile:"C:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_amd64\mount"

  • Edit startup script startcmd.net and make the below changes.
notepad c:\WinPE_amd64\mount\Windows\System32\Startnet.cmd

  • Paste the following content in notepad.
wpeinit
net use Z: \192.168.0.101\winos\win10custom/user:pxiadmin "Your password without quotes"
Z:\setup.exe

  • Save the file and unmount the image.
Dism /Unmount-Image /MountDir:"c:\WinPE_amd64\mount" /commit
  • Generate winpe file
MakeWinPEMedia /ISO c:\WinPE_amd64 c:\winpecustom.iso

  • Once both files are generated copy the winpeauto.iso to /var/lib/tftpboot/networkboot-win10auto, and winpecustom.iso to /var/lib/tftpboot/networkboot-win10custom on the PXE server.
cp winpeauto.iso /var/lib/tftpboot/networkboot-win10auto
cp winpecustom.iso /var/lib/tftpboot/networkboot-win10custom

  • Create a auto answered xml file on the windows operating system by using Windows System Image Manager. The ADK (Assessment and Deployment Kit) comes with this package. I have already created the answered xml file you can use this file. Copy the file to /data/winos\win10auto
# cat autounattend.xml

<!--*************************************************
Installation Notes
Location: Your Location
Notes: Install Windows 10
**************************************************-->

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>4009:00004009</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-IN</UserLocale>
</component>
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>4009:00004009</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-IN</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Type>Primary</Type>
<Size>100</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>2</Order>
<Type>Primary</Type>
<Size>40960</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Extend>true</Extend>
<Order>3</Order>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>System Reserved</Label>
<Order>1</Order>
<PartitionID>1</PartitionID>
<TypeID>0x27</TypeID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>OS</Label>
<Letter>C</Letter>
<Order>2</Order>
<PartitionID>2</PartitionID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>DATA</Label>
<Letter>D</Letter>
<Order>3</Order>
<PartitionID>3</PartitionID>
</ModifyPartition>
</ModifyPartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>2</PartitionID>
</InstallTo>
<InstallToAvailablePartition>false</InstallToAvailablePartition>
</OSImage>
</ImageInstall>
<UserData>
<AcceptEula>true</AcceptEula>
<FullName>test</FullName>
<Organization>Your company name.</Organization>
<ProductKey>
<Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
</ProductKey>
</UserData>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Type>Primary</Type>
<Size>100</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>2</Order>
<Type>Primary</Type>
<Size>40960</Size>
</CreatePartition>
<CreatePartition wcm:action="add">
<Extend>true</Extend>
<Order>3</Order>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>System Reserved</Label>
<Order>1</Order>
<PartitionID>1</PartitionID>
<TypeID>0x27</TypeID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>OS</Label>
<Letter>C</Letter>
<Order>2</Order>
<PartitionID>2</PartitionID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Format>NTFS</Format>
<Label>DATA</Label>
<Letter>D</Letter>
<Order>3</Order>
<PartitionID>3</PartitionID>
</ModifyPartition>
</ModifyPartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>2</PartitionID>
</InstallTo>
<InstallToAvailablePartition>false</InstallToAvailablePartition>
</OSImage>
</ImageInstall>
<UserData>
<AcceptEula>true</AcceptEula>
<FullName>test</FullName>
<Organization>Your company name</Organization>
<ProductKey>
<Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
</ProductKey>
</UserData>
</component>
</settings>
<settings pass="offlineServicing">
<component name="Microsoft-Windows-LUA-Settings" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnableLUA>false</EnableLUA>
</component>
</settings>
<settings pass="offlineServicing">
<component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnableLUA>false</EnableLUA>
</component>
</settings>
<settings pass="generalize">
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipRearm>1</SkipRearm>
</component>
</settings>
<settings pass="generalize">
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipRearm>1</SkipRearm>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>4009:00004009</InputLocale>
<SystemLocale>en-IN</SystemLocale>
<UILanguage>en-IN</UILanguage>
<UILanguageFallback>en-IN</UILanguageFallback>
<UserLocale>en-IN</UserLocale>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>4009:00004009</InputLocale>
<SystemLocale>en-IN</SystemLocale>
<UILanguage>en-IN</UILanguage>
<UILanguageFallback>en-IN</UILanguageFallback>
<UserLocale>en-IN</UserLocale>
</component>
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
<component name="Microsoft-Windows-SQMApi" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CEIPEnabled>0</CEIPEnabled>
</component>
<component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CEIPEnabled>0</CEIPEnabled>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>localhost</ComputerName>
<ProductKey>W269N-WFGWX-YVC9B-4J6C9-T83GX</ProductKey>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>localhost</ComputerName>
<ProductKey>W269N-WFGWX-YVC9B-4J6C9-T83GX</ProductKey>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Password>
<Value>your password</Value>
<PlainText>true</PlainText>
</Password>
<Enabled>false</Enabled>
<Username>test</Username>
</AutoLogon>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<NetworkLocation>Home</NetworkLocation>
<SkipUserOOBE>true</SkipUserOOBE>
<SkipMachineOOBE>true</SkipMachineOOBE>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>your password</Value>
<PlainText>true</PlainText>
</Password>
<Description></Description>
<DisplayName>test</DisplayName>
<Group>Administrators</Group>
<Name>test</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<RegisteredOrganization>your company name</RegisteredOrganization>
<RegisteredOwner>test</RegisteredOwner>
<DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Description>Control Panel View</Description>
<Order>1</Order>
<CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v StartupPage /t REG_DWORD /d 1 /f</CommandLine>
<RequiresUserInput>true</RequiresUserInput>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>2</Order>
<Description>Control Panel Icon Size</Description>
<RequiresUserInput>false</RequiresUserInput>
<CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v AllItemsIconView /t REG_DWORD /d 0 /f</CommandLine>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>3</Order>
<RequiresUserInput>false</RequiresUserInput>
<CommandLine>cmd /C wmic useraccount where name="test" set PasswordExpires=false</CommandLine>
<Description>Password Never Expires</Description>
</SynchronousCommand>
</FirstLogonCommands>
<TimeZone>India Standard Time</TimeZone>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Password>
<Value>your password</Value>
<PlainText>true</PlainText>
</Password>
<Enabled>false</Enabled>
<Username>test</Username>
</AutoLogon>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<NetworkLocation>Home</NetworkLocation>
<SkipUserOOBE>true</SkipUserOOBE>
<SkipMachineOOBE>true</SkipMachineOOBE>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>your password</Value>
<PlainText>true</PlainText>
</Password>
<Description></Description>
<DisplayName>test</DisplayName>
<Group>Administrators</Group>
<Name>test</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<RegisteredOrganization>Your company name.</RegisteredOrganization>
<RegisteredOwner>test</RegisteredOwner>
<DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Description>Control Panel View</Description>
<Order>1</Order>
<CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v StartupPage /t REG_DWORD /d 1 /f</CommandLine>
<RequiresUserInput>true</RequiresUserInput>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>2</Order>
<Description>Control Panel Icon Size</Description>
<RequiresUserInput>false</RequiresUserInput>
<CommandLine>reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel" /v AllItemsIconView /t REG_DWORD /d 0 /f</CommandLine>
</SynchronousCommand>
<SynchronousCommand wcm:action="add">
<Order>3</Order>
<RequiresUserInput>false</RequiresUserInput>
<CommandLine>cmd /C wmic useraccount where name="test" set PasswordExpires=false</CommandLine>
<Description>Password Never Expires</Description>
</SynchronousCommand>
</FirstLogonCommands>
<TimeZone>India Standard Time</TimeZone>
</component>
</settings>
</unattend>

  • Copy the above XML contents to /data/winos/win10auto directory.

Create PXE menu file and start service [5]
  • Edit PXE menu file /var/lib/tftpboot/pxelinux.cfg/default and add the following changes.
# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
MENU TITLE example.local PXE Menu

LABEL WINDOWS 10 CUSTOM INSTALLATION
MENU LABEL ^WINDOWS 10 CUSTOM INSTALLATION
kernel memdisk
initrd /networkboot-win10custom/winpecustom.iso
append iso raw

LABEL WINDOWS 10 AUTO INSTALLATION
MENU LABEL ^WINDOWS 10 AUTO INSTALLATION
kernel memdisk
initrd /networkboot-win10auto/winpeauto.iso
append iso raw

  • Start and enable xinetd service and add firewall rule
# systemctl start xinetd
# systemctl enable xinetd
# firewall-cmd --add-port=69/udp --permanent
# firewall-cmd --reload

  • Restart all the services used for PXE server.
# systemctl restart smb nmb  dhcpd xinetd

IMP Note
In case of any difficulty in above configuration then disable the selinux and start testing.


You May Also Like

avatar

About the Author: TekFik

TekFik is a technical blogging site helps techies and engineers to solve their day to day issues and also allows everyone to share knowledge and feedback. Please feel free to contact us at tekfik.rd@gmail.com if there is anything.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *