Linux Kickstart無人值守安裝(上)

                         Linux Kickstart大規模部署安裝
   在我們的網絡維護生涯中,有不少朋友,感覺到自己在機械的做一件事情,在無聊、無趣和無奈中工作。尤其一些簡單重複的操作更容易讓大家感到工作的無趣。今天將給大家介紹如何大規模的部署RedHat Linux操作系統,避免了手工安裝的繁瑣。當然本方法也使用於一些特殊場合,譬如沒有光驅或光驅壞掉的計算機、手中沒有安裝光盤等情況。

   在安裝RedHat Linux企業版的過程中,我們都知道它允許通過NFSHTTPFTP協議來進行網絡安裝。但是在一般情況下我們需要有一個安裝引導介質(引導光盤、引導軟盤、U盤等),有沒有一種方法不通過引導光盤方式來安裝呢,而直接通過網絡來進行安裝?答案是有,即通過PXE技術實現。

一、基本原理

      PXE到底是什麼東東?
PXE(Pre-boot Execution Environment)是由Intel設計的協議,它可以使計算機通過網絡啓動。協議分爲clientserver兩端,PXE client在網卡的ROM中,當計算機引導時,BIOSPXE client調入內存執行,並顯示出命令菜單,經用戶選擇後,PXE client將放置在遠端的操作系統通過網絡下載到本地運行。
既然是通過網絡傳輸,就需要IP地址;也就是說在其啓動過程中,客戶端請求服務器分配IP地址,之後PXE Client使用TFTP Client 通過TFTPTrivial File Transfer Protocol)協議下載啓動安裝程序所需的文件。
簡單地說PXE網絡安裝,客戶機通過支持PXE的網卡向網絡中發送請求DHCP信息的廣播請求IP地址等信息,DHCP服務器給客戶端提供IP地址和其它信息(TFTP服務器、啓動文件等),之後請求並下載安裝需要的文件。在這個過程中需要一臺服務器來提供啓動文件、安裝文件、以及安裝過程中的自動應答文件等。下圖中介紹了Linux中自動安裝系統的詳細工作過程:
第一步:PXE ClientDHCP發送請求

首先,將支持PXE的網絡接口卡(NIC)的客戶端的BIOS設置成爲網絡啓動,通過PXE BootROM(自啓動芯片)會以UDP(簡單用戶數據報協議)發送一個廣播請求,向網絡中的DHCP服務器索取IP地址等信息。
第二步:DHCP服務器提供信息

DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了爲客戶端分配的IP地址、pxelinux啓動程序(TFTP)位置,以及配置文件所在位置。
第三步:PXE客戶端請求下載啓動文件

客戶端收到服務器的“迴應”後,會迴應一個幀,以請求傳送啓動所需文件。這些啓動文件包括:pxelinux.0pxelinux.cfg/defaultvmlinuzinitrd.img等文件。
第四步:Boot Server響應客戶端請求並傳送文件

當服務器收到客戶端的請求後,他們之間之後將有更多的信息在客戶端與服務器之間作應答, 用以決定啓動參數。BootROM TFTP 通訊協議從Boot Server下載啓動安裝程序所必須的文件(pxelinux.0pxelinux.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 ServerDHCP ServerNFS Server運行在另外一臺Linux Server上。Bootstrap文件、配置文件、Linux內核都放置在Linux ServerTFTP服務器的根目錄下。而Linux根文件系統存放於NFS Server的共享目錄中。
PXE client在工作過程中,需要三個二進制文件:bootstrapLinux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及Linux根文件系統。 

 二、配置過程

 配置PXE安裝,要進行如下步驟:
  配置DHCP,用於給客戶端提供IP地址及其它信息

 ② 配置TFTP服務器,用於提供客戶端PXE引導所必須的文件

 ③ 配置NFS服務器,用於存放安裝樹

 
 ④ 配置Kickstart,用於自動應答安裝
 ⑤ 使用PXE功能引導客戶機
   1、DHCP的安裝與配置
PXE引導安裝過程中,PXE客戶端通過DHCP獲取PXE服務器地址,PXE引導文件名稱;然後客戶機在使用TFTP協議從TFTP服務器下載引導文件並執行,從而啓動計算機安裝程序。引導文件執行後,接着下載安裝程序啓動安裝。RedHat Linux使用了ISCdhcpd軟件,完成它的安裝與配置。

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 ServerIP地址

        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

}

從這裏看出,默認選擇/tftpbootTFTP服務器的根目錄位置,配置完成後重啓xinetd服務,使TFTP服務器生效。

[root@qiuri Server]# /etc/init.d/xinetd restart

2PXE引導配置(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/

 
    本打算髮表在一篇中,但是系統老是提示超過8萬字節,也只能發兩篇了,點擊查看《Linux Kickstart無人值守安裝》後半部分。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章