Linux Kickstart无人值守安装(上)

Linux Kickstart无人值守安装
       
在我们的网络维护生涯中,有不少朋友,感觉到自己在机械的做一件事情,在无聊、无趣和无奈中工作。尤其一些简单重复的操作更容易让大家感到工作的无趣。今天将给大家介绍如何大规模的部署 RedHat Linux 操作系统,避免了手工安装的繁琐。当然本方法也使用于一些特殊场合,譬如没有光驱或光驱坏掉的计算机、手中没有安装光盘等情况。
在安装 RedHat Linux 企业版的过程中,我们都知道它允许通过 NFS HTTP FTP 协议来进行网络安装。但是在一般情况下我们需要有一个安装引导介质(引导光盘、引导软盘、 U 盘等),有没有一种方法不通过引导光盘方式来安装呢,而直接通过网络来进行安装?答案是有,即通过 PXE 技术实现。

一、基本原理

      PXE到底是什么东东?
PXE(Pre-boot Execution Environment) 是由 Intel 设计的协议,它可以使计算机通过网络启动。协议分为 client server 两端, PXE client 在网卡的 ROM 中,当计算机引导时, BIOS PXE client 调入内存执行,并显示出命令菜单,经用户选择后, PXE client 将放置在远端的操作系统通过网络下载到本地运行。
既然是通过网络传输,就需要 IP 地址;也就是说在其启动过程中,客户端请求服务器分配 IP 地址,之后 PXE Client 使用 TFTP Client 通过 TFTP Trivial File Transfer Protocol )协议下载启动安装程序所需的文件。
简单地说 PXE 网络安装,客户机通过支持 PXE 的网卡向网络中发送请求 DHCP 信息的广播请求 IP 地址等信息, DHCP 服务器给客户端提供 IP 地址和其它信息( TFTP 服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。下图中介绍了 Linux 中自动安装系统的详细工作过程:
Linux Kickstart无人值守安装(上)_第1张图片
第一步:PXE ClientDHCP发送请求
首先,将支持 PXE 的网络接口卡( NIC )的客户端的 BIOS 设置成为网络启动,通过 PXE BootROM (自启动芯片)会以 UDP (简单用户数据报协议)发送一个广播请求,向网络中的 DHCP 服务器索取 IP 地址等信息。
第二步:DHCP服务器提供信息
DHCP 服务器收到客户端的请求,验证是否来至合法的 PXE Client 的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的 IP 地址、 pxelinux 启动程序( TFTP )位置,以及配置文件所在位置。
第三步:PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括: pxelinux.0 pxelinux.cfg/default vmlinuz initrd.img 等文件。
第四步:Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答 , 用以决定启动参数。 BootROM TFTP 通讯协议从 Boot Server 下载启动安装程序所必须的文件( pxelinux.0 pxelinux.cfg/default )。 default 文件下载完成后,会根据该文件中定义的引导顺序,启动 Linux 安装程序的引导内核。
第五步:请求下载自动应答文件
客户端通过 pxelinux.cfg/default 文件成功的引导 Linux 安装内核后,安装程序首先必须确定你通过什么安装介质来安装 linux ,如果是通过网络安装( NFS, FTP, HTTP ),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才 PXE 不是已经获取过 IP 地址了吗?为什么现在还需要一次?这是由于 PXE 获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成 PXE 模块和安装程序是相对独立的, PXE 的网络配置并不能传递给安装程序。从而进行两次获取 IP 地址过程。
接着会读取该文件中指定的自动应答文件 ks.cfg 所在位置,根据该位置请求下载该文件。
第六步:客户端安装操作系统
ks.cfg 文件下载回来后,通过该文件找到 OS Server ,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server 和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将 BIOS 修改回从硬盘启动,不然的话又会重复的自动安装操作系统。
在上面介绍中 PXE client 是需要安装 Linux 的计算机, TFTP Server DHCP Server NFS Server 运行在另外一台 Linux Server 上。 Bootstrap 文件、配置文件、 Linux 内核都放置在 Linux Server TFTP 服务器的根目录下。而 Linux 根文件系统存放于 NFS Server 的共享目录中。
PXE client 在工作过程中,需要三个二进制文件: bootstrap Linux 内核和 Linux 根文件系统。 Bootstrap 文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的 Linux 内核以及 Linux 根文件系统。

 二、配置过程

 配置PXE安装,要进行如下步骤:
 ①  配置 DHCP ,用于给客户端提供 IP 地址及其它信息
 ②  配置 TFTP 服务器,用于提供客户端 PXE 引导所必须的文件
 ③  配置 NFS 服务器,用于存放安装树
 ④  配置 Kickstart ,用于自动应答安装
 ⑤  使用 PXE 功能引导客户机
   1、DHCP的安装与配置
PXE 引导安装过程中, PXE 客户端通过 DHCP 获取 PXE 服务器地址, PXE 引导文件名称;然后客户机在使用 TFTP 协议从 TFTP 服务器下载引导文件并执行,从而启动计算机安装程序。引导文件执行后,接着下载安装程序启动安装。 RedHat Linux 使用了 ISC dhcpd 软件,完成它的安装与配置。
1 )安装DHCP软件包
[    [root@qiuri Server]# rpm -ivh dhcp-3.0.5-13.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:dhcp                      ########################################### [100%]
[root@qiuri Server]#
2 )配置DHCP
安装完成后,复制 DHCPD 配置文件模版替换原配置文件 /etc/dhcpd.conf
[root@qiuri Server]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample      /etc/dhcpd.conf
接下来我们需要配置相关信息。为了满足我们的安装需求,假设 PXE 服务器、 DHCP 服务器、 TFTP 服务器全部安装在一台为 192.168.1.1 的计算机上。我们需要进行如下操作:
1 )修改 /etc/dhcpd.conf 文件,指定 IP 地址等信息。
2 )在 '''/etc/dhcpd.conf''' 中增加 tftp-server 需要推送给客户端的启动文件( bootstrap ): filename "pxelinux.0" ;因为 tftp 的默认目录是 /tftpboot ,所以文件的绝对路径就是: /tftpboot/pxelinux.0" ;当然也可以指定为其它的路径。
另外需要指定 next-server 参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件: next-server 192.168.1.1;
最终的配置文件结果如下所示:
[root@qiuri Server]# vi /etc/dhcpd.conf  
ddns-update-style interim;
ignore client-updates;
allow booting; # 定义能够 PXE 启动
allow bootp;  # 定义支持 bootp
subnet 192.168.1.0 netmask 255.255.255.0 {
        range  192.168.1.10 192.168.1.80;
        option routers                  192.168.1.1;
        option subnet-mask              255.255.255.0;
        default-lease-time 21600;
        max-lease-time 43200;
        next-server 192.168.1.1; #TFTP Server IP 地址
        filename "pxelinux.0";   #pxelinux 启动文件位置
}
配置完成后,重启 DHCP 服务,并将它设为开机自启动。
[root@qiuri Server]# /etc/init.d/dhcpd start
启动 dhcpd                                                [ 确定 ]
[root@qiuri Server]# chkconfig --level 35 dhcpd on
 
2、安装配置TFTP服务器
PXE 安装过程中,客户机在使用 TFTP 协议从 TFTP 服务器下载引导文件并执行。我们主要通过配置 TFTP 服务器和 PXE 的引导配置完成这个过程。
1 )安装配置TFTP服务器
首先,安装 TFTP 服务器软件包, RedHat 提供了如下两个软件包:
l  tftp-server :服务端程序
l tftp :客户端程序
[root@qiuri Server]# rpm -ivh tftp-server-0.42-3.1.i386.rpm
Preparing...                ########################################### [100%]
   1:tftp-server            ########################################### [100%]
[root@qiuri Server]# 
配置 tftp 服务
tftp 服务由 xinetd 服务管理。编辑 '''/etc/xinetd.d/tftp''' 文件,将 '''disable = yes''' 改为: disable = no
[root@qiuri Server]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       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 /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
从这里看出,默认选择 /tftpboot TFTP 服务器的根目录位置,配置完成后重启 xinetd 服务,使 TFTP 服务器生效。
[root@qiuri Server]# /etc/init.d/xinetd restart
2 PXE引导配置(bootstrap
PXE 启动映像文件由 syslinux 软件包提供, RedHat Enterprise Linux 光盘中已提供,如果没有此软件包可以到 syslinux 主页: http://syslinux.zytor.com/ 下载 rpm 来安装。
我们只要安装了 syslinux ,就会生成一个 pxelinux.0 ,将 pxelinux.0 这个文件复制到 '''/tftpboot''' 目录即可:
[root@qiuri Server]# rpm -ql syslinux |grep "pxelinux.0"
/usr/lib/syslinux/pxelinux.0
[root@qiuri Server]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
 
 
 

你可能感兴趣的:(linux,nfs,DHCP,pxe,kickstart)