一、PXE简介
PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
通过传统的方式安装和部署计算机时,都会要求通过交互的方式,回答各类问题,以完成安装和部署任务,过程繁琐,且无法实现自动化。红帽公司开发了 Kickstart 的安装方法,通过 ks 文件可以解决所有普通安装方式中需要回答的问题。可以通过 system-config-kickstart 工具定制 ks 文件,也可以通过相关语法来手工编写安装脚本。
二、启动步骤详解
1、服务器加电启动,从DHCP服务器获取IP地址并加载(PXEClient)。
2、通过TFTP服务器获取网络引导程序(pxelinux.0)。
3、引导程序读取配置文件(pxelinux.cfg本例中文件名为:default)。
4、引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz)、自动应答程序(ks.cfg)。
5、按自动应答文件中指定的网络安装方式,以FTP方式安装linux系统。
三、服务端安装配置
pxe环境服务器地址:192.168.100.35
pxe客户机分配地址:192.168.100.97 - 192.168.100.125
安装步骤:
1)配置DHCP,用于给客户端提供IP地址及其它信息
2)配置TFTP服务器,用于提供客户端PXE引导所必须的文件
3)配置FTP服务器,用于存放安装文件
4)配置Kickstart,用于自动应答安装
5)使用PXE功能引导客户机
关闭防火墙
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
getenforce
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
1、安装DHCP和TFTP
DHCP 和 TFTP 服务可以选择单独分别去安装,也可以通过安装 dnsmasq 服务,来实现 DHCP 和 TFTP 的功能。
(1)安装 dnsmasq 服务
yum install dnsmasq –y
vi /etc/dnsmasq.conf
systemctl start dnsmasq
systemctl enable dnsmasq
###/etc/dnsmasq.conf内容太长了,直接粘贴在最后面
bogus-priv
filterwin2k
#interface=eth0
dhcp-range=192.168.100.99,192.168.100.125,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/tftp # tftp目录默认是没有的,需要手动创建
dhcp-authoritative
(2)拷贝启动文件到/var/tftp,上传linux系统镜像到服务器上。
mkdir /media/cdrom
mount mount -o loop *.iso /media/cdrom/
mkdir /var/tftp/centos7
cp /media/cdrom/images/pxeboot/vmlinuz /var/tftp/centos7/ # 拷贝内核镜像文件
cp /media/cdrom/images/pxeboot/initrd.img /var/tftp/centos7/ # 拷贝文件系统镜像
(3)生成pxe启动文件pxelinux.0
yum install -y syslinux # 安装pxelinux.0所需要的包
rpm -ql syslinux | grep "pxelinux.0" # 查询文件所在目录
cp /usr/share/syslinux/pxelinux.0 /var/tftp/ # 拷贝pxelinux.0文件到tftp根目录
(4)准备默认的菜单配置文件
mkdir /var/tftp/pxelinux.cfg/ # 创建pxelinux.cfg目录,固定目录名称
vi /var/tftp/pxelinux.cfg/default # default文件,必须为这个名称
# 编辑内容如下
default centos7
prompt 1
timeout 15
display menu
label centos7
kernel centos7/vmlinuz
append initrd=cenots7/initrd.img ks=ftp://192.168.100.98/pub/ks-centos7.cfg # 这个地方指定了ks.cfg文件下载路径,后边会生成该文件
(5)kickstart配置文件ks-centos7.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use FTP installation media
url --url="ftp://192.168.100.98/pub/centos7"
# Root password
rootpw --iscrypted $1$lgzpzCCE$Y6xpvPBLom/J4zAipUjfr. ##此密码为123.com
# System authorization information
auth useshadow passalgo=sha512
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# SELinux configuration
selinux disabled
# Installation logging level
logging level=info
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
# Reboot afer installing
reboot ##一定要有此 选项否则操作系统安装完后不会自动重启。
# Network information
network --bootproto=static --ip=192.168.100.99 --netmask=255.255.255.224 --gateway=192.168.100.126
network --hostname=localhost.localdomain
######
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=300
part pv.01 --size=1 --grow
volgroup root_vg01 pv.01
logvol / --fstype xfs --name=lv_01 --vgname=root_vg01 --size=1 --grow
%packages ###要安装的包
@^minimal
@core
acpid
iputils
man
net-tools
ntp
ntpdate
parted
vim-enhanced
wget
%end ###以%end结尾
#%addon com_redhat_kdump --disable --reserve-mb='auto'
#%end
2、安装FTP
简单文件传输协议(TFTP)主要用于为客户机与服务器之间进行简单文件传输的协议。在 PXE 早期启动过程中,主要通过 TFTP 协议传输”pxelinux.0”。文件传输协议(FTP),适用于大量文件传输的情形,在后期安装过程,主要通过 FTP 协议传输 Linux 操作系统的安装包。
1、安装vsftpd服务
2、提供操作系统镜像文件
FTP 默认配置即可,我们需要适用匿名用户。通过ftp安装操作系统,我们需要把操作系统镜像文件拷贝到这个匿名用户目录。前面已经把镜像上传并mount了。现在直接拷贝,为每个系统版本新建一个目录
mkdir /var/ftp/pub/centos7
cp -fr /media/cdrom/* /var/ftp/pub/centos7/ # /var/ftp/pub是ftp的匿名用户目录
3、启动ftp服务
yum install -y vsftpd
systemctl start vsftpd # 启动ftp服务
systemctl enable vsftpd # 设置开机启动