PXE高xiao批量装机

部署 PXE 远程安装服务
        在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光
驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB
光驱、移动硬盘等安装方法显然已经难以满足需求。
        本章将学习基于 PXE Preboot eXecution Environment ,预启动执行环境)技术的网
络装机方法,并结合 Kickstart 配置实现无人值守自动安装。
上述服务器的批量部署方法,具备以下三个优点:
     规模化:同时装配多台服务器;
     自动化:安装系统、配置各种服务;
     远程实现:不需要光盘、U 盘等安装介质。
        PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过
网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建 PXE 网络
体系,必须满足以下几个前提条件。
       客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
       网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
       服务器通过 TFTP Trivial File Transfer Protocol ,简单文件传输协议)提供引导
镜像文件的下载。
        其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此
支持,只需在 BIOS 设置中允许从 Network LAN 启动即可。下面将介绍 PXE 远程安装服
务的基本部署过程
搭建 PXE 远程安装服务器
     本例的 PXE 远程安装服务器集成了 CentOS 7 安装源、 TFTP 服务、 DHCP 服务,能
够向客户机裸机发送 PXE 引导程序、 Linux 内核、启动菜单等数据,以及提供安装文件。
     准备 CentOS 7 安装源
     CentOS 7 的网络安装源一般通过 HTTP FTP 协议发布,另外也支持 NFS Network
File System ,网络文件系统)协议,关于 NFS 的配置请参阅其他资料,这里不再赘述。
例如,若采用 FTP 协议发布安装源,可以在服务器上部署一个 YUM 软件仓库。
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd
安装并启用 TFTP 服务
      TFTP 服务由 tftp-server 软件包提供,配置文件位于 /etc/xinetd.d/tftp 。配置时只要将
“disable = yes” 改为 “disable = no” ,然后启动 TFTP 服务即可。
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
service tftp
{
…… // 省略部分信息
protocol      = udp             //TFTP 采用 UDP 传输协议
server         = /usr/sbin/in.tftpd
server_args     = -s /var/lib/tftpboot        //指定 TFTP 根目录
disable        = no
…… // 省略部分信息
}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
Created    symlink    from      /etc/systemd/system/sockets.target.wants/tftp.socket     to
/usr/lib/systemd/system/tftp.socket.
     准备 Linux 内核、初始化镜像文件
       用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,
分别为 vmlinuz initrd.img ,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制
tftp 服务的根目录下。
[root@localhost ~]# cd /media/cdrom/images/pxeboot
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
安装并启用 DHCP 服务
      由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相
关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。如 PXE
务器的 IP 地址为 192.168.4.254 DHCP 地址池为 192.168.4.100 192.168.4.200 ,则可
以参考以下操作来搭建 DHCP 服务器。
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
……
// 省略部分信息
subnet 192.168.4.0 netmask 255.255.255.0 {
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 192.168.4.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.4.100 192.168.4.200;
next-server 192.168.4.254;    //指定 TFTP 服务器的地址
filename "pxelinux.0";     //指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created    symlink   from    /etc/systemd/system/multi-user.target.wants/dhcpd.service     to
/usr/lib/systemd/system/dhcpd.service.
     从上述过程可以看到,与一般 DHCP 服务不同的是,配置文件中增加了 netx-server
filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。
配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认
的启动菜单文件为 default ,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单
配置可参考以下操作手动建立。
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto     //指定默认入口名称
prompt 1      //1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux rescue
         kernel vmlinuz
         append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7
      上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。
其中, prompt 用来设置是否等待用户选择;
label 用来定义并分隔启动项; kernel append
用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时
只需要一个入口就够了。
验证 PXE 网络安装
       搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的
服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修
BIOS 设置,将 “Boot First” 设为 “NETWORK” “LAN” ,然后重启主机;若使用 VMware
创建的虚拟机进行测试,虚拟机内存至少需要 2GB ,否则在启动安装时会报错。
       如果服务器配置正确,网络连接、 PXE 支持等都没有问题,则客户机重启后将自动配
IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0 ,并根据引导菜单配置提示用
户指定启动入口,如图 6.1 所示。
       在提示字串 “boot:” 后直接按 Enter 键(或执行 “auto” 命令),将会进入默认的图形安装入
口;若执行 “linux text” 命令,则进入文本安装入口;若执行 “linux rescue” 命令,则进入救援
模式。
       直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如图
6.2 所示。若能够成功到达这一步,说明 PXE 网络安装基本成功。后续安装步骤与使用光
盘的正常安装类似,这里不再叙述。
实现 Kickstart 无人值守安装
        上一节介绍了通过 PXE 技术远程安装 CentOS 7 系统的方法,安装介质不再受限于光
盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、
键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
        本节将进一步学习如何实现无人值守自动安装,通过使用 Kickstart 工具配置安装应答
文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
准备安装应答文件
        在 CentOS 7 系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具
来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS
7 安装后自动创建的应答文件( /root/anaconda-ks.cfg ),根据需要适当修订后使用。
配置安装应答参数
        通过桌面菜单 应用程序 ”→“ 系统工具 ”→“Kickstart” 即可打开 “Kickstart 配置程序 窗口。
“Kickstart 配置程序 窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信
息、网络配置等各种安装设置进行指定,如图 6.3 所示。
基本配置及安装方法:
     “ 基本配置 可参考图 6.3 来指定。例如,将默认语言设为 中文(简体) ,时区设为
“Asia/Shanghai” ,根口令设为 “pwd123” ,高级配置中勾选 安装后重启
       在 安装方法 界面中,应正确指定 CentOS 7 的安装方法,如图 6.4 所示。若有用户验
证信息也需一并指定。在 引导装载程序选项 界面中,选择安装新引导装载程序。
分区信息
       在 分区信息 界面中,需正确规划硬盘分区方案。例如,可划分一个 500MB /boot
分区、 4GB /home 分区、 2GB swap 分区,将剩余空间划分给根分区,如图 6.5
所示。
网络配置及防火墙配置:
网络配置 界面中,添加一个网络设备 “ens33” ,将网络类型设为 “DHCP”
防火墙配置 界面中,可以选择禁用 SELinux 、禁用防火墙。
软件包选择:
     CentOS 7 系统开始不再提供软件包的选择,如图 6.6 所示。如果需要安装软件包,可  以根据需要将/root/anaconda-ks.cfg 的软件包安装脚本复制到 ks.cfg 文件中,只需要复
%packages %end 部分即可,在 %packages %end 之间,包含以 @ 开头的软件包列
表,将不需要的软件名删除,剩下的就是系统会自动安装的软件包。例如,仅保留以下内容
即为采用最小化安装
安装脚本
       在 预安装脚本 界面、 安装后脚本 界面中,可以分别添加在安装前、安装后自动运行
的可执行语句。此项设置使服务器的自动化配置变得更加容易。例如,可以使客户机在完成
安装后自动设置 YUM 软件仓库,如图 6.7 所示。需要注意的是,应确保所编写的代码能够
正确执行,以免安装失败。
其他信息
若没有特殊需求,在 验证 界面、 显示配置 界面中,保持默认设置就可以了。
保存自动应答文件
      选择 “Kickstart 配置程序 窗口的 文件 ”→“ 保存 命令,指定目标文件夹、文件名,将配
置好的应答参数保存为文本文件,如 /root/ks.cfg 。以后若要修改此应答配置,可以在
“Kickstart 配置程序 窗口中打开进行调整,或者直接用 VI 等文本编辑工具进行修改
[root@localhost ~]# grep -v ^# /root/ks.cfg
install
keyboard 'us'
rootpw --iscrypted $1$4L6b0cut$W3mlVspKjatMK/g5vrTct/
url --url="ftp://192.168.4.254/centos7"
lang zh_CN
firewall --disabled
auth --useshadow --passalgo=sha512
graphical
firstboot --disable
selinux --disabled
network --bootproto=dhcp --device=ens33
reboot
timezone Asia/Shanghai
bootloader --location=mbr
clearpart --all
part /boot --fstype="xfs" --size=500
part /home --fstype="xfs" --size=4096
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%post --interpreter=/bin/bash
rm -f /etc/yum.repos.d/*
echo
-e
'[base]\nname=CentOS7.3\nbaseurl=ftp://192.168.4.254/centos7\nenabled=
1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/e
tc/yum.repos.d/centos7.repo
%end
%packages      //%packages 到 %end 部分是复制 anaconda-ks.cfg 中的软件包安装脚本
@^minima
实现批量自动装机
      有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当
修改引导菜单,就可以实现基于网络的批量自动装机了。
启用自动应答文件
      在 PXE 远程安装服务器中,将上一节建立的应答文件复制到 /var/ftp/centos7 目录下,
使客户机能够通过 ftp://192.168.4.254/centos7/ks.cfg 访问;然后编辑引导菜单文件 default
添加 ks 引导参数以指定 ks.cfg 应答文件的 URL 路径。
[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0     //0 表示不等待用户控制
label auto
      kernel vmlinuz
      append      initrd=initrd.img          method=ftp://192.168.4.254/centos7
ks=ftp://192.168.4.254/ks.cfg
验证无人值守安装
          启用自动应答安装之后,当客户机每次以 PXE 方式引导时,将自动下载 ks.cfg 应答配
置文件,然后根据其中的设置安装 CentOS 7 系统,而无须手工干预,如图 6.8 所示,这样
就可以同时为多台客户机安装系统了。
          客户机安装完成以后,检查其 YUM 软件仓库配置,可以发现已经按照 安装后脚本
设置自动建立了 /etc/yum.repos.d/centos7.repo 文件。
[root@localhost ~]# cat /etc/yum.repos.d/centos7.repo
[base]
name=CentOS7.3
baseurl=ftp://192.168.4.254/centos7
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-7
      注意:如果是在 VMware 虚拟机环境下,需要禁用 VMware DHCP 功能;否则
安装文件将无法加载。
  • 55
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值