PXE介紹
Preboot Excution Environment 預啟動執行環境
Intel 公司研發
基于Client/Server的網絡模式,支持遠程主機通過網絡從遠端服務器下載映像,并由此支持通過網絡啟動操作系統
PXE可以引導和安裝Windows,linux等多種操作系統
PXE工作原理

Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一并傳送給Client
Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息之后再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的同意大小信息之后,正式向Client發送pxelinux.0
Client執行接收到的pxelinux.0文件
Client向TFTP Server發送針對本機的配置信息文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行后續操作。
Client向TFTP發送Linux內核請求信息,TFTP接收到消息之后將內核文件發送給Client
Client向TFTP發送根文件請求信息,TFTP接收到消息之后返回Linux根文件系統
Client啟動Linux內核
Client下載安裝源文件,讀取自動化安裝腳本
PXE自動化安裝CentOS 7
1.關閉防火墻和SElinux
# systemctl stop firewalld.service
# setenforce 0
SELinux 配置文件:
vim /etc/sysconfig/selinux
SELINUX=disabled
2.安裝程序包(tftp-server,http,dhcp,syslinux),啟動服務并設置為開機自啟動
# yum install dhcp tftp-server syslinux http
# systemctl enable dhcpd tftp httpd
# systemctl start httpd tftp.socket
# rpm -ql dhcp 查看配置文件: /etc/dhcp/dhcpd.conf
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# vim /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option routers 192.168.1.254; #指定網關
option domain-name-servers 223.5.5.5, 114.114.114.114; #指定域名服務器
next-server 192.168.1.5; #指定獲取系統引導文件的服務器IP(tftp)
filename “pxelinux.0”; #引導文件名稱
}
補充:dhcpd服務需要修改配置文件才可啟動
# systemctl start dhcpd
# ss -tunlp 來查看對應的服務端口是否打開(dhcpd:67(dhclient: 68) tftp:69 httpd:80)
3.創建光盤掛載點和ks文件目錄
# mkdir /var/www/html/centos/{6,7} -pv
# mkdir /var/www/html/ksdir/{6,7} -pv
# vim /etc/fstab
/dev/sr0 /var/www/html/centos/6/ iso9660 defaults 0 0 (Centos7光盤)
/dev/sr1 /var/www/html/centos/7/ iso9660 defaults 0 0 (Centos6光盤)
# mount -a
# df -h 查看是否掛載成功
# cat /var/www/html/ksdir/6/ks_centos6.cfg(chmod +r ks_centos6.cfg)
ks_centos6.cfg(Mini)
*****************************************************************************************************
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url –url=http://192.168.1.5/centos/6
lang en_US.UTF-8
keyboard us
network –onboot yes –device eth0 –bootproto dhcp –noipv6 –nameserver 8.8.8.8 –hostname centos6.localdomain
rootpw –iscrypted $6$NjFYm33MgYv/N9I6$wqynBfE5UfImxskNKNSII0jdo/1pp8BxMrO2cwZJxfJUbheSNdvAqgOpaJegzO.SRvACIswIHsWw4FAzD92RY0
firewall –disabled
authconfig –enableshadow –passalgo=sha512
selinux –disabled
timezone Asia/Shanghai
bootloader –location=mbr –driveorder=sda –append=”crashkernel=auto rhgb quiet”
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
zerombr
clearpart –all
part /boot –fstype=ext4 –size=500
part / –fstype=ext4 –size=20000
part /data –fstype=ext4 –size=20000
part swap –size=2048
reboot
%packages
@core
@server-policy
@workstation-policy
%end
******************************************************************************************************
# cat /var/www/html/ksdir/7/ks_centos7.cfg(chmod +r ks_centos7.cfg)
ks_centos7.cfg(Mini)
******************************************************************************************************
#version=DEVEL
# System authorization information
auth –enableshadow –passalgo=sha512
# Use CDROM installation media
url –url=http://192.168.1.5:/centos/7
# Use graphical install
text
# Run the Setup Agent on first boot
firstboot –enable
ignoredisk –only-use=sda
# Keyboard layouts
keyboard –vckeymap=us –xlayouts=’us’
# System language
lang en_US.UTF-8
selinux –disabled
firewall –disabled
# Network information
network –bootproto=dhcp –device=ens33 –onboot=on –ipv6=auto –activate
network –hostname=centos7.localdomain
# Root password
rootpw –iscrypted $6$gBxf9D1qFAeD4TiK$rAZGNzOE3TFWE7x.dPk6zmwGT4QzGko9QdIK4cofzhTvAIAeqxcJYCL7d8JAHWQYkUQ57R/iiJoTIXHugOZYy0
# System services
services –disabled=”chronyd”
# System timezone
timezone Asia/Shanghai –isUtc –nontp
# System bootloader configuration
bootloader –append=” crashkernel=auto” –location=mbr –boot-drive=sda
autopart –type=lvm
# Partition clearing information
zerombr
clearpart –all
reboot
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump –enable –reserve-mb=’auto’
%end
%anaconda
pwpolicy root –minlen=6 –minquality=1 –notstrict –nochanges –notempty
pwpolicy user –minlen=6 –minquality=1 –notstrict –nochanges –emptyok
pwpolicy luks –minlen=6 –minquality=1 –notstrict –nochanges –notempty
%end
******************************************************************************************************
4.tftp服務器分別創建centos6和centos7文件夾,并復制系統引導文件至tftp服務器
# mkdir /var/lib/tftpboot/centos{6,7}
# cp /var/www/html/centos/7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos7
# cp /var/www/html/centos/6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos6
5.創建pxelinux.cfg文件夾,復制syslinux 軟件包中的pxelinux.0 引導文件和菜單背景圖片
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
# cp /var/www/html/centos/6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# cat /var/lib/tftpboot/pxelinux.cfg/default
*************************************************************************************
default menu.c32
#prompt 1
timeout 600
menu title Welcome to Install CentOS System!
label Centos6_mini
menu label ^Install Centos ^6 Mini System
kernel centos6/vmlinuz 注意此處與下處的路徑(相對于pxelinux.cfg文件夾所在的路徑)
append initrd=centos6/initrd.img ks=http://192.168.1.5/ksdir/6/ks_centos6.cfg
label Centos7_mini
menu label Install Centos ^7 Mini System
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://192.168.1.5/ksdir/7/ks_centos7.cfg
label local
menu label Boot from ^local drive
localboot 0xffff
menu end
**************************************************************************************
6.創建新的虛擬機并通過網卡來引導系統
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99599