一、什么是PXE
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,PXE可以引导多种操作系统,如Windows95/98/2000/windows2003,linux系列等
二、自动安装原理
1.客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP
2.DHCP服务器返回分给客户机IP
3.客户机向本网络中的TFTP服务器索取文件
4.客户机取得bootstrap文件后之执行引导文件完成引导
5.然后读取配置文件,通过TFTP服务器加载内核和文件系统
6.进入安装画面, 此时可以通过选择HTTP、FTP、NFS方式进行安装
PXE网络安装必需的4个要素:
1.客户机的网卡必须为PXE网卡
2.网络中必须要有DHCP和TFTP服务器,当然这两个服务器可以是同一台物理主机
3.所安装的操作系统必须支持网络安装
4.必须要有FTP,HTTP,NFS至少一个服务器,当然也可以和DHCP和TFTP服务器同为一台物理主机
三、PXE实现自动化网络安装Linux系统实验
服务器——虚拟机 desktop(172.25.254.127)
真机——foundation61(172.25.254.61)
测试机——虚拟机 node1
镜像:rhel7.0(本实验rhel7.0镜像在/var/www/html/rhel7.2目录下挂载,请读者不要误解。)
1、配置dhcp
(1)安装dhcp
[root@pxe ~]# yum install dhcp -y
(2)复制dhcp文件模板
[root@pxe ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
(3)编辑文件
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
(4)重启dhcp服务
[root@pxe ~]# systemctl restart dhcpd
2、安装syslinux
[root@pxe ~]# yum install syslinux -y
3、安装tftp-server
[root@pxe ~]# yum install tftp-server -y
4、生成安装头文件
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
5、tftp服务启用,是通过改变其守护进程来启用的
(1)使用chkconfig,可以看到tftp服务没有启用
[root@pxe ~]# chkconfig
(2)打开守护进程服务
[root@pxe ~]# systemctl start xinetd.service
(3)将disable呢一行改成no,表示启用tftp服务,保存退出
[root@pxe ~]# vim /etc/xinetd.d/tftp
(4)重启服务
[root@pxe ~]# systemctl restart xinetd.service
tftp服务已启用了
6、编辑dhcp配置文件
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
重启服务
[root@pxe ~]# systemctl restart dhcpd
7、关闭火墙
[root@pxe ~]# systemctl stop firewalld
8、测试(用另外一个虚拟机测试)
设置客户机从网卡启动
[root@foundation61 kiosk]# virt-manager
此时没有预安装界面
9、设定共享文件
(1)在pxe服务器上,我们现在来创建配置文件
[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# ls
pxelinux.0
[root@pxe tftpboot]# vim pxelinux.0
[root@pxe tftpboot]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# ls
pxelinux.0 pxelinux.cfg
(2)在真机上,查看镜像,因为安装时是从镜像安装的,所以需要从镜像中导入所有的安装的文件
[root@foundation61 kiosk]# cd /var/www/html/rhel7.2/isolinux/
[root@foundation61 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@foundation61 isolinux]# scp * [email protected]:/var/lib/tftpboot
(3)在pxe服务器上
将isolinux.cfg复制到目录pxelinux.cfg下,并重命名为desault
这是因为文件中指定读取pxelinux.cfd中default的内容
[root@pxe tftpboot]# ls
boot.cat initrd.img memtest splash.png vesamenu.c32
boot.msg isolinux.bin pxelinux.0 TRANS.TBL vmlinuz
grub.conf isolinux.cfg pxelinux.cfg upgrade.img
[root@pxe tftpboot]# cp isolinux.cfg pxelinux.cfg/
[root@pxe tftpboot]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# ls
isolinux.cfg
[root@pxe pxelinux.cfg]# mv isolinux.cfg default # 重命名
[root@pxe pxelinux.cfg]# ll
total 4
-r--r--r--. 1 root root 3166 Dec 18 09:39 default
[root@pxe pxelinux.cfg]# chmod u+w default
[root@pxe pxelinux.cfg]# ll
total 4
-rw-r--r--. 1 root root 3166 Dec 18 09:39 default
(4)编辑default文件
[root@pxe pxelinux.cfg]# vim default
(5)测试
可以看到预安装界面了,选择第一个安装
但是安装失败
(6)修改配置文件
[root@pxe pxelinux.cfg]# vim default
修改第64行调整网络镜像源,此时就可以安装成功了
再次安装 成功。
10、修改预安装信息
(1)修改默认等待时间
默认等待60s
编辑default文件
[root@pxe pxelinux.cfg]# vim default
将默认等待时间修改为10s(10=1s)
测试:等待时间为10s
(2)整默认读取第一条
编辑default文件
[root@pxe pxelinux.cfg]# vim default
修改成功
(3)调整标题名称
编辑default文件
[root@pxe pxelinux.cfg]# vim default
修改成功
(4)第11行修改 menu title Red Hat YangYang Linux 7.3 ##修改大标题名称
(5)替换背景图片
首先安装软件ImageMagick
[root@pxe pxelinux.cfg]# yum install ImageMagick -y
将我们要的背景图片格式化为默认的640x480的
[root@pxe pxelinux.cfg]# cd /root/Pictures/
[root@pxe Pictures]# file tup.png
tup.png: PNG image data, 823 x 693, 8-bit/color RGBA, non-interlaced
[root@pxe Pictures]# convert -resize 640x480! tup.png zhao.png # 将 tup.png生成 zhao.png并640x480且大小为
[root@pxe Pictures]# file zhao.png #修改成功
zhao.png: PNG image data, 640 x 480, 8-bit/color RGBA, non-interlaced
!!注意:
非强制的转化,自适应(不加叹号)
强制性的转化,可能会比例失调(加叹号)
将转化好的图片传到/var/lib/tftpboot
[root@pxe pxelinux.cfg]# cd ..
[root@pxe tftpboot]# pwd
/var/lib/tftpboot
[root@pxe tftpboot]# cp /root/Pictures/zhao.png .
编辑default文件
[root@pxe tftpboot]# vim pxelinux.cfg/default
将第10行修改为刚才的背景图片
测试:背景替换成功
11、安装httpd服务,并开启服务设置为开机自启动
[root@pxe tftpboot]# yum install httpd -y
[root@pxe tftpboot]# systemctl start httpd
[root@pxe tftpboot]# systemctl enable httpd
12、自动化部署配置
(1)搭建一个网络yum源
[root@pxe tftpboot]# vim /etc/yum.repos.d/rhel_dvd.repo
(2)安装 system-config-kickstart 自动应答脚本制作工具
[root@pxe tftpboot]# yum install system-config-kickstart.noarch -y
(3)运行自动应答脚本制作工具制作自动应答脚本
[root@pxe tftpboot]# system-config-kickstart
进行如下设置:
HTTP server 为服务器ip,HTTP Directory 选择镜像的挂载点
都选第一个,并添加三个分区
分区添加完成如下
添加一个为eth0的网络设备;选择DHCP
选择默认即可
关闭火墙
添加开机后的动作,这里可以根据自己的需求进行设置
保存:Ctrl+S
将文件保存到/var/www/html下,以方便实现共享
在浏览器上输入http://服务端ip/ks.cfg,可以看到文件共享出来了
配置ks.cfg文件
[root@pxe ~]# cd /var/www/html/
[root@pxe html]# ls
ks.cfg
[root@pxe html]# vim ks.cfg
修改时区
添加安装软件(根据自己的需求设定,但要注意格式)
38 %packages
39 @base # base组
40 @core
41 @fonts
42 @gnome-desktop
43 @input-methods # 输入法
44 @x11
45 lftp
46 vnc
47 %end
检查ks.cfg是否有语法错误(不报错i就没有错误)
[root@pxe html]# ksvalidator /var/www/html/ks.cfg
指定安装源 ,添加读取ks.cfg文件路径
测试:通过网卡,自动安装过程如下