PXE 远程安装服务
PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建 PXE 网络体系,必须满足以下几个前提条件。
- 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
- 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
- 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可
服务器的批量部署方法,具备以下三个优点:
- 规模化:同时装配多台服务器;
- 自动化:安装系统、配置各种服务;
- 远程实现:不需要光盘、U 盘等安装介质
PXE远程装机实验
基础设备
设备 | 系统 | IP |
虚拟机 | CentOS7 | 192.168.78.128 |
虚拟机 | / | / |
基础环境(服务端)
静态IP
vi /etc/sysconfig/neteork-scripts/ifcfg-ens33 //ens33网卡的配置文件
#内容如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" //将获取IP方式改为静态static获取
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2ce64331-c359-4e02-8297-4b279599dd47"
DEVICE="ens33"
ONBOOT="yes"
#添加网络信息
IPADDR="192.168.78.128" //IP地址
NETMASK="255.255.255.0" //子网掩码
GATEWAY="192.168.78.2" //网关
DNS1="192.168.78.2" //dns
DNS2="114.114.114.114" //dns
#重启服务
systemctl restart network
关闭防火墙
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //禁止开机自启动
关闭selinux
修改配置文件内的SELINUX=disabled
vi /etc/selinux/config //selinux的配置文件
#内容如下
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //将SELINUX改为disabled
搭建PXE远程装机服务
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件
安装ftp服务准备CentOS7安装源
#安装ftp服务
yum -y install vsftpd
#准备CentOS7安装源
mkdir /media/cdrom //创建镜像挂载目录
mount /dev/cdrom /media/cdrom/ //挂载
mkdir /var/ftp/CentOS-7 //创建安装源文件
cp -rf /media/cdrom/* /var/ftp/CentOS-7 //准备安装源
#启动ftp服务
systemctl start vsftpd
systemctl enable vsftpd
配置并启用TFTP服务
TFTP(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69
#TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将
“disable = yes”改为“disable = no”,然后启动 TFTP 服务即可
#安装服务
yum -y install tftp-server
#修改配置文件
vi /etc/xinetd.d/tftp
#内容如下
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #将disable的yes该为no
per_source = 11
cps = 100 2
flags = IPv4
}
#启动服务
systemctl start tftp
systemctl enable tftp
准备linux内核,初始化镜像文件
用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得, 分别为 vmlinuz 和 initrd.img,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下
cd /media/cdrom/images/pxeboot #进入内核文件和初始化镜像文件所在目录
cp vmlinuz initrd.img /var/lib/tftpboot/ #复制文件到tftp根目录下
准备PXE引导程序
用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供。安装好软件包
syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下
#安装软件包
yum -y install syslinux
#将文件复制进tftp根下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
安装并启用dhcp服务
由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。
#安装dhcp
yum -y install dhcp
#更改配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf
#内容如下
subnet 192.168.78.0 netmask 255.255.255.0 {
range 192.168.78.50 192.168.78.100;
option routers 192.168.78.2;
next-server 192.168.78.128; #指定tftp服务器地址
filename "pxelinux.0"; #指定PXE引导程序文件名
}
#启动服务
systemctl start dhcpd
systemctl enable dhcpd
配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下;label 用来定义并分隔启动项;kernel 和 append 用来定义引导参数
#创建目录
mkdir /var/lib/tftpboot/pxelinux.cfg
#创建文件并编辑
vi /var/lib/tftpboot/pxelinux.cfg/default
#内容如下
default auto #默认安装名称
prompt 1 #用户控制 1表示等待
label auto #安装选项auto
kernel vmlinuz #linux内核
append initrd=initrd.img method=ftp://192.168.78.128/CentOS-7 #初始化镜像文件,镜像
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.78.128/CentOS-7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.78.128/CentOS-7
客户端测试
准备一个没有安装系统的虚拟机2核4G的 ,因为要使用dhcp功能所有一定要将VMware自带的dhcp功能,这里有详细的步骤https://blog.csdn.net/Sambaserver/article/details/139467272?spm=1001.2014.3001.5501
创建一个没有设置镜像的虚拟机
启动虚拟机会出现这个界面,我们在启动菜单配置的3个启动选项就可以在这里使用选项名进行选择不同选项启动
这里我选择回车按照默认进行装机
到这个页面就表示搭建PXE远程装机服务成功了
搭建Kickstart无人值守远程装机服务
无人值守安装只比远程装机对了个应答文件,应答文件会自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率
准备应答文件
应答文件制作工具需要图形化界面,每个Centos安装后都会产生一个应答文件/root/anaconda-ks.cfg,如果对应答文件比较熟悉可以直接编辑这个文件
#安装制作应答文件工具
yum -y install system-config-kickstart
#使用工具制作应答文件
system-config-kickstart
输入命令之后就会出现下面这个窗口在这里可以对装机进行各种配置
这里我们选择中文简体,(服务器一般都为英文),时区选择上海,设置root账号密码,安装后重启
这里我们选择ftp安装 输入ftp服务器地址和目录
选择安装引导装载程序
点击添加,添加框内的三个硬盘
添加ens33网络适配器
禁用防火墙和selinux
在这里可以配置安装后执行的脚本 ,我这里写的脚本是将yum仓库原本的yum元移除,创建一个依赖于内网ftp的yum元
保存
选择保存位置
保存好之后x掉这个窗口
在保存的位置可以看到多了一个ks.cfg应答文件
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
编辑应答文件
#编辑应答文件
vi ks.cfg
#在文件末尾添加最小化安装
%packages
@^minimal
%end
将应答文件复制到ftp目录下
cp ks.cfg /var/ftp/
配置启动菜单文件
vi /var/lib/tftpboot/pxelinux.cfg/default
#内容如下
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.78.128/CentOS-7 ks=ftp://192.168.78.128/ks.cfg
客户端测试
打开一个没有安装系统的客户,不操作出现以下界面便说明无人值守装机服务部署成功