一.概述
1、关于PXE
Preboot Execution Environment翻译过来就是预启动执行环境;简称PXE;传统安装操作系统的方法是CDROM或U盘引导,而PXE技术解决的是从网络引导安装系统。pxe是一种基于客户端/服务器模式的一种技术,其核心功能时让客户端通过网络从远程服务器下载启动镜像,从而实现网络启动。
通用的无人值守做法如下:
通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp服务器获取ip,gw,域名和pxelinux.0文件并从tftp服务器上加载相关内核引导文件;同时下载 kickstart的cfg配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!
2、pxe引导相关角色说明
PXE作用: 引导装机
Kickstart作用: 将安装系统的过程中通过ks.cfg文件中的配置信息,实现自动安装配置达到无人值守自动安装;
TFTP: 支持PXE 引导的网卡中从tftp服务器端下载pxelinux.0文件、vmlinuz、initrd.img等内核引导文件;
DHCP: PXE引导过程中获首先获取IP地址,并提供pxelinux.0文件位置;
HTTP: 用于下载ks.cfg以及系统镜像文件
3、环境准备说明
本次测试环境说明:
PXE服务器:Radhat7.0 的虚拟机
- 设置 ip:172.25.254.122 netmask:255.255.255.0
[root@pxe yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
IPADDR=172.25.254.122
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
- 配置yum源
[root@pxe yum.repos.d]# cat yum.repo
[rhel7]
name=rhel7
baseurl=file://172.25.254.122/rhel7.0
gpgcheck=0
配置服务及安装软件包如下:
DHCP
tftp
http
syslinux 包,提供引导文件
二.基于http创建ks.cfg文件
1.安装并开启http服务
[root@pxe yum.repos.d]# yum install httpd -y
[root@pxe yum.repos.d]# systemctl start httpd
[root@pxe yum.repos.d]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
2.kickstart ks.cfg配置文件准备
第一步:安装Kickstart制作工具
[root@pxe yum.repos.d]# yum install system-config-kickstart -y
第二步:执行命令,打开kickstart configurator,配置参数,创建Kickstart文件
[root@pxe yum.repos.d]# system-config-kickstart
- basic configuration基本信息设定
- installation method安装模式选择
- boot loader options引导程序选项
- partition information分区划分策略,我们将磁盘分为三个分区,/boot分区200M,swap分区500M,其余空间分配给/分区
/boot分区配置
swap分区配置
/根分区配置
- network configuration网络信息设定
我们将网络设置为动态,是为了防止批量安装时,发生ip冲突
- authentication认证加密方式
- firewall configuration火墙配置信息
- post-installation安装后执行脚本,编辑yum.repo文件,配置yum源
第三步:由于形成ks.cfg文件的过程中会有一个bug,没有安装软件的过程,所以我们要在文件中添加安装软件的过程
%package
@base
lftp
%end
编辑完成后 使用ksvalidator 命令进行校验正确性
ksvalidator ks.cfg
三.配置DHCP服务
第一步:安装dhcp服务
yum install dhcp -y
第二步:编辑dhcp服务的配置文件
注意:dhcp配置文件在/etc/dhcp/目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改
[root@pxe yum.repos.d]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? yes
- 编辑/etc/dhcp/dhcpd.conf文件
(1) 删除27,28行以及36行以后的内容
(2)
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.122;
30 subnet 172.25.254.0 netmask 255.255.255.0 {
31 range 172.25.254.70 172.25.254.90;
32 option routers 172.25.254.60;
33 next-server 172.25.254.122; ##tftp server 的ip,可以是本机,也可以不是本机
34 filename "pxelinux.0"; ##引导文件
35 }
第三步:启动服务
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
四.配置tftp服务
第一步:安装软件
yum install syslinux -y #安装syslinux是为了启动引导程序pxelinux.0
yum install tftp-server -y
##由于tftp 服务在redhat7.0之前的包括redgat7.0在内的版本 依赖守护进程服务,如果要正常运行,要争得他的守护进程的同意,所以我们还要安装tftp的守护进程服务xinted
yum install xinetd -y
第二步:将pxelinux.0文件放到tftp的共享目录下,这样一无所知的网卡可以通过tftp服务读取pxelinux.0文件中的内容
rpm -ql syslinux ##查看syslinux的配置文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
第三步:配置xinetd服务
编辑xinetd服务的配置文件
vim /etc/xinetd.d/tftp ##配置权限
disable = no ##no表示tftp处于启动状态,yes表示tftp处于禁用状态
第四步:配置tftp服务
安装好tftp-server软件包后 默认的数据根目录是/var/lib/tftpboot/ 无须修改,只需要复制一些软件引导文件进来即可
- 引导文件
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- 内核相关的文件
[root@pxe html]# cd /rhel7.0/
[root@pxe rhel7.0]# ls
addons GPL LiveOS release-notes RPM-GPG-KEY-redhat-release
EFI images media.repo repodata TRANS.TBL
EULA isolinux Packages RPM-GPG-KEY-redhat-beta
[root@pxe rhel7.0]# cd isolinux/
[root@pxe 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@pxe isolinux]# cp * /var/lib/tftpboot/
- 制件引导默认文件
[root@pxe tftpboot]# mkdir pxelinux.cfg
[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]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# cd ..
[root@pxe tftpboot]# mv isolinux.cfg pxelinux.cfg/default
[root@pxe tftpboot]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# ls
default
- 编辑默认引导文件
编辑默认引导文件/pxelinux.cfg/default
1 default vesamenu.c32
2 timeout 60
10 menu background ha.png ##安装背景
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.0 ##安装标题
63 kernel vmlinuz
64 menu default ##默认安装
65 append initrd=initrd.img repo=http://172.25.254.122/rhel7.0 ks=http://172.25.254.122/ks.cfg ##镜像和自动安装脚本
- 更改安装背景
yum install ImageMagick -y ##一定要先安装这个
convert -resize 640x480! haha.png ha.png ##更改图片尺寸
file ha.png ##查看图片尺寸
scp ha.png root@172.25.254.122:/var/lib/tftpboot
第五步:启动配置开机自启
[root@pxe tmp]# systemctl enable xinetd
[root@pxe tmp]# systemctl start xinetd
[root@pxe pxelinux.cfg]# systemctl restart httpd.service
无人值守安装测试:
更改系统启动方式进行自动化安装
安装背景展示:
安装成功: