<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中自動安裝系統的詳細工作過程:
首先,将支援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配置圖形界面。
(2)重新開機網卡,service network restart
<b> 3.2 </b><b>安裝</b><b>rpm</b><b>包</b><b></b>
配置該伺服器需要安裝dhcpd,tftp-server,nfs,system-config-kickstart,等包。首先需要檢查本機上是否已經安裝了這些包,輸入rpm –qa | grep +包名
如果沒有安裝這些包則需要通過rpm –ivh +包名來安裝。
首先需要用mount –t iso9660 /dev/hdc /mnt/cdrom(其中cdrom是我自己建的)來将系統CD光牒挂載到/mnt/cdrom目錄下。然後安裝需要的rpm包。
<b>3.3 </b><b>配置</b><b>dhcp</b><b>服務</b>
使用vim編輯器編輯/etc/dhcpd.conf檔案。由于是第一次編輯dhcp伺服器,是以地面的檔案時空的,是以我們要做一些相應的操作哈!方法如下圖:
回車後即可看到dhcp伺服器的配置檔案了哈,不過這隻是原始的檔案,是以我們需要做一些的修改哦!
<b> 3.4 </b><b>配置</b><b>tftp</b><b>服務</b>
tftp是為了給待安裝的機器發送檔案的簡單的檔案傳輸服務。這個配置還是比較簡單的,隻需把配置檔案中的disable那項的yes改成no即可哈!
<b>3.5 </b><b>配置</b><b>nfs</b><b>服務</b><b></b>
nfs服務是将安裝過程所需要的一些檔案共享出來,這個也是比較簡單的。
其中的/kickstart /linuxinstall檔案都是我們自己建立的。
啟動後檢視是否共享成功哈!
呵呵 成功了哈!!!!!!!!
<b>3.6 </b><b>配置</b><b>ks.cfg</b><b>檔案</b><b></b>
ks.cfg是待安裝機器的所有的配置檔案,每台機器在安裝過linux系統以後都會自動生成一個ks.cfg檔案裡面記錄了在安裝系統的時候所做的所有操作,檔案的位置位于/root目錄下的anaconda-ks.cfg。
我們可以檢視下他的配置…………………
我們可以通過enter鍵和空格鍵檢視哈,我就不過做了哈,你們可以44
接下來就要真正的配置ks.cfg檔案了,這個有點麻煩,這裡我們可以通過圖形界面來配置
在這裡我們最好把防火牆關掉,防止出項不必要的意外嘛…………
儲存并退出
接下檢視ks.cfg檔案,并作進一步修改哈、、、、、、、、
呵呵,ks.cfg配置王成後可以說我們的伺服器已經配置好了一半了,當然了ks.cfg檔案要是出現錯誤,那就好麻煩了,仔細點啊。
<b>3.7 </b><b>複制相應的檔案和建立相應的共享檔案夾</b>
接下來是幾條指令:
<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這個檔案是隻讀的,是以我們要加上寫的權限,否則無法編輯
接下來,我們來編輯這個檔案…………
<b>3.9</b><b>将CD光牒中的檔案全部複制到/linuxinstall下</b>
由于我們之前把CD光牒挂載在/mnt/cdrom下,是以需要将其解除安裝掉,之後再将其挂載到/linuxinstall下
<b>3.10</b><b>啟動相關的服務并将其全部設定成開機啟動</b>
<b>3.11</b><b>關閉防火牆和iptables以及selinux</b>
防火牆的關閉,在終端下輸入setup,如下圖所示:
關閉iptables,如下圖所示:
關閉selinux,如下圖所示:
到了這裡我們的伺服器基本上就配置完成了,過程挺複雜的哈…………
四、用戶端的測試過程
啟動用戶端的機器,有時候不需要将用戶端的機器設定成網絡啟動,有的則需要設定成網路啟動。
但要注意的是,設定成網絡啟動後,在用戶端安裝完成後一定要及時的将系統設定成硬碟啟動,否則用戶端的系統将一直安裝下去。
這個時候系統已經安裝完畢啦哈…………
<b>五、常見故障排除</b><b></b>
<b>5.1 </b><b>無法配置設定到</b><b>IP</b><b>位址</b><b>,即</b><b>dhcp</b><b>伺服器無法啟動</b><b></b>
出現的問題:
解決方法:
如果安裝開始的時候無法配置設定到IP位址,則說明你伺服器的dhcp.conf配置的有問題,有可能你的文法有問題,比如說少了個分号(;),又或者單詞寫的有問題,這些文法錯誤會導緻dhcp服務啟動失敗。
<b>5.2</b><b> tftp</b><b>無法連接配接</b><b></b>
<b>出現的問題:</b><b></b>
<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>
這主要是由于,伺服器端的防火牆、iptables和selinux沒有關閉。嘗試着将這些關閉,應該可以解決的。
<b>5.4 </b><b>無法擷取</b><b>ks.cfg</b><b>檔案</b><b></b>
可以擷取到dhcp伺服器配置設定的IP位址,也可以從tftp伺服器上擷取核心檔案,并加載,但是在讀取ks.cfg檔案的時候出現了錯誤。如下圖。
<b>解決的方法:</b>
出現了這樣的問題則說明你的用戶端是知道ks.cfg的位置的,但是就是無法讀取,是以我們看看伺服器的ks.cfg的權限,一般都是用戶端的權限不夠,是以隻要更改一下ks.cfg檔案的權限這樣的問題一般都是可以解決的。使用chmod指令來更改權限。
六、實驗總結
kickstart技術是伴随linux,但它确實非常的友善和實用,尤其是在批量安裝系統的方面更是展現出了它的價值。通過本次kickstart實驗,簡單的介紹了nfs、dhcp、tftp等服務的使用方法。由于接觸linux比較晚,此次實驗筆者前前後後做了幾十次的實驗,但其中還是出現較多的錯誤,但筆者相信出錯并不可怕,可怕的是錯了就餒。
此次實驗僅供參考,如當中還有别的錯誤,請原諒,也請大家改正!!!!!!!