PXE(预启动执行环境)是由inter公司开发的技术,可以让计算机通过网络来启动操作系统(前提是网卡支持pxe技术),主要用于在无人值守安装系统中引导客户端主机安装linux操作系统,kickstart是一种无人值守的安装方式,工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数是则自动匹配,kickstart生成的文件,所有只要kickstart文件包含了安装过程中需要人工填写的所有参数,从理论上来讲完全不需要人工干预。
PXE的工作过程
1.pxe Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
2.DHCP服务器返回分配给客户端的ip*以及PXE文件的放置位置(该文件一般是放在TFTP服务器上);
3.PXE Client 向本网络中的TFTP服务器索取pxelinux.0文件;
4.PXE Client取得pxelinux.0文件后执行该文件;
5.根据pexlinux.0的执行结果,通过TFTP服务器加载内核和文件系统;
6.进入安装画面,此时可以通过选择HTTP/FTP/NFS方式之一进行安装;
Kickstart安装需求
1.网卡必须支持PXE引导;
2.客户端需要有与kickstart通信的IP地址,这个一般通过DHCP自动分配IP地址来实现;
3.提供引导所需的文件,内核文件,内核镜像文件等,此时一般通过tftp-server等实现。
4.kickstart文件,它主要实现自动化安装的过程,比如配置主机名,添加用户,安装系统后相关操作;
5.提供安装源,一般就是HTTP/HTTPS/NFS/FTP等方式;
综合上述需要的工具:dhcp+tftp+syslinux+kickstart+httpd
PXE服务器配置案例
环境介绍
服务器系统:Centos7.3
网卡地址:192.168.10.50
光盘镜像:CentOS-7-x86_64-DVD-1810.iso
安装工具:dhcp+ftp+syslinux+kickstart+httpd
配置步骤
1.挂载系统光盘到/mnt/,并搭建httpd共享yum源。
mount /dev/cdrom /mnt //挂载本地yum到mnt目录下面
mkdir /yum
cp -rf /mnt/* /yum/ //复制mnt下面的安装包到yum下面做httpd的共享仓库
2.使用yum安装需要的服务dhcp,tftpserver,syslinux, kickstart,httpd
yum -y install dhcp httpd tftp-server syslinux system-config-kickstart //使用yum安装需要的软件包
3.配置httpd服务并启动dhcpd
vim /etc/httpd/conf/httpd.conf //编辑httpd的主配置文件(在119~131行左右)
DocumentRoot "/yum"
#
# Relax access to content within /var/www.
#
<Directory "/yum">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
# Further relax access to the default document root:
<Directory "/yum">
修改完配置后保存退出,重启服务
systemctl restart httpd
4.配置dhcp服务器并启动
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //复制模板文件到主配置文件或者进入文件在末行位置写:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
vim /etc/dhcp/dhcpd.conf //编辑主配置文件
subnet 192.168.40.0 netmask 255.255.255.0 {
range 192.168.40.10 192.168.40.100;
option domain-name-servers 114.114.114.114;
option domain-name "baidu.com";
option routers 192.168.40.1;
option broadcast-address 192.168.40.255;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.40.10; //IP地址不加引号,设置tfpt地址
filename "pxelinux.0"; //设置pxe引导文件名称
}
重启dhcpd服务
systemctl restart dhcpd ##启动dhcpd服务
5.编辑tfpt配置文件开启tftp并重启服务
vim /etc/xinetd.d/tftp //编辑tftp配置文件
{
server_args = -s /var/lib/tftpboot //可以更改默认的存放路径。
disable = yes //将yes改为no
启动tftp服务
systemctl restart tftp //启动tftp服务程序
6.准备内核,初始化镜像,pxe引导,启动菜单二五年间复制到tftp目录,tftp的默认根目录为/var/lib/tftpboot/
内核和初始化文件:vmlinuz和initrd.img,文件光盘目录的/yum/images/pxeboot目录下面;
2.PXE引导文件:pxelinux.0由syslinux软件提供,目录在/usr/share/syslinux/目录下面;
3.启动菜单文件:在光盘/yum/isolinux/isolinux.cfg,复制后更名default;
cp {initrd.img,vmlinuz} /var/lib/tftpboot/ //将初始化文件和内核文件放到tftp目录下面
cp /usr/share/syslinux/pxelinux.0 ./ //将pxe引导文件复制到gftp的当前目录下面
mkdir pxelinux.cfg //在tftp的根目录下面创建启动菜单目录
cp /yum/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default //将启动菜单模板复制到tftp根目录的pxelinux.cfg目录下,改名为default
vim default //编辑当前目录下面的启动菜单文件
------------修改一下的内容-----------
原1行 default vesamenu.c32
改1行 default linux
原64行 append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
改64行 append initrd=initrd.img inst.stage2=http://192.168.10.40/ ks=http://192.168.10.40/ks.cfg quiet
注意:第一行的linux的名字要和61行linux名字一样,否则会出错。
7.安装kickstart工具生成自动应答文件或者编辑一个自动应答文件,将其保存到共享文件/yum/下面。
vim /yum/ks.cfg //编辑自动应答文件
-----------添加一下内容------------
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
keyboard 'us' //设置键盘语言
rootpw --iscrypted $1$h1IxYj45$nq11vzBP03rGhraxbtgCL0 //设置管理员密码
url --url="http://192.168.10.40/" //设置安装源的路径httpd
lang zh_CN //设置安装语言为中文
firewall --disabled
auth --useshadow --passalgo=sha512
graphical
firstboot --disable //设置防火墙为关闭
selinux --disabled //设置selinx为关闭
network --bootproto=dhcp --device=ens33 //设置网卡的ip获取类型和网卡的名称
reboot //设置安装成功之后自动重启
timezone Asia/Shanghai //设置时区为亚洲上海
bootloader --location=mbr
clearpart --all
part / --fstype="xfs" --size=20000 //设置磁盘挂载位置和分配磁盘大小15G
%packages //到end结束是复制anaconda中的安装脚本
@desktop-debugging
@fonts
@gnome-desktop
@graphical-admin-tools
@graphics
@input-methods
@kde-desktop
@legacy-x
@remote-desktop-clients
@system-management
@x11
gnome-disk-utility
gnome-packagekit
setroubleshoot
vinagre
xterm
%end
8.重启 dhcpd httpd tftp 服务,然后关闭防火墙和selinux
systemctl restart dhcpd httpd tftp //重启dhcpd httpd tftp服务
systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭selinxu
9.新建虚拟机将网络和服务器改为同一模式,开机验证是否成功!!!!
PXE常见故障
故障一:如果客户机开机可以获取到ip,但是提示pxe-e11:arp-timeout
解决办法:查看next-server的ip地址是否正确
故障二:如果使用system-config-kickstart工具选择软件包提示由于下载软件包失败
解决办法:将本地yum源的第一项 [***] 改为 [development]
故障三:如果在测试机快要加载完毕的时候出现Pane is dead
解决办法:看defalut文件第64行否则缺少内容。ks=http://IP地址。