PXE远程网络装机及CentOS 7无人值守安装

在大规模的Linux应用环境中,比如Web群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何给成百上千台服务器裸机快速安装系统呢?传统的USB光驱、移动硬盘等安装方式很显然已经力不从心了,那么就需要——PXE网络装机及无人值守安装。

PXE网络装机及无人值守安装可以实现的功能有:
1.规模化:同时装配多台服务器;
2.自动化:安装系统、配置各种服务;
3.远程实现:不需要光盘、U盘等安装介质。

如图:
PXE远程网络装机及CentOS 7无人值守安装

关于Windows PXE网络装机可以参考博文:Windows server 2016部署WDS服务

若要搭建PXE网络体系,必须要满足的条件有:
1.客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导;
2.网络中必须有一台DHCP服务器为客户机分配IP地址、指定引导文件的位置;
3.服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。

其中第一个条件是硬件要求,目前绝大部分服务器和PC都能够提供此支持,只需在BIOS设置中允许从Network或LAN启动即可。

满足条件后,我们来实现这种功能!

PXE远程安装服务的基本部署过程:

本次试验PXE远程安装服务器集成了CentOS 7 安装源、FTP服务、TFTP服务、DHCP服务,能够像客户机(裸机)发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。

PXE远程安装服务的部署过程大致可以分成这样几步:
1.安装FTP服务并准备CentOS 7 安装源;
2.安装TFTP服务并启动;
3.准备Linux内核、初始化镜像文件;
4.准备PXE引导程序、启动菜单文件;
5.安装并启动DHCP服务;
6.验证PXE网络安装效果。

接下来我们开始分步骤完成实验,并实现理想的效果!

1.安装FTP服务并准备CentOS 7 安装源

通过搭建本地YUM的方式安装一系列服务。如果有朋友对YUM的搭建不明白可以参考博文:YUM仓库配置及命令详解

[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# vim a.repo
[a]
baseurl=file:///mnt
gpgcheck=0
[root@localhost ~]# yum -y install vsftpd
//安装FTP服务
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/
//将光盘中的东西全部复制到FTP服务科匿名访问的目录中
[root@localhost ~]# systemctl start vsftpd
//启动FTP服务

2.安装TFTP服务并启动

TFTP(简单文件传输协议)服务所使用UDP的69端口。

[root@localhost ~]# yum -y install tftp-server
//安装TFTP服务
[root@localhost ~]# vim /etc/xinetd.d/tftp
//修改TFTP服务的配置文件,内容如下:
service tftp
{
        socket_type             = dgram
        protocol                = udp                          //TFTP服务采用udp传输协议
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot             //指定TFTP服务的根目录
        disable                 = no                           //这项必须改成“no”
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@localhost ~]# systemctl start tftp
//启动TFTP服务

3.准备Linux内核、初始化镜像文件

用PXE网络安装的Linux内核、初始化文件可以从CentOS 7系统光盘中获得,位于images/pxeboot/目录下,分别是initrd.img和vmlinuz。将这两个文件复制到TFTP服务的根目录下。

[root@localhost ~]# cd /mnt/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/

4.准备PXE引导程序、启动菜单文件

用于PXE网络安装的引导程序为pxelinux.0,由软件包syslinux提供。因此需要先安装syslinux。

[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

启动菜单来指导客户机的引导过程,包括如何调用内核、如何加载初始化镜像。默认的启动菜单文件为default,应放置在TFTP根目录下的pxelinux.cfg子目录下,典型的启动菜单引导文件需手动创建,可以参考以下内容:

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
//在TFTP服务根目录下创建pxelinux.cfg目录
[root@localhost ~]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
//创建default菜单文件。文件内容如下:
default auto
prompt 1 
label auto 
        kernel vmlinuz 
        append initrd=initrd.img method=ftp://192.168.1.1/centos7
label linux text 
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.1.1/centos7

label linux rescue  
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.1.1/centos7
其中个配置项的含义:
default:用来指定默认入口名称;
prompt:用来决定是否需要等待用户控制(1表示需要,0表示不需要);
label:用来定义并分割启动项,文件中有三种引导模式:
分别是图形安装(默认)、文本安装、救援模式;
kernel:用来指定所需内核;
append:追加配置项;
initrd:用来指定系统初始化文件;
method:用来指定安装方式;
引导入口的个数及内容根据实际情况自定义。

5.安装并启动DHCP服务

由于PXE客户机通常是尚未安装系统的裸机,因此为了与服务器取得联系并正确的下载相关引导文件,需要预先配置DHCP服务器来自动分配地址并告知引导文件位置。

[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
//复制DHCP服务的模板
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//修改DHCP服务的配置文件,主要内容如下:
                   ………………           //省略部分内容
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option domain-name-servers 192.168.1.1;
  option domain-name "internal.example.org";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.1.1;                         //指定TFTP服务器的地址
  filename "pxelinux.0";                              //指定PXE引导程序的文件名
}
                   ………………           //省略部分内容
[root@localhost ~]# systemctl start dhcpd

6.验证PXE网络安装效果

对于新购买的裸机,一般都不需要设置(如果是重新装系统,建议则应调BIOS为网络启动)。若使用vmware虚拟机进行测试,虚拟机内存至少需要2GB,否则在启动会报错。

PXE远程网络装机及CentOS 7无人值守安装
耐心等待,几分钟后:
PXE远程网络装机及CentOS 7无人值守安装
出现这种情况,表示部署成功!

通过PXE远程安装服务,虽然,安装介质已经不再受限于光盘、移动硬盘、U盘等设备,大大提高了系统安装的灵活想但是,安装期间仍然需要人为的进行交互式的操作,当需要批量安装时非常的不方便。那么就需要使用到——“Kickstart无人值守安装”

实现Kickstart无人值守安装

实现Kickstart无人值守安装部署过程:
1.配置应答文件并保存;
2.启动自动应答文件;
3.验证无人值守安装。

接下来我们开始分步骤完成,并实现理想的效果!

1.配置应答文件并保存

要想图形化的创建应答文件,则需要安装system-config-kickstart工具,如果对配置文件非常熟悉的话,也可以直接修改系统自动创建的无人安装配置文件/root/anaconda-ks.cfg。本次案例安装system-config-kickstart工具,图形化的编辑配置文件。

[root@localhost ~]# yum -y install system-config-kickstart
//安装system-config-kickstart工具,安装完成之后:

PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装

[root@localhost ~]# vim /var/ftp/ks.cfg 
//查看刚才通过图形化编辑的应答文件
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$3uZeSVnX$FYsU4y8y/qqEWA66Wuysg1
# Use network installation
url --url="ftp://192.168.1.1/centos7"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --asprimary --fstype="swap" --size=2048
part / --asprimary --fstype="xfs" --grow --size=1

%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
cd /etc/yum.repos.d/
echo -e "[a]"  >> a.repo
echo -e "baseurl=ftp://192.168.1.1/centos7" >> a.repo
echo -e "gpgcheck=0" >> a.repo

%end

不过刚才已经说明了,还缺一个选项——“软件包选择”,需要自己手动添加几行配置项,在末尾添加即可,添加内容如下:

%packages
@^minimal
%end
//这三项的意思就是最小安装

当然也可以参考/root/anaconda-ks.cfg文件,文件中%packages到%end之间都是配置选项,每行一个配置选项,任意选择!
大家可以不经过图形化编辑,直接复制配置文件!效果也可实现!

2.启动自动应答文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 0
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.1.1/centos7 ks=ftp://192.168.1.1/ks.cfg

将prompt 改为0,表示不等待用户选择。添加ks引导参数,并制定URL访问路径。

3.验证无人值守安装

PXE远程网络装机及CentOS 7无人值守安装
PXE远程网络装机及CentOS 7无人值守安装
实验完成!

上一篇:PXE 无人值守批量部署 Centos 7


下一篇:VMware PXE 网络安装 CentOS 6.8