RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

语言: CN / TW / HK

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

作者:JackTian
微信公众号:杰哥的IT之旅(Jake_Internet)

1、什么是 PXE?
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。

PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。

运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。

此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

2、什么是 Kickstart?
KickStart 是一种无人职守安装方式,KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;

在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件。

当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。

这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。

3、PXE 网络装机原理说明
PXE Client:表示需要安装操作系统的机器,统称客户端。

TFTP Server:表示安装 TFTPD 服务的机器。

DHCP Server:表示安装 DHCPD 服务的机器。

在实际的操作中往往将 TFTP Server,DHCP Server 部署在一台机器上,统称服务端。

4、PXE 网络装机的基本流程
客户端向服务端上的 DHCP 发送请求 IP 地址消息,DHCP 检查客户端是否合法,如果合法则返回客户端的IP地址,同时将启动文件 pxelinux.0 的位置信息一并传送给客户端;

客户端向服务器上的 TFTP 发送获取 pxelinux.0 消息,TFTP 接受到消息之后再向客户端发送 pxelinux.0 大小信息,试探客户端是否满意。当 TFTP 收到客户端返回的同意大小信息之后,正式向客户端发送 pxelinux.0;

客户端运行接收到的 pxelinux.0 文件;

客户端向 TFTP 发送针对本机的配置文件信息(记录在 TFTP 上的 pxelinux.cfg 目录下),TFTP 将配置文件发给客户端,客户端根据配置文件执行后续操作;

客户端向 TFTP 发送请求 Linux 内核信息,TFTP 接受到消息之后将内核发送给客户端;

客户端向 TFTP 发送根文件请求,TFTP 接受到消息之后返回 Linux 根文件系统;

客户端启动 Linux 内核;

客户端进入安装模式;

5、PXE 网络装机的适用场景
服务器无光驱或者光驱损坏,需要安装 Linux 操作系统

对系统维护不恰当,导致需要频繁安装 Linux 操作系统

需要大规模批量部署 Linux 操作系统(应用于企业)

6、PXE 网络装机的前提条件
客户机网卡支持 PXE 协议(集成 BOOTROM 芯片),主板支持网络引导(BIOS 中调整);

网络中有 DHCP 服务器为客户机自动分配网络地址,并且指定引导文件位置;

服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载;

PXE(Pre-boot Execution Environment,预启动执行环境)结合 Kickstart 配置实现无人值守自动安装

7、PXE 环境部署
服务端IP:192.168.200.254

# service iptables stop
# setenforce 0

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
配置YUM仓库

# mount /dev/cdrom /mnt/ 
# rpm -i /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
# umount /dev/cdrom
# mkdir /var/ftp/rhel6
# mount /dev/cdrom /var/ftp/rhel6/
# service vsftpd restart

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装


# vim /etc/yum.repos.d/yum.repo

[base]                                //仓库类别
name=Red Hat Enterprise Linux 6       //仓库名称
baseurl=ftp://192.168.3.10/rhel6      //URL访问路径
gpgcheck=0                            //验证软件包的签名

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

安装并启用 TFTP 服务

TFTP 服务由 tftp-server 软件包提供,默认通过 xinetd 超级服务进行管理,需要将 /etc/xinetd.d/tftp 中的 disable=yes 修改为 disable=no。并重启 xinetd 服务。

# yum -y install tftp-server

# vim /etc/xinetd.d/tftp 

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
} 
# service xinetd restart

准备 Linux 内核,初始化镜像文件

用于 PXE 网络安装的 Linux 内核,初始化镜像文件可从光盘中找到分别为 vmlinuz 和 initrd.img 位于 images/pxeboot 下,将两个文件复制到 tftp 服务的根目录下。

# cd /var/ftp/rhel6/images/pxeboot/
# cp vmlinuz initrd.img /var/lib/tftpboot/

准备 PXE 引导程序,启动菜单文件

用于 PXE 网络安装的引导程序为 pxelinux.0 由软件包 syslinux 提供,安装软件包后将文件复制到 tftp 服务的根目录下。

# yum -y install syslinux
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像,默认的启动菜单为 default,应放置 tftp 根目录的 pxelinux.cfg 子目录中。

# mkdir /var/lib/tftpboot/pxelinux.cfg
# cat /var/lib/tftpboot/pxelinux.cfg/default

default auto // 默认入口名称
prompt 1 // 1:表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=8192
定义了三个引导入口,分别是图型安装(默认),文本安装,救援模式




Prompt:设置是否等待用户选择

Label:定义并分隔启动项

Kernel append:定义引导参数

无人值守安装只需要一个入口

安装并启用DHCP服务

用来为客户机(裸机)自动分配地址并指定引导文件位置


# yum -y install dhcp
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 

cp:是否覆盖"/etc/dhcp/dhcpd.conf"?y

# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
next-server 192.168.200.254;            # TFTP 服务器地址
filename "pxelinux.0";                  # PXE 引导程序文件名

subnet 192.168.200.0 netmask 255.255.255.0 {
option routers 192.168.200.254;
option subnet-mask 255.255.255.0;
option domain-name "crushlinux.com";
option domain-name-servers 202.106.0.20, 8.8.8.8;
range 192.168.200.100 192.168.200.200;
default-lease-time 21600;
max-lease-time 43200;
}
# service dhcpd start

验证PXE网络安装

  • 新购买的服务器不需要额外的设置直接启动;

  • 已有操作系统的服务器启动时调整 BIOS 中的 Boot 选项将 Network 或 LAN 设置为第一个,然后启动服务器。

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

在boot:直接回车 或者输入auto,将会进入默认的图形安装入口

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

选择相应的语言

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

设置键盘类型

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

选择通过URL安装

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

编辑网卡

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

设置PXE网络安装服务器

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

实现 Kickstart 无人值守安装

使用 kickstart 工具配置安装应答文件,自动安装安装过程中的各种设置,无需手动干预,提高装机效率

  • 通过系统中 system-config-kickstart 工具生成配置文件

  • 修改系统中已有的 /root/anaconda-ks.cfg 文件
# yum -y install system-config-kickstart
# system-config-kickstart

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

在生产环境中

预安装脚本:可用户安装加载一些外置卡的驱动,例如RAID卡
安装后脚本:可用于设置一些初始化配置

RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

将文件取名为 ks.cfg,并保存到 /var/ftp/pub 下

# ll /var/ftp/pub/ks.cfg 
-rw-r--r--. 1 root root 1204 12月 19 00:31 /var/ftp/pub/ks.cfg

编辑引导菜单文件 default

# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 0
label auto
        kernel vmlinuz
        append ks=ftp://192.168.200.254/pub/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192

PS: 另外,杰哥建了个学习交流群,群氛围还是蛮不错的,大家有问题可以在群里交流,有需要的小伙伴可以加一下。

分享到: