目录
一、PXE概述
首先我们回顾一下Linux系统的启动过程
加电自检----MBR引导----GRUB菜单----加载内核----initi进程初始化
PXE是由intel公司开发的网络引导技术,工作再C/S模式下,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个系统。
PEX严格来说并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是安装的计算机中包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client。 PXE协议使计算机可以通过网络启动。
协议分为client和server端,PEX client 在网卡的ROM中,当计算机引导,BIOS把PXE client调入内存执行,由PXE client将放置在远端的文件通过网络下载到本地运行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器用来给PXE client分配一个IP,由于是给PXE client分配地址,所以在配置DHCP服务器时需要增加想要的PXE设置。
二、PXE服务的构建过程
1、PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。
2、DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftoboot下
3、PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
4、TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
5、PXE客户机通过网络来启动到系统安装主界面
6、PXE客户机向文件共享服务器(ftp、http、nfs)发起获取centos系统或windows系统安装文件的请求。
7、vsftp文件共享服务响应PXE请求,将共享额系统安装文件传输给PXE客户机。
8、PXE客户机进入到安装提示向导界面,用户需要手动完成系统安装的操作
由此我们引入下面的kickstart无人值守操作
kickStart无人值守
KickStart 是一种无人职守安装方式。KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。
三、开始配置PXE和KickStart
3.1、关闭防火墙和核心防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
3.2、环境准备
需要配置双网卡一个作用是dhcp,一个使用网络源安装环境包
dhcp自动分配IP的网卡得是net1仅主机模式
ifconfig查看一下网卡信息
cd /etc/sysconfig/network-scripts #进入网卡配置目录
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
在改之前我们要先查看一下net1网卡的网段
所以我们在网卡中就这样进行配置
配置完重启网卡
systemctl restart network #重启网卡服务
3.3、配置dhcp服务
yum -y install dhcp #安装dhcp服务
vim /etc/dhcp/dhcpd.conf #进入配置文件
cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf #-p连带文件属性一起复制
vim /etc/dhcp/dhcpd.conf #再次进入编辑
systemctl start dhcpd #开启dhcp服务
systemctl enable dhcpd #开机自启动
3.4、安装并配置tftp服务
配置前先简单说一下什么是tftp,tftp是一个小并且易于实现的文件传输协议,tftp是基于UDP数据报,需要有自己的差错改正措施。tftp只支持文件传输,不支持交互,没有庞大的命令集。安全性低,不支持身份验证
yum -y install tftp-server
yum -y install xinetd
#tftp被xinetd所托管,xinetd默认没有安装,配置文件
rpm -q tftp-server xinetd #查看一下是否安装成功
这样就安装成功可以开始配置了
vim /etc/xinetd.d/tftp #配置tftp
主要改disable这行,开启tftp服务
3.5、准备ftp需要共享的文件
mount /dev/cdrom /mnt #挂载镜像文件
进入内核文件 将内核初始化镜像文件复制到 /var/lib/tftpboot
cd /mnt/images/pxeboot
cp initrd.img vmlinuz /var/lib/tftpboot #复制内核初始化文件
vmlinuz:是可引导的、压缩的内核
initrd.img:系统初始化文件
systemctl start xinetd #开启服务
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp
以上就是为了将镜像中的内核文件+系统的初始化文件,丢到tftp的默认共享目录中,以便客户端来下载使用。
3.6、准备PXE引导镜像文件pxelinux.0
pxelinux.0是个二进制文件,主要作用相当于一个系统安装步骤的指引,引导客户端如何安装系统
yum provides /pxelinux.0
#查找这个文件是哪个安装包安装的,当不是一个路径和一个软件包时用
yum -y install syslinux
rpm -ql syslinux | grep pxelinux.0 #查找pxe引导程序的位置
选择第二个文件进行复制,
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #拷贝tftp的根目录下,系统引导文件
注,只有安装了 system-config-kickstart 软件包,才会有/usr/share/syslinux/目录及目录中的文件
3.7、手工配置default菜单文件
启动菜单用来知道客户机的引导过程,包括如何调用用内核,如何加载驱动。默认
mkdir /var/lib/tftpboot/pxelinux.cfg/
#默认pxelinux.cfg是没有的需要手动创建,注意它是一个目录而非文件虽然是以.cfg结尾
vim /var/lib/tftpboot/pxelinux.cfg/default #配置菜单文件
3.8、安装ftp服务,准备centos7安装源
yum -y install vsftpd #安装ftp服务
mount /dev/cdrom /mnt #如果前面挂载了可以省略
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7 #将镜像复制到其中
systemctl start vsftpd #开启ftp服务
systemctl enable vsftpd #开机自启
3.9、配置kickstart无人值守安装
yum -y install system-config-kickstart #安装system-config-kickstart工具
打开无人值守配置程序开始配置
查看一下文件
还差最后一步
cd /root #进入家目录
vim anaconda-ks.cfg
将里面的下图内容,复制到var/ftp/ks.cfg中
vim /var/ftp/ks.cfg
将上面内容复制到最后
vim /var/lib/tftpboot/pxelinux.cfg/default
#进入菜单文件进行优化,将ks引导参数至引导菜单文件
到这就配置完成了
验证:
创建一台空虚拟机
然后重启虚拟机
就会自动获取ip,自动安装,过程会有点慢,耐心等待就行