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

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

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

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

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

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

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

知足条件后,咱们来实现这种功能!网络

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

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

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

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

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

经过搭建本地YUM的方式安装一系列服务。若是有朋友对YUM的搭建不明白能够参考博文:YUM仓库配置及命令详解socket

[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
//这三项的意思就是最小安装
%packages
@^gnome-desktop-environment
%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无人值守安装实验完成!

相关文章
相关标签/搜索