一、pxe的概念:
预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
二、pxe所用所有网络服务:
1.dhcp服务:为主机分配一个ip地址,用于后面安装系统过程中通讯。
2.tftp服务:传输vmlinuz(linux系统内核文件)、initrd.img(linux引导加载模块)、以及syslinux提供的pxe引导程序、读取配置文件default、读取预配置的ks文件。
3.ftp服务:传输将要安装的系统镜像文件
三、pxe的安装系统过程简介:
- 网卡查找dhcp服务器 找到后dhcp服务器提供ip地址,和引导程序的地址
- 网卡使用tftp客户端吧引导程序加载到内存中来
- bios执行引导程序
- 引导程序会去TFTP去查找配置文件
- 根据配置文件去ftp中寻找镜像文件引导安装系统
四、使用pxe安装系统具体实施步骤(实验环境vmware+centos7)
首先关闭防火墙与selinux、配置本地yum源。
[root@localhost]# systemctl stop firewalld
[root@localhost]# systemctl disable firewalld
[root@localhost]# setenforce 0
[root@localhost]# vim /etc/yum.repos.d/dvd.repo
[development]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
1.安装并配置dhcp服务
yum -y install dhcp
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
log-facility local7;
subnet 192.168.70.0 netmask 255.255.255.0 { #指定为那个网段分配网络参数
range 192.168.70.50 192.168.70.100; #设置准备为客户端分配的IP地址范围
option domain-name-servers 192.168.70.10; #设置分配给客户端的DNS服务器地址
option routers 192.168.70.10; #设置分配给客户端的网关地址。
option broadcast-address 192.168.70.255; #广播地址,注释掉后用默认的
default-lease-time 600; # 地址租赁时间 600秒后失效
max-lease-time 7200;
next-server 192.168.70.10; # 下一个要访问的地址,就是tftp地址。
filename "pxelinux.0"; #要访问tftp上哪一个文件。
}
[root@localhost dhcp]# systemctl start dhcpd
[root@localhost dhcp]# systemctl enable dhcpd
2. 安装并配置 TFTP 服务
yum -y install tftp-server xinetd
[root@localhost xinetd.d]# vim /etc/xinetd.d/tftp
protocol=udp # TFTP默认使用UDP协议
wait=no # no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args = -s /var/lib/tftpboot # 指定TFTP根目录(引导文件的存储路径)
disable=no
[root@localhost xinetd.d]#
[root@localhost xinetd.d]# systemctl start xinetd
[root@localhost xinetd.d]# systemctl enable xinetd
[root@localhost xinetd.d]# systemctl start tftp
[root@localhost xinetd.d]# systemctl enable tftp
3. 复制 内核文件vmlinuz与引导加载文件initrd.img。
[root@localhost ~]# mount /dev/sr0 /mnt #挂载镜像
cd /mnt/images/pxeboot/
[root@localhost pxeboot]# mkdir /var/lib/tftpboot/ #创建tftp目录
[root@localhost pxeboot]# cp vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# cp initrd.img /var/lib/tftpboot/ #复制文件到tftp目录
4.准备pxe引导程序,PXE引导程序由软件包 syslinux 提供
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
5.安装ftp服务,准备Centos7镜像文件
yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
systemctl start vsftpd
systemctl enable vsftpd
6.配置启动菜单文件,默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
#下面几行是内容配置
ault auto
prompt 1 #参数为1需要手动按下Enter键安装,参数为0时自动选择进入图形安装入口
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.70.10/centos7 # ftp服务器地址
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.70.10/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.70.10/centos7
#重启tftp服务
systemctl restart tftp
此时可以打开客户端机器,进行验证,会出现如图界面
这个时候按Enter键,直接下载镜像文件,进入图像安装入口,或者linux text,进入文本安装入口
或者输入linux recure进入救援模式。
到目前为止,虽然能正常安装系统,但是还需要手动干预,下面第二阶段可以配置无需手动干预kickstart无人值守自动装机。
第二阶段:kickstart无人值守自动装机
安装kickstart程序
[root@localhost ~]# yum -y install system-config-kickstart #安装kickstart程序,推荐图形化
输入命令system-config-kickstart打开kickstart窗口
kickstart配置
保存到一个可写路径,这里选择/tmp路径
复制ks.cfg到ftp路径中
这时重启所有服务,可以打开客户端进行测试,注意网络一定可以连通,下面附上一张安装完成的图。
容易踩坑的点:Kickstart-由于下载软件包信息失败,软件包选择被禁止
解决方案:
更改PEX-server的本地yum源
[root@localhost yum.repos.d]# cat dvd.repo
[development]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0