1, What is pxe
The full name of PXE is preboot execute environment. It is actually a standard proposed by Intel a long time ago for booting the system through the network. Allow the client to download the boot image from the remote server through the network and load the installation file or the entire operating system.
There are three boot modes for system installation: hard disk, optical drive and network
pxe is booted through the network card
1.1 hardware conditions for implementation
1.BIOS support
2. Network card support (now basically supported)
3. The switch needs to be turned on in the bios, but the server is not turned on (it is turned on in the bmc interface)
4. There is a DHCP server in the network to automatically assign addresses and specify boot file locations for clients
5. The server provides downloading of system kernel and boot image through tftp service (simple file transfer protocol)
2, pxe advantages
1. Scale: assemble multiple servers at the same time
2. Automation: install the system and configure various services
3. Remote implementation: No CD, U SB flash disk and other installation media are required
3, Operation process
Approximate process
- Address (profile) assigned to new machines in the same LAN
- Start tftp server
- Install syslinux to obtain pxelinux.0 files, and vsftpd services
- Mount the installation source (mount /dev/sr0 /var/ftp/centos7)
- Copy the four files into / var/lib/tftpboot (initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz)
- Turn on the service, turn off the firewall and selinux
Specific operation steps:
Add a network card, set it to host only mode, and change the / etc / sysconfig / network scripts / ifcfg-ens37 file
Install dhcp
[root@localhost ~]# yum install -y dhcp
If the process is occupied, delete the process
[root@localhost ~]# rm -rf /run/yum.pid
Copy the configuration file template to the dhcp directory
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf # #DHCP Server Configuration file. #see /usr/share/doc/dhcp*/dhcpd.conf.example #see dhcpd.conf(5) man page # [root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp: Overwrite"/etc/dhcp/dhcpd.conf"? y
Edit the / etc / DHCP / DHCP pd.conf file to add your own network segment
subnet 192.168.126.0 netmask 255.255.255.0 { range 192.168.126.10 192.168.126.50; option routers 192.168.126.1; next-server 192.168.126.100; filename "pxelinux.0"; }
Install TFTP server
[root@localhost ~]# yum install -y tftp-server
[root@localhost ~]# rpm -ql tftp-server /etc/xinetd.d/tftp /usr/lib/systemd/system/tftp.service /usr/lib/systemd/system/tftp.socket /usr/sbin/in.tftpd /usr/share/doc/tftp-server-5.2 /usr/share/doc/tftp-server-5.2/CHANGES /usr/share/doc/tftp-server-5.2/README /usr/share/doc/tftp-server-5.2/README.security /usr/share/man/man8/in.tftpd.8.gz /usr/share/man/man8/tftpd.8.gz /var/lib/tftpboot
Edit / etc/xinetd.d/tftp and change the disable d yes to no
[root@localhost ~]# vim /etc/xinetd.d/tftp
Install syslinux
[root@localhost ~]# yum install -y syslinux
Locate the / usr/share/syslinux/pxelinux.0 file
[root@localhost ~]# rpm -ql syslinux |grep pxelinux.0 /usr/share/syslinux/gpxelinux.0 /usr/share/syslinux/pxelinux.0
Copy this file to the / var/lib/tftpboot / directory
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@localhost ~]# cd /var/lib/tftpboot/ [root@localhost tftpboot]# ls pxelinux.0
Install vsftpd
[root@localhost tftpboot]# yum install -y vsftpd
cd to / var/ftp / directory and create a new centos7 directory
[root@localhost tftpboot]# cd /var/ftp/ [root@localhost ftp]# ls pub [root@localhost ftp]# mkdir centos7
Mount / dev/sr0 to the / var/ftp/centos7 directory
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/ mount: /dev/sr0 Write protected, will mount as read-only
[root@localhost ftp]# cd centos7/ [root@localhost centos7]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@localhost centos7]# cd images/ [root@localhost images]# ls efiboot.img pxeboot TRANS.TBL [root@localhost images]# cd pxeboot/ [root@localhost pxeboot]# ls initrd.img TRANS.TBL vmlinuz
Copy initrd.img and vmlinuz in the directory to / var/lib/tftpboot /
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
Enter the / var/lib/tftpboot / directory to create a folder named pxelinux.cfg, and enter the pxelinux.cfg folder to create and edit the default file
[root@localhost pxeboot]# cd /var/lib/tftpboot/ [root@localhost tftpboot]# ls initrd.img pxelinux.0 vmlinuz [root@localhost tftpboot]# mkdir pxelinux.cfg [root@localhost tftpboot]# cd pxelinux.cfg/ [root@localhost pxelinux.cfg]# vim default
Add information to it
default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.126.100/centos7 label linux text kernel vmlinuz append text initrd =initrd.img method=ftp://192.168.126.100/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.126.100/centos7
Start three services, turn off the firewall and selinux, and then you can call semi-automatic
[root@localhost pxeboot]# systemctl stop firewalld.service [root@localhost pxeboot]# systemctl start dhcpd [root@localhost pxeboot]# systemctl start tftp [root@localhost pxeboot]# systemctl start vsftpd [root@localhost pxeboot]# setenforce 0
4, kickstart unattended installation
Install kickstart
[root@localhost ~]# yum install -y system-config-kickstart.noarch
Then enter the virtual machine and you can see that kickstart has been successfully installed
Add the root password, change the time zone to Shanghai, and check the restart after installation option
ftp mode is selected in the installation method. The server is its own IP address and the directory is centos7
The boot loader option selects to install a new boot loader
Delete all three partitions, and then add three partitions
Add a network card named ens33 to the network configuration
Firewall selection disabled
Then save the file in / var/ftp
You can see that the file already exists
[root@localhost tftpboot]# cd /var/ftp/ [root@localhost ftp]# ls centos7 ks.cfg pub [root@localhost ftp]#
Copy some information from anaconda-ks.cfg in the home directory to ks.cfg
[root@localhost ftp]# vim ~/anaconda-ks.cfg %packages @^gnome-desktop-environment @base @core @desktop-debugging @dial-up @directory-client @fonts @gnome-desktop @guest-agents @guest-desktop-agents @input-methods @internet-browser @java-platform @multimedia @network-file-system-client @networkmanager-submodules @print-client @x11 chrony kexec-tools %end
Enter / var/lib/tftpboot/pxelinux.cfg, edit the default file, and add ks=ftp after the first label:/
/192.168.126.100/ks.cfg
default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.126.100/centos7 ks=ftp:/ /192.168.126.100/ks.cfg label linux text kernel vmlinuz append text initrd =initrd.img method=ftp://192.168.126.100/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.126.100/centos7
At this time, create a new virtual machine, set the memory to about 4G, set the network card to host only mode, turn on the machine, and press enter after seeing boot to automatically install the system.