天天看點

linux kickstart無人值守批量安裝系統

                                                     <b>linux Kickstart</b><b>無人值守安裝</b><b></b>

    在我們的網絡維護生涯中,有不少朋友,感覺到自己在機械的做一件事情,在無聊、無趣和無奈中工作。尤其一些簡單重複的操作更容易讓大家感到工作的無趣。今天将給大家介紹如何大規模的部署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的網絡接口卡(NIC)的用戶端的BIOS設定成為網絡啟動,通過PXE BootROM(自啟動晶片)會以UDP(簡單使用者資料報協定)發送一個廣播請求,向網絡中的DHCP伺服器索取IP位址等資訊。

         DHCP伺服器收到用戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它将給用戶端一個“提供”響應,這個“提供”響應中包含了為用戶端配置設定的IP位址、pxelinux啟動程式(TFTP)位置,以及配置檔案所在位置。

     用戶端收到伺服器的“回應”後,會回應一個幀,以請求傳送啟動所需檔案。這些啟動檔案包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等檔案。

     當伺服器收到用戶端的請求後,他們之間之後将有更多的資訊在用戶端與伺服器之間作應答, 用以決定啟動參數。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根檔案系統。

<b>二、安裝的前提條件</b><b></b>

<b>2.1、PXE+KickStart</b><b>安裝的條件</b><b></b>

執行PXE+KickStart安裝需要的裝置為:

DHCP 伺服器;

TFTP 伺服器;

KickStart所生成的ks.cfg配置檔案

一台存放系統安裝檔案的伺服器,如 NFS、HTTP 或 FTP 伺服器。

帶有一個 PXE 支援網卡的将安裝的主機;

<b>2.2、安裝過程中所需要的</b><b>rpm</b><b>包及擷取</b><b></b>

<b>需要的</b><b>rpm</b><b>軟體包</b><b></b>

nfs-utils-lib-*

nfs-utils- *

xinetd-*

tftp-server-*

dhcp-*

dhcp-devel-*

system-config-kickstart-*

<b>2.3 </b><b>軟體包的擷取</b><b> </b><b></b>

1、本地方式

一般情況下一些常用的安裝包都可以在你的安裝CD光牒中找到。

2、網絡方式

如果你無法在安裝CD光牒中找到适合的安裝包,你可以通過yum這種方式安裝。

<b>三、操作步驟:</b>

<b>要求:</b>有兩台虛拟機分别是伺服器和用戶端,伺服器的ip位址是:192.168.0.251 子網路遮罩是:255.255.255.0。用戶端隻需開機就可以自動安裝作業系統。

<b>3.1 </b><b>配置</b><b>IP</b><b>位址</b><b></b>

(1)在終端裡輸入system-config-network-tui,打開IP配置圖形界面。

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

(2)重新開機網卡,service network restart  

linux kickstart無人值守批量安裝系統

<b>  3.2 </b><b>安裝</b><b>rpm</b><b>包</b><b></b>

   配置該伺服器需要安裝dhcpd,tftp-server,nfs,system-config-kickstart,等包。首先需要檢查本機上是否已經安裝了這些包,輸入rpm –qa | grep +包名

linux kickstart無人值守批量安裝系統

   如果沒有安裝這些包則需要通過rpm –ivh +包名來安裝。

首先需要用mount –t iso9660 /dev/hdc /mnt/cdrom(其中cdrom是我自己建的)來将系統CD光牒挂載到/mnt/cdrom目錄下。然後安裝需要的rpm包。

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

<b>3.3 </b><b>配置</b><b>dhcp</b><b>服務</b>

使用vim編輯器編輯/etc/dhcpd.conf檔案。由于是第一次編輯dhcp伺服器,是以地面的檔案時空的,是以我們要做一些相應的操作哈!方法如下圖:

linux kickstart無人值守批量安裝系統

回車後即可看到dhcp伺服器的配置檔案了哈,不過這隻是原始的檔案,是以我們需要做一些的修改哦!

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

<b> 3.4 </b><b>配置</b><b>tftp</b><b>服務</b>

tftp是為了給待安裝的機器發送檔案的簡單的檔案傳輸服務。這個配置還是比較簡單的,隻需把配置檔案中的disable那項的yes改成no即可哈!

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

<b>3.5 </b><b>配置</b><b>nfs</b><b>服務</b><b></b>

nfs服務是将安裝過程所需要的一些檔案共享出來,這個也是比較簡單的。

其中的/kickstart  /linuxinstall檔案都是我們自己建立的。

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

 啟動後檢視是否共享成功哈!

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

呵呵  成功了哈!!!!!!!!

<b>3.6 </b><b>配置</b><b>ks.cfg</b><b>檔案</b><b></b>

ks.cfg是待安裝機器的所有的配置檔案,每台機器在安裝過linux系統以後都會自動生成一個ks.cfg檔案裡面記錄了在安裝系統的時候所做的所有操作,檔案的位置位于/root目錄下的anaconda-ks.cfg。

linux kickstart無人值守批量安裝系統

我們可以檢視下他的配置…………………

linux kickstart無人值守批量安裝系統

我們可以通過enter鍵和空格鍵檢視哈,我就不過做了哈,你們可以44

linux kickstart無人值守批量安裝系統

接下來就要真正的配置ks.cfg檔案了,這個有點麻煩,這裡我們可以通過圖形界面來配置

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

在這裡我們最好把防火牆關掉,防止出項不必要的意外嘛…………

linux kickstart無人值守批量安裝系統

儲存并退出

linux kickstart無人值守批量安裝系統

接下檢視ks.cfg檔案,并作進一步修改哈、、、、、、、、

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

呵呵,ks.cfg配置王成後可以說我們的伺服器已經配置好了一半了,當然了ks.cfg檔案要是出現錯誤,那就好麻煩了,仔細點啊。

<b>3.7 </b><b>複制相應的檔案和建立相應的共享檔案夾</b>

接下來是幾條指令:

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

 <b>3.8</b><b>編輯我們的/tftpboot/pxelinux.cfg/default檔案</b>

<b></b>

将timeout 修改成6(隻要小一點就可以了),防止等待的時間過長哈!!

然後就是将label linux後面的檔案修改成:

kernel vmlinuz

append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks noipv6

由于default這個檔案是隻讀的,是以我們要加上寫的權限,否則無法編輯

linux kickstart無人值守批量安裝系統

接下來,我們來編輯這個檔案…………

linux kickstart無人值守批量安裝系統

<b>3.9</b><b>将CD光牒中的檔案全部複制到/linuxinstall下</b>

   由于我們之前把CD光牒挂載在/mnt/cdrom下,是以需要将其解除安裝掉,之後再将其挂載到/linuxinstall下

linux kickstart無人值守批量安裝系統

<b>3.10</b><b>啟動相關的服務并将其全部設定成開機啟動</b>

linux kickstart無人值守批量安裝系統

<b>3.11</b><b>關閉防火牆和iptables以及selinux</b>

防火牆的關閉,在終端下輸入setup,如下圖所示:

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

關閉iptables,如下圖所示:

linux kickstart無人值守批量安裝系統

關閉selinux,如下圖所示:

linux kickstart無人值守批量安裝系統

到了這裡我們的伺服器基本上就配置完成了,過程挺複雜的哈…………

四、用戶端的測試過程

啟動用戶端的機器,有時候不需要将用戶端的機器設定成網絡啟動,有的則需要設定成網路啟動。

但要注意的是,設定成網絡啟動後,在用戶端安裝完成後一定要及時的将系統設定成硬碟啟動,否則用戶端的系統将一直安裝下去。

linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統
linux kickstart無人值守批量安裝系統

這個時候系統已經安裝完畢啦哈…………

<b>五、常見故障排除</b><b></b>

<b>5.1 </b><b>無法配置設定到</b><b>IP</b><b>位址</b><b>,即</b><b>dhcp</b><b>伺服器無法啟動</b><b></b>

出現的問題:

linux kickstart無人值守批量安裝系統

解決方法:

如果安裝開始的時候無法配置設定到IP位址,則說明你伺服器的dhcp.conf配置的有問題,有可能你的文法有問題,比如說少了個分号(;),又或者單詞寫的有問題,這些文法錯誤會導緻dhcp服務啟動失敗。

<b>5.2</b><b> tftp</b><b>無法連接配接</b><b></b>

<b>出現的問題:</b><b></b>

linux kickstart無人值守批量安裝系統

<b>解決的方法:</b><b></b>

主要原因是在你的dhcp.conf檔案的next-server和tftp-server-name兩個字段上,如果這兩個字段沒有正确的指出tftp伺服器的位址的話,一般就會出現這樣的問題。這類問題一般都出現在dhcp伺服器的配置上面,因為當待安裝機器在區域網路内廣播需要配置設定IP位址的時候,伺服器會将IP位址和一些安裝檔案的位址傳回給待安裝機器上,如果dhcp出現了問題則無法将這些位址傳回回來,這就導緻了待安裝機器不知道從何處來擷取安裝檔案。

<b>5.3</b><b> tftp</b><b>已經連接配接上,但用戶端就是無法啟動</b><b></b>

<b>出現的問題:</b>

linux kickstart無人值守批量安裝系統

這主要是由于,伺服器端的防火牆、iptables和selinux沒有關閉。嘗試着将這些關閉,應該可以解決的。

<b>5.4 </b><b>無法擷取</b><b>ks.cfg</b><b>檔案</b><b></b>

可以擷取到dhcp伺服器配置設定的IP位址,也可以從tftp伺服器上擷取核心檔案,并加載,但是在讀取ks.cfg檔案的時候出現了錯誤。如下圖。

linux kickstart無人值守批量安裝系統

<b>解決的方法:</b>

出現了這樣的問題則說明你的用戶端是知道ks.cfg的位置的,但是就是無法讀取,是以我們看看伺服器的ks.cfg的權限,一般都是用戶端的權限不夠,是以隻要更改一下ks.cfg檔案的權限這樣的問題一般都是可以解決的。使用chmod指令來更改權限。

linux kickstart無人值守批量安裝系統

六、實驗總結

kickstart技術是伴随linux,但它确實非常的友善和實用,尤其是在批量安裝系統的方面更是展現出了它的價值。通過本次kickstart實驗,簡單的介紹了nfs、dhcp、tftp等服務的使用方法。由于接觸linux比較晚,此次實驗筆者前前後後做了幾十次的實驗,但其中還是出現較多的錯誤,但筆者相信出錯并不可怕,可怕的是錯了就餒。

此次實驗僅供參考,如當中還有别的錯誤,請原諒,也請大家改正!!!!!!!

繼續閱讀