目录
1. 概述
PXE (Preboot eXcution Environment),预启动执行环境,在操作系统之 前运行
服务端
运行DHCP服务,用来分配地址、定位引|导程序.
运行TFTP服务,提供引导程序下载
客户端
网卡支持PXE协议
主板支持网络引导
2. PXE 工作原理
1、客户端向dhcp服务器发送广播请求ip地址
2、dhcp服务器响应客户端请求,分配一个地址池中的可用地址给客户端
3.dhcp 服务器提供tftp服务器的地址,指引客户端去tftp服务器取得系统所需的引导文件
4.客户端需要系统启动的内核文件和驱动文件
5.当操作系统安装之后需要一些软件包,客户端向ftp服务器请求
6.启动系统,正常可以安装了
3.安装过程
3.1 搭建环境
服务器:
CentOS 7.6 最小化安装,两块网卡(一块NAT模式,一块仅主机模式) NAT模式因为要联网下载软件
客户机:
一台新装虚拟机(网卡和服务器绑定同一块,仅主机模式)
第二块网卡记得配好地址,并开启使用
ps:使用双网卡是因为NAT模式下需要联网下载所需服务软件包,而仅主机网卡则保证服务器与客户机在同一局域网中
服务机:
网卡配置:
[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@server network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.52.130
NETMASK=255.255.255.0
GATEWAY=192.168.52.2
~
[root@server network-scripts]# systemctl restart network
客户机:
实验所需要的软件:
[root@server ~]# yum -y install dhcp
[root@server ~]# yum -y install tftp-server.x86_64
[root@server ~]# yum -y install vsftpd
[root@server ~]# yum -y install syslinux
[root@server ~]# yum -y install system-config-kickstart
[root@server ~]# systemctl stop firewalld
3.2 配置文件
3.2.1 配置dhcp服务器
[root@server ~]# vim /etc/dhcp/dhcpd.conf
[root@server ~]# cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@server ~]#vim /etc/dhcp/dhcpd.conf
subnet 192.168.52.0 netmask 255.255.255.0 {
range 192.168.52.10 192.168.52.20;
option routers 192.168.52.130;
next-server 192.168.52.130;
filename "pxelinux.0";
}
3.2.2 配置tftp服务器
将pxelinux.0引导程序拷贝的TFTP站点目录下:
[root@server ~]# rpm -ql tftp-server 寻找到/var/lib/tftpboot 这个存放pxelinux.0文件的目录
[root@server ~]# rpm -ql syslinux | grep pxelinux 之前已经装过了syslinux这个软件包,所以存在pxelinux.0这个文件
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/pxelinux.0 查询到是这个文件
[root@server ~]# cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 将pxelinux.0引导程序拷贝的TFTP站点共享目录下
提供内核文件,从光盘加载:
[root@server ~]# df -h
[root@server ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server ~]# cd /mnt/images/pxeboot/ 进入/mnt目录查看到内核文件
[root@server pxeboot]# ls
initrd.img TRANS.TBL vmlinuz (initrd.img 提供伪文件系统,vmlinuz 内核文件)
[root@server pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ 将内核文件拷贝到tftp共享目录下
[root@server pxeboot]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@server tftpboot]# vim /etc/xinetd.d/tftp
编辑tftp服务配置文件:
[root@server ~]# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no //将yes改为no,便可启动服务
per_source = 11
cps = 100 2
flags = IPv4
}
3.2.3 配置vsftp服务器
进入TFTP站点目录,新建一个引导配置文件存放目录:
[root@server tftpboot]# mkdir /var/ftp/centos7 先创建一个目录用于存放光盘的内容
[root@server tftpboot]# cp -rf /mnt/* /var/ftp/centos7/ 将/mnt目录下的内容拷贝到目录下面
配置菜单文件:进入该目录并新建一个名为default的配置文件,编辑该文件:
[root@server tftpboot]# mkdir pxelinux.cfg 新建一个目录用于存放菜单文件
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default 里面的内容可从光盘文件查找
[root@server pxelinux.cfg]# cd /var/ftp/centos7/ 进入光盘存放的目录,进行查看
[root@server centos7]# ls
[root@server centos7]# cd isolinux
[root@server isolinux]# ls
[root@server isolinux]# cp -p isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 将菜单文件拷贝到自己想要更改的菜单文件内
[root@server isolinux]# vim /var/lib/tftpboot/pxelinux.cfg/default
修改成如下内容即可:
或者改成自己手撕这个文件,我使用的是这个方法:
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.52.130/centos7/ks.cfg
3.2.3 开启服务
[root@server pxelinux.cfg]# systemctl start dhcpd
[root@server pxelinux.cfg]# systemctl start tftp
[root@server pxelinux.cfg]# systemctl start vsftpd
3.2.4 客户机配置
首先在电源选项里面选择从网络检查安装
而且这些文件是在vim /var/lib/tftpboot/pxelinux.cfg/default 这个里面
解决方法:
[root@server isolinux]# ls
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32
[root@server isolinux]# cp -p splash.png vesamenu.c32 /var/lib/tftpboot/ 将背景图+图形化界面拷贝到/var/lib/tftpboot/下面
[root@server isolinux]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 pxelinux.cfg splash.png vesamenu.c32 vmlinuz
[root@server isolinux]#
更改了之后界面马上发生了变化:
然后回车,出现下面的图形,显示成功了一半:
3.2.5 客户机无人值守安装
切换到虚拟机中,打开系统工具,发现软件Kickstart
打开即可配置:
默认是不可以选,但是我们可以给他选,进入文件配置,
将bash改成development
然后再重新启动一下这个软件,就可以查看了
预安装脚本不做要求
配置完了之后可以保存文件
可以选择存放的位置 我放在root下面
在虚拟机里面查看刚刚保存的文件,文件在root目录下:
[root@server ~]# cd /var/ftp/ 进入ftp目录,将菜单文件复制进去
[root@server ftp]# ls
centos7 pub
[root@server ftp]# cp ~/ks.cfg .
[root@server ftp]# ls
centos7 ks.cfg pub
[root@server ftp]# vim /var/lib/tftpboot/pxelinux.cfg/default 调用菜单文件的信息
vim /var/lib/tftpboot/pxelinux.cfg/default,调至最后,在后面添上如下内容那,指定一下获取的地址:
然后保存退出,将客户机重启再试一次
达到无人值守的目的