天天看點

Linux Kickstart無人值守安裝(上)

                         Linux Kickstart大規模部署安裝

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

   在安裝RedHat Linux企業版的過程中,我們都知道它允許通過NFS、HTTP或FTP協定來進行網絡安裝。但是在一般情況下我們需要有一個安裝引導媒體(引導CD光牒、引導軟碟、U盤等),有沒有一種方法不通過引導CD光牒方式來安裝呢,而直接通過網絡來進行安裝?答案是有,即通過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無人值守安裝(上)

第一步:PXE Client向DHCP發送請求

首先,将支援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 LinuxCD光牒中已提供,如果沒有此軟體包可以到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無人值守安裝》後半部分。

繼續閱讀