1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。
2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到
消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
3. Client执行接收到的pxelinux.0文件。
4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作
5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。
7. Client启动Linux内核。
8. Client通过http或ftp下载镜像文件,读取ks.cfg自动化安装。
yum install –y httpd tftp-server dhcp xinetd syslinux system-config-kickstart vsftp
#说明:xinetd用于唤醒tftp,syslinux用于生成pxelinux文件,system-config-kickstart用于生成ks.cfg文件
编辑/etc/dhcp/dhcpd.conf,增加如下代码段
default-lease-time 259200;
max-lease-time 518400;
option domain-name-servers 202.101.172.35;
# Use this to send dhcp log messages to a different log file
log-facility local7;
###192.168.159.0为本机ip所在网段
subnet 192.168.159.0 netmask 255.255.255.0 {
range 192.168.159.140 192.168.159.240;#dhcp网段
option routers 192.168.159.132; #为本机ip
option subnet-mask 255.255.255.0;
next-server 192.168.159.132; #为本机ip
# the configuration file for pxe boot
filename "pxelinux.0";
}
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
}
#配置http
cd /etc/httpd/conf.d/ #进入http配置文件目录
#移除并备份conf文件,目的不显示测试页面
mv autoindex.conf autoindex.conf.bak
mv userdir.conf userdir.conf.bak
mv welcome.conf welcome.conf.bak
#http挂载目录文件准备
mkdir /var/www/html/centos #目录可自定义
mount ~/CentOS-7-x86_64-DVD-1611.iso /var/www/html/centos
#将事先准备好的镜像文件挂载到http指定目录下
配置ftp
mount ~/CentOS-7-x86_64-DVD-1611.iso /var/ftp/pub #挂载目录,若不存在该目录可创建
cd /var/www/html/ #进入http装机目录,与上面/var/www/html/centos挂载目录相对应
vim ks.cfg #编辑ks.cfg
#Kickstart file automatically generated by anaconda.
#version=DEVEL
install
# Use graphical install
text #使用命令行界面安装
# Run the Setup Agent on first boot
url --url="http://192.168.159.132/centos"
#http方式安装目录 对应/var/www/html/centos 192.168.159.132为pxe装机机器ip
lang en_US.UTF-8 #设置语言
keyboard us #设置键盘样式
network --onboot=yes --noipv6 --ip=192.168.159.256 --netmask=255.255.255.0 --gateway=192.168.159.2
#设置网络
# Root password
rootpw root
#设置root密码 明文密码root
firewall –disabled #禁止开机使用防火墙
# System authorization information
authconfig --enableshadow --passalgo=sha512
selinux –disabled #设置selinux禁用
timezone --utc Etc/GMT+8 #设置时区
#Clear the Master Boot Record
zerombr
# 新硬盘需要创建mbr,指定位置为sda
bootloader --location=mbr --driveorder=sda
#删除所有分区
clearpart --all --initlabel
#创建分区 大小可自定义
part / --asprimary --fstype="xfs" --size=10240
part swap --asprimary --fstype="swap" --size=2048
part /opt --asprimary --fstype="xfs" --grow --size=1
reboot
%packages
@core
%end
#说明:以上仅为ks.cfg一部分,还有其他参数可添加做设置
编辑ks.cfg,与http基本一致,只需要修改装机方式
将url –url=http://本机ip/centos改为
url –url=ftp://本机ip/pub即可
tree -aL 2 /var/www/html/
tree -aL 2 /var/ftp/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /var/www/html/centos/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /var/www/html/centos/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/
default vesamenu.c32
timeout 60
display boot.msg
label linux
menu label ^Install CentOS7
kernel vmlinuz
append initrd=initrd.img ks=http://本机ip/ks.cfg
default vesamenu.c32
timeout 60
display boot.msg
label linux
menu label ^Install CentOS7
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.159.132/ks.cfg
iptables –F #清空防火墙规则
systemctl start httpd.service
systemctl enable httpd.service #开机启动
systemctl start dhcpd.service
systemctl enable dhcpd.service
systemctl start xinetd.service
systemctl enable xinetd.service
systemctl start tftp.socket
systemctl enable tftp.socket
systemctl start tftp.service
systemctl enable tftp.service
systemctl start vsftp.service
systemctl enable vsftp.service
http://本机IP
ftp://本机IP
该问题基本出现在虚拟机测试时,磁盘空间不足。这与ks.cfg文件中的分区大小和虚拟机创建时的磁盘大小有关,若出现该错误可加大虚拟机的磁盘大小即可
可查看命令行界面报错提示,相应解决