一、PXE的基本概念:
PXE(preboot execute environment,预启动执行环境)是有intel公司开发的新技术,工作在client/server的网络模式下,支持工作站通过网络从远端服务器下载镜像文件,并由此支持通过网络启动嗯操作系统; 在启动过程中,终端要求服务器分配ip地址,再用TFTP(trivial file transfer protocol)协议从服务端下载一个启动软件包到本机的内存中,由这个启动软件包完成终端的基本软件设定,从而引导预先安装在服务端的操作系统。PXE可以引导多种操作系统,如:windows95/98/2000/windows2003/windows2008/windows XP/win 7/win8以及linux等。
二、搭建PXE服务环境:
本实验演示了如何搭建pxe服务环境,其中包括dhcp、tftp、httpd服务的搭建。大概思路是:首先客户端通过网卡启动,通过与服务端的dhcp服务交互获得ip地址、gateway、dns等信息的同时,通过TFTP协议获得服务器上的pxelinux.0这个启动软件,由该启动软件引导到提前放置再阿帕旗服务上的系统镜像和自动安装文件ks.cfg,从而实现无需安装光盘和U盘镜像,就可安装系统,且自动安装系统,且大批量自动安装系统。
下面我们开始实验:
(一):配置本地yum源
首先设置服务器的主机名及ip地址:
配置本地yum源:
(二)安装dhcpd服务以及配置dhcpd服务的动态分配ip地址
下载dhcpd服务:
配置dhcp的主配置文件,实现动态分配ip地址的功能:
配置域名服务器的域名以及地址:
删除下图的两行内容:
配置动态ip地址池和网管:
删除35行以后的所有内容:
开启dhcpd服务:
[root@pxe-server dhcp]# systemctl start dhcpd
[root@pxe-server dhcp]# systemctl enable dhcpd
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
[root@pxe-server dhcp]# systemctl enable dhcpd
(三)在服务端下载引导文件和TFTP服务:
1)下载引导软件:
软件的名字如下图:
[root@pxe-server /]# yum install syslinux-extlinux -y
下载完后找到软件中两个重要的文件:
[root@pxe-server /]# rpm -ql syslinux
下图阴影部分的文件为该软件的使用帮助手册:
下图阴影部分的文件为我们要用的引导文件:
2)下载TFTP服务:
[root@pxe-server /]# yum install tftp-server -y
[root@pxe-server tftpboot]# vim /etc/xinetd.d/tftp
[root@pxe-server tftpboot]# systemctl restart xinetd.service
[root@pxe-server tftpboot]# chkconfig --list
(四)按照帮助手册pxelinux.txt做如下操作,使TFTP协议传输引导程序到客户端:
[root@pxe-server tftpboot]# pwd
/var/lib/tftpboot
[root@pxe-server tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ ###将引导文件复制到TFTP服务的tftpboot目录下
[root@pxe-server tftpboot]# ls
pxelinux.0
[root@pxe-server tftpboot]# mkdir pxelinux.cfg ### 在tftpboot目录下创建目录pxelinux.cfg
[root@pxe-server tftpboot]# ls
pxelinux.0 pxelinux.cfg
[root@pxe-server dhcp]# cd /rhel7.0/ ### 切换到本地yum源的挂载目录中
[root@pxe-server rhel7.0]# ls
addons GPL LiveOS release-notes RPM-GPG-KEY-redhat-release
EFI images media.repo repodata TRANS.TBL
EULA isolinux Packages RPM-GPG-KEY-redhat-beta
[root@pxe-server rhel7.0]# cd isolinux/ ### 这是镜像文件和引导有关的文件的目录
[root@pxe-server isolinux]# ls
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vesamenu.c32
boot.msg initrd.img isolinux.cfg splash.png upgrade.img vmlinuz
[root@pxe-server isolinux]# pwd
/rhel7.0/isolinux
[root@pxe-server isolinux]# cp -r ./* /var/lib/tftpboot/ #### 将该目录下的所有文件移动到tftpboot目录下
(五)配置dhcpd服务,使通过分配动态ip地址的数据包将引导文件所在的位置报告给客户端:
[root@pxe-server tftpboot]# vim /etc/dhcp/dhcpd.conf
添加下图阴影部分的两行内容:
[root@pxe-server tftpboot]# systemctl restart dhcpd
测试:
首先关闭防火墙:
[root@pxe-server tftpboot]# systemctl stop firewalld.service
在真机中打开另外一台虚拟机:
[root@foundation62 ~]# virt-manager
将提供引导的设备更改为网卡:
现在启动这台虚拟机来测试刚才的配置是否生效:
## 首先主机在请求dhcp服务器获取ip地址等信息:
## 收到dhcp服务器的应答,获得ip地址等信息,同时获得引导pxelinux.0引导文件的位置,并通过tftp协议下载了该引导文件:
成功引导到安装选择界面:
(六)搭建httpd服务,将镜像文件放置到阿帕旗服务的家目录下:
1) 搭建httpd服务:
[root@pxe-server tftpboot]# yum install httpd -y
[root@pxe-server tftpboot]# systemctl start httpd
[root@pxe-server tftpboot]# systemctl enable httpd
[root@pxe-server tftpboot]# systemctl enable httpd
2)搭建网络共享yum源,为客户端提供系统镜像:
[root@pxe-server tftpboot]# mkdir /var/www/html/rhel7.0
[root@pxe-server tftpboot]# mount /dev/sr0 /var/www/html/rhel7.0/
[root@pxe-server tftpboot]# vim /etc/yum.repos.d/yum.repo
[root@pxe-server tftpboot]# yum clean all
(七) 制作linux系统的自动安装工具,并将其放置到httpd服务的目录下:
[root@pxe-server tftpboot]# yum install system-config-kickstart -y
打开该工具:
[root@pxe-server tftpboot]# system-config-kickstart
先配置第一个窗口的选项,主要是配置root密码:
第二项为安装方式,显然选择HTTP的方式,且镜像文件在http://172.25.254.113/rhel7.0:
第三项选择选择安装一个新的引导:
第四项是有关分区的配置:
# 主引导记录、分区、分区表的配置按下图:
# 添加/boot分区 swap分区 以及/分区:
第五项是网络配置,按下图配置:
其它选项按默认选择即可。
现在将该文件保存到/var/www/html目录下,然后关闭该窗口:
还需要在该文件中添加配置内容:
[root@pxe-server tftpboot]# cd /var/www/html/
[root@pxe-server html]# ls
ks.cfg rhel7.0
[root@pxe-server html]# vim ks.cfg
检查ks.cfg文件有没有语法错误,使用下面的命令:
[root@pxe-server html]# ksvalidator ks.cfg
现在在浏览器中测试该自动安装系统的文件是否成功上传到httpd服务上,如下图表示上传成功:
(八) 配置引导文件 default
[root@pxe-server pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg
[root@pxe-server pxelinux.cfg]# ls
default
[root@pxe-server pxelinux.cfg]# ll
total 4
-r--r--r-- 1 root root 3166 Nov 17 03:36 default
[root@pxe-server pxelinux.cfg]# chmod 644 default
[root@pxe-server pxelinux.cfg]# vim default
我们这里做简单的几处配置,使能正常安装系统即可:
#第一处,缩短安装系统时选择进入镜像的哪种工作模式的考虑时间:
下图的50表示5秒的意思:
效果如下图,最下方的倒计时变为了5秒:
## 第二处,修改显示的标题:
效果如下图:
## 第三处,配置系统镜像在网络中的路径以及自动安装系统文件在网络上的路径:
## 第四处,将 “ Install Red Hat Enterprise Linux 7.0 “ 设置为默认选项,配置如下:
(九) 测试实验结果:
打开要安装系统的虚拟机:
引导的设备选择网卡引导:
向DHCP服务器索要ip地址等信息:
客户端得到ip地址等相关信息,同时得到了引导文件的路径,并通过TFTP服务下载了该引导:
通过引导程序到达了安装镜像的模式选择的界面,默认选择直接开始安装:
载入内核文件和系统初始化环境文件:
httpd服务器上的kickstart工具开始自动安装系统:
httpd服务器上的iso镜像文件的数据被客户端获取到,然后利用该iso镜像文件资源安装客户端的系统:
现在耐心等待...... ......
如下图显示已经安装完成:
现在我们关闭该虚拟机,将引导设备修改回磁盘引导:
然后再次开启该虚拟机,然后提示输入用户名和密码:
我们使用设置的root用户和密码登陆系统,如下图表明系统安装成功,可以正常时用: