一、PXE 简介
1.PXE:Pre-boot Excution Environment,预启动执行环境
PXE:是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 若要搭建 PXE 网络体系,必须要满足以下条件:
- 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
- 网络中有一台 DHCP 服务器,以便为客户机分配地址、指定引导文件位置
服务器通过 TFTP(Trivial File Transfer Protocol)简单文件传输协议提供引导镜像文件的下载。
2.PXE 引导相关角色说明
PXE作用:引导装机
Kickstart作用:将安装系统的过程中通过ks.cfg文件中的配置信息,实现自动安装配置达到无人值守自动安装;
TFTP:支持PXE引导的网卡中从tftp服务器端下载pxelinux.0文件,vmlinuz,initrd.img等内核引导文件;
DHCP:PXE引导过程中获首先获取IP地址,并提供pxelinux.0文件位置;
HTTP:用于下载ks.cfg以及系统镜像文件
通用的无人值守做法如下:
通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp服务器获取ip和pxelinux.0文件并从tftp服务器上加载相关内核引导文件;同时下载kickstart的cfg配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!
3.环境准备说明
本次测试环境说明:
PXE 服务器:Centos 7.6 基于 VMware 的虚拟机
内部测试 ip(仅主机模式)192.168.100.100
配置服务及安装软件包如下:
- DHCP
- TFTP
- HTTP
- syslinux 包,提供引导文件
以上所需要的软件包均通过 Yum 安装
[root@pxe ~]# yum -y install dhcp tftp tftp-server syslinux httpd
二、基于 httpd 搭建本地安装源
1.挂载光盘制作源
挂载 Centos7 光盘
[root@pxe ~]# mkdir /media/cdrom
[root@pxe ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@pxe ~]# mkdir -pv /var/www/html/centos/7/x86_64
mkdir: 已创建目录 "/var/www/html/centos"
mkdir: 已创建目录 "/var/www/html/centos/7"
mkdir: 已创建目录 "/var/www/html/centos/7/x86_64"
绑定挂载到 HTTP 默认目录下
[root@pxe ~]# mount --bind /media/cdrom/ /var/www/html/centos/7/x86_64/
2. kickstart ks.cfg 配置文件准备
以家目录下的anaconda-ks.cfg为模板制作ks文件
[root@pxe ~]# cd /var/www/html/; mkdir ks
[root@pxe html]# cp /root/anaconda-ks.cfg /var/www/html/ks/ks.cfg
[root@pxe html]# vim ks/ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512 //系统验证类型
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install //安装系统
# Use network installation
url --url=http://192.168.100.100/centos/7/x86_64 //安装源的位置
# Use graphical install
graphical //采用图形化安装
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn' //默认键盘设置
# System language
lang zh_CN.UTF-8 //系统默认语言设置
# Network information
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate //网卡设置
network --hostname=huyouba1 //主机名设置
# Root password
rootpw --iscrypted $1$CUu7e71B$4th1cSndALNOclZsWjB0v1
//root密码
# System services
services --enabled="chronyd"
services --disabled="firewalld" //禁用防火墙
# System timezone
timezone Asia/Shanghai --isUtc //时间设置
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
%packages
@^minimal
@core
@development
chrony
kexec-tools
vim
wget
net-tools
httpd
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
selinux --disabled // 禁用selinux
reboot //安装完成后重启
[root@pxe html]# chmod +r ks/ks.cfg
以上是我的参考设置,您也可以作为模板只需要简单修改以下几行:
安装的网络镜像地址:url -url = http://192.168.100.100/centos/7/x86_64
安装后的系统密码:rootpw -iscrypted 1 lSeSXuy。$ 7HmGY9vVxEGEGB98qTUuv1
密码可以通过 openssl passwd -1 “PASSWORD”
生成格式是 SHA512 的密码替换上去即可;
另外安装后可以在%packages与其%end之间配置预安装的包等,此处让程序在安装好系统后预安装wegt vim,net-tools,httpd软件包
3.配置启动
[root@pxe ~]# systemctl start httpd
[root@pxe ~]# systemctl enable httpd.service
三、配置 DHCP 服务
1.配置 DHCP 服务
DHCP 配置文件在 /etc/dhcp/ 目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改
[root@pxe ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@pxe ~]# egrep -v "(^$|^#)" /etc/dhcp/dhcpd.conf
option domain-name "huyouba1.com";
option domain-name-servers 192.168.100.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.100.100 192.168.100.200;
option routers 192.168.100.1;
next-server 192.168.100.100; //tftpserver
filename "pxelinux.0"; //引导文件
}
2.启动与查看
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
[root@pxe ~]# netstat -utpln |grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 9936/dhcpd
四、配置 TFTP 服务
安装好tftp-server软件包后 默认的数据根目录是/var/lib/tftpboot/ 无须修改,只需要复制一些软件引导文件进来即可
1.相关文件准备
## 拷贝引导文件
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
## 拷贝内核文件
[root@pxe ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
## 拷贝引导菜单
[root@pxe ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/
## 制作引导默认文件
[root@pxe ~]# mkdir -pv /var/lib/tftpboot/pxelinux.cfg
mkdir: 已创建目录 "/var/lib/tftpboot/pxelinux.cfg"
[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@pxe pxelinux.cfg]# vim default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.100.100/centos/7/x86_64 ks=http://192.168.100.100/ks/ks.cfg
2.启动配置开机自启
[root@pxe ~]# systemctl start tftp
[root@pxe ~]# systemctl enable tftp
3.TFTP 测试
/var/lib/tftpboot/目录文件结构
[root@pxe tftpboot]# ls
chain.c32 initrd.img mboot.c32 memdisk menu.c32 pxelinux.0 pxelinux.cfg vmlinuz
[root@pxe tftpboot]# cd /tmp/
[root@pxe tmp]# ls
[root@pxe tmp]# tftp 192.168.100.100
tftp> get vmlinuz
tftp> quit
[root@pxe tmp]# ls
vmlinuz
五、PXE 无人值守安装测试
1.新建虚拟机,修改 VMware 的网络
和用cdrom安装虚拟的唯一区别是不用挂载镜像,只需要修改新的虚拟机的网络类型为”仅主机(仅主机)网络”如图: