目录
10)编辑引导菜单文件 default,添加 ks 引导参数
一、简介
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。PXE协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统(共享的操作系统引导程序)通过网络下载到本地运行。PXE在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
PXE网络安装:客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并记录生成一个名为anaconda-ks.cfg的文件。
二、PXE工作流程
PXE工作流程:
1.PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP和安装相关文件
2.DHCP 服务器返回分配给客户机的IP地址,以及PXE文件的存放位置(TFTP服务器的地址)
3.PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件(启动引导程序,选择内核版本,过 程不可见)
4.PXE Client 取得pxelinux.0 文件后之执行该文件
5.根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统
6.进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装相关软件包
7.pexlinux:启动菜单(选择操作系统) vmliunx(内核文件) initrd(辅助文件)
三、搭建 PXE 远程安装服务器
1.安装包准备
vsftpd //用来放置安装镜像,通过ftp访问镜像安装
dhcp.x86_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos //用来给客户机分配ip
syslinux-4.05-15.el7.x86_64.rpm //用来提供pxe的引导程序
tftp-server.x86_64 0:5.2-22.el7.rpm //用来提供引导镜像文件的下载
xinetd.x86_64 2:2.3.15-14.el7 //用来托管tftp
system-config-kickstart.noarch 0:2.9.7-1.el7.rpm //用来无人值守安装
2.环境准备
一台作为pxe服务器,一台作为测试安装客户机
主机服务器地址:192.168.94.19主机名:localhost
一台主机:1)配置双网卡 一个作用是dhcp,一个是使用网络源安装环境包
2)DHCP部署
3)tftp-server 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
4)syslinux //用来提供pxe的引导程序
5)xinetd //用来托管tftp
6)vsftpd //用来放置安装镜像,通过ftp访问镜像安装
7)kickstart //用来无人值守安装
3.搭建PXE远程安装服务器
(1)关闭 firewalld 和 selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
(2)配置双网卡
作用:一个作用是dhcp,一个是使用网络源安装环境包
1)添加硬件网卡
2)编辑网卡配置文件
#查看新添加网卡设备名
ip link show | grep ens
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
3)重启网卡
systemctl restart network
systemctl status network
(3) 安装并启动 DHCP 服务
1)安装DHCP
yum -y install dhcp
#将dhcp配置模板复制到dhcp配置文件中
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
2)配置DHCP服务
vim /etc/dhcp/dhcpd.conf
subnet 192.168.188.0 netmask 255.255.255.0 {
range 192.168.132.200 192.168.132.249;
option domain-name-servers 114.114.114.114,8.8.8.8;
option routers 192.168.188.2;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.188.100; #填写tftp服务器IP地址(本机)
filename "pxelinux.0"; #填写引导文件名称
}
3)启动DHCP
systemctl start dhcpd && systemctl enable dhcpd
systemctl status dhcpd
(4)安装并启动 ftp 服务
在http的网页共享目录下创建新目录,并将光盘挂载到此目录,实现光盘内容共享.
主要目的是操作系统安装的最后一个步骤需要安装软件。
1)安装 ftp 服务
yum -y install vsftp
2)配置共享目录
# 创建共享目录
mkdir /var/ftp/centos7
#挂载本地光盘镜像
vim /etc/fstab
/dev/sr0 /mnt/centos7 iso9660 defaults 0 0
#挂载
mount -a
#复制文件至 ftp 共享目录
cp -rf /mnt/centos7/* /var/ftp/centos7
3)启动 ftp 服务
systemctl start vsftpd && systemctl enable vsftpd
systemctl status vsftpd
4)检查 ftp 服务启动状态,以及镜像共享情况
#查看端口监听情况
ss -tlunp|grep vsftpd
文件管理器访问
ftp://192.168.106.252/centos7
(5)安装并启动TFTP服务
1)安装TFTP
#安装tftp服务
yum install -y tftp-server.x86_64
#安装xinetd对TFTP服务进行管理,tftp被xinet所托管,xinetd默认没有安装
#xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。
#经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。
yum install -y xinetd
2)配置TFTP服务
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes #yes表示客户机只能一台一台连接,no表示可以堕胎一起去连接
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #共享文件的路径(放在此目录下)
disable = no #开启tftp服务
per_source = 11 #通过限制一个主机的最大连接数,从而防止某个主机独占某个服务,这里每个IP地址的连接数是11个
cps = 100 2 #表示服务器最多启动100个连接,如果达到这个数目将停止启动新服务2秒。在此期间不接受任何请求
flags = IPv4
}
3)启动 TFTP 服务
systemctl start xinetd && systemctl enable xinetd
systemctl start tftp && systemctl enable tftp
systemctl status xinetd.service && netstat -atnulp | grep xinet
(6)准备 PXE 引导程序
说明:
pxelinux.0是个二进制文件,主要作用相当于一个系统安装步骤的指引,引导客户端如何安装系统
yum provides /pxelinux.0 #查找这个文件是由哪个软件包安装的,当不是一个路径和一个软件包时用/
yum -y install syslinux
rpm -ql syslinux | grep pxelinux #查找pxe引导程序的位置
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝到tftp的根目录下,系统引导文件
注:只有安装了 system-config-kickstart 软件包,才会有/usr/share/syslinux/目录及目录中的文件
1)查找pxelinux.0是哪个软件包安装的
yum provides */pxelinux.0
2)安装syslinux服务
yum -y install syslinux
3)复制系统引导文件至共享目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
4)将内核文件、引导菜单文件放到tftp共享目录下
#用来预加载的内核和驱动文件,然后使用预加载内核进行系统安装
cp -a /var/ftp/centos7/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
(7)配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载驱动。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作自动或手动建立。至于为什么要是/var/lib/tftpboot/pxelinux.cfg/default文件,因为是由pxelinux.0这个文件决定好的
mkdir /var/lib/tftpboot/pxelinux.cfg #默认pxelinux.cfg是没有的需要手动创建,注意它是一个目录而非文件虽然是以.cfg结尾
mkdir /var/lib/tftpboot/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称,对应下面的label auto
prompt 1 #设置是否等待用户选择,“1”表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式
label auto #图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=http://192.168.106.252/centos7
label linux text #文本安装引导入口 出现boot:时输入linux text
kernel vmlinuz
append text initrd=initrd.img method=http://192.168.106.252/centos7
label linux rescue #救援模式引导入口出现boot:时输入linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=http://192.168.106.252/centos7
4.实现Kickstart无人值守安装
(1)准备安装应答文件
#准备安装应答文件
yum install -y system-config-kickstart
(2)打开“Kickstart 配置程序”窗口
通过桌面菜单“应用程序”–>“系统工具”–>“Kickstart” 打开
或
执行 “system-config-kickstart” 命令打开
(3)配置kickstart选项
1)基本配置
默认语言设为“中文(简体)”
时区设为“Asia/Shanghai”
设置root密码
高级配置中勾选“安装后重启”。
2)安装方法
3)引导装载程序选项
“安装类型”:安装新引导装载程序
“安装选项”:在主引导记录(MBR)中安装引导装载程序
4)分区信息
主引导记录:不清除主引导记录
分区:删除所有现存分区
磁盘标签:初始化磁盘标签
布局:添加分区
挂载点:/boot,文件系统类型:xfs,固定大小:500M
文件系统类型:swap,固定大小:4096M
挂载点:/home,文件系统类型:xfs,固定大小:4096M
挂载点:/,文件系统类型:xfs,使用磁盘上全部未使用空间
5)网络配置
添加网络设备“ens33”
网络类型设为“DHCP”
6)防火墙配置
禁用 SELinux、禁用防火墙
7)安装后脚本
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo “[local]
name=local
baseurl=ftp://192.168.188.100/centos7
enabled=1
gpgcheck=0” > /etc/yum.repos.d/local.repo
8)保存自动应答文件
选择“Kickstart 配置程序”窗口的“文件”–>“保存”命令,选择指定保存位置,文件名为ks.cfg
默认保存在/root/ks.cfg
9)配置需要安装的软件包
将文件放到/var/ftp下
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$CqygEHhD$j13QTJ13yN.ZK0llPk70U/
# System language
lang zh_CN
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.188.100/centos7"
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part /home --fstype="xfs" --size=4096
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1
%packages
@^gnome-desktop-environment #安装桌面环境(需要保证共享的操作系统镜像包含这些组件集合)
@base ##安装基础软件包
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
%end
#最小化安装(当共享镜像为简洁版时,采用最小化安装)
#%packages
#@core
#%end
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo “[local]
name=local
baseurl=ftp://192.168.188.100/centos7
enabled=1
gpgcheck=0” > /etc/yum.repos.d/local.repo
%end
10)编辑引导菜单文件 default,添加 ks 引导参数
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称,对应下面的label auto
prompt 0 #设置是否等待用户选择,“1”表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式
label auto #图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.188.100/centos7 ks=ftp://192.168.188.100/ks.cfg
label linux text #文本安装引导入口 出现boot:时输入linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.188.100/centos7 ks=ftp://192.168.188.100/ks.cfg
label linux rescue #救援模式引导入口出现boot:时输入linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.188.100/centos7 ks=ftp://192.168.188.100/ks.cfg
(4)验证无人值守安装
新建虚拟机内存至少为2G,网卡需要与dhcp服务器网络相通。