PXE装机自动化

1.pxe装机原理图

PXE工作原理示意图说明:

PXE装机自动化_第1张图片
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自动化安装。

2.PXE装机步骤

(1) 下载必要工具
yum install –y  httpd tftp-server dhcp xinetd syslinux system-config-kickstart vsftp
#说明:xinetd用于唤醒tftp,syslinux用于生成pxelinux文件,system-config-kickstart用于生成ks.cfg文件
(2)配置dhcp

编辑/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";
       }
(3) 配置tftp
编辑/etc/xinetd.d/tftp,将disable=yes 改成disabservice
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
} 

(4) 选择装机方式

a.http方式
#配置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指定目录下
b.ftp方式
配置ftp
mount ~/CentOS-7-x86_64-DVD-1611.iso /var/ftp/pub #挂载目录,若不存在该目录可创建
(5)配置ks.cfg文件
a.如果以上选择http装机
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一部分,还有其他参数可添加做设置

b.如果以上选择ftp装机

c. cd /var/ftp #进入ftp装机目录,与上面/var/ftp/pub挂载目录相对应


编辑ks.cfg,与http基本一致,只需要修改装机方式
将url –url=http://本机ip/centos改为
url –url=ftp://本机ip/pub即可

(6) 查看http目录结构

tree -aL 2 /var/www/html/

(7) 查看ftp目录结构

tree -aL 2 /var/ftp/

(8) tftp目录文件准备

http安装方式

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/
(9) 编辑/var/lib/tftpboot/pxelinux.cfg/default 文件
http装机方式
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
ftp装机方式
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
(10)启动服务
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
(11) 访问浏览器
http://本机IP
ftp://本机IP
3.问题总结
(1)装机时出现No space left on device

该问题基本出现在虚拟机测试时,磁盘空间不足。这与ks.cfg文件中的分区大小和虚拟机创建时的磁盘大小有关,若出现该错误可加大虚拟机的磁盘大小即可

(2)创建过程中错误

可查看命令行界面报错提示,相应解决

(3)仔细检查ks.cfg和default的语法错误

你可能感兴趣的:(技术总结)