linux Kickstart無人值守安裝
在我們的網路維護生涯中,有不少朋友,感覺到自己在機械的做一件事情,在無聊、無趣和無奈中工作.尤其一些簡單重複的操作更容易讓大家感到工作的無趣.今天將給大家介紹如何大規模的部署RedHat Linux操作系統,避免了手工安裝的繁瑣.當然本方法也使用於一些特殊場合,譬如沒有光碟機或光碟機壞掉的計算機、手中沒有安裝光碟等情況.
在安裝RedHat Linux
企業版的過程中,我們都知道它允許通過NFS、HTTP或FTP協議來進行網路安裝.但是在一般情況下我們需要有一個安裝引導介質(引導光碟、引導軟盤、U盤等),有沒有一種方法不通過引導光碟方式來安裝呢,而直接通過網路來進行安裝?答案是有,即通過PXE技術實現.那麼PXE到底是什麼呢?
PXE(Pre-boot Execution Environment)是由英特爾設計的協議,它可以使計算機通過網路啟動.協議分為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根文件系統.二、安裝的前提條件
2.1、PXE KickStart安裝的條件
執行PXE KickStart安裝需要的設備為:
DHCP 伺服器;
TFTP 伺服器;
KickStart所生成的ks.cfg配置文件
一台存放系統安裝文件的伺服器,如 NFS、
HTTP 或 FTP 伺服器.帶有一個 PXE 支持網卡的將安裝的主機;
2.2、安裝過程中所需要的
rpm包及獲取需要的rpm軟體包
nfs-utils-lib-*
nfs-utils- *
xinetd-*
tftp-server-*
dhcp-*
dhcp-devel-*
system-config-kickstart-*
2.3 軟體包的獲取
1、本地方式
一般情況下一些常用的安裝包都可以在你的安裝光碟中找到.
2、網路方式
如果你無法在安裝光碟中找到適合的安裝包,你可以通過
yum這種方式安裝.三、操作步驟:
要求:有兩台虛擬機分別是伺服器和客戶端,伺服器的ip地址是:192.168.0.251 子網掩碼是:
255.255.255.0.客戶端只需開機就可以自動安裝操作系統.3.1 配置IP地址
(1
)在終端里輸入system-config-network-tui,打開IP配置圖形界面.
(2)重啟網卡,
service network restart3.2 安裝rpm包
配置該伺服器需要安裝dhcpd,
tftp-server,nfs,system-config-kickstart,等包.首先需要檢查本機上是否已經安裝了這些包,輸入rpm –qa | grep 包名
如果沒有安裝這些包則需要通過rpm –ivh 包名來安裝.首先需要用mount –t iso9660 /dev/hdc /mnt/cdrom(其中cdrom是我自己建的)來將系統光碟掛載到
/mnt/cdrom目錄下.然後安裝需要的rpm包.
3.3 配置dhcp服務
使用vim編輯器編輯/etc/dhcpd.conf文件.由於是第一次編輯dhcp伺服器,地面的文件時空的,因此我們要做一些相應的操作哈!方法如下圖:
回車后即可看到dhcp伺服器的配置文件了哈,不過這只是原始的文件,因此我們需要做一些的修改哦!
3.4 配置tftp服務
tftp是為了給待安裝的機器發送文件的簡單的文件傳輸服務.這個配置還是比較簡單的,只需把配置文件中的disable那項的yes改成
no即可哈!
3.5 配置nfs服務
nfs服務是將安裝過程所需要的一些文件共享出來,這個也是比較簡單的.其中的
/kickstart /linuxinstall文件都是我們自己建立的.啟動后查看是否共享成功哈!
呵呵 成功了哈!!!!!!!!
3.6 配置ks.cfg文件
ks.cfg是待安裝機器的所有的配置文件,每台機器在安裝過linux系統以後都會自動生成一個ks.cfg文件裡面記錄了在安裝系統的時候所做的所有操作,文件的位置位於/root目錄下的anaconda-ks.cfg.
我們可以查看下他的配置…………………
我們可以通過enter鍵和空格鍵查看哈,我就不過做了哈,你們可以44
接下來就要真正的配置ks.cfg文件了,這個有點麻煩,這裡我們可以通過圖形界面來配置
在這裡我們最好把防火牆關掉,防止出項不必要的意外嘛…………
保存並退出
接下查看ks.cfg文件,並作進一步修改哈、、、、、、、、
呵呵,ks.cfg配置王成后可以說我們的伺服器已經配置好了一半了,當然了ks.cfg文件要是出現錯誤,那就好麻煩了,仔細點啊.
3.7
複製相應的文件和創建相應的共享文件夾接下來是幾條命令:
3.8編輯我們的/tftpboot/pxelinux.cfg/default文件
將timeout 修改成6(只要小一點就可以了
),防止等待的時間過長哈!!然後就是將label linux後面的文件修改成:kernel vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks noipv6
由於default這個文件是只讀的,因此我們要加上寫的許可權,否則無法編輯
接下來,我們來編輯這個文件…………
3.9將光碟中的文件全部複製到/linuxinstall下
由於我們之前把光碟掛載在/mnt/cdrom下,因此需要將其卸載掉,之後再將其掛載到/linuxinstall下
3.10啟動相關的服務並將其全部設置成開機啟動
3.11關閉防火牆和iptables以及selinux
防火牆的關閉,在終端下輸入setup,如下圖所示:
關閉iptables,如下圖所示:
關閉selinux,如下圖所示:
到了這裡我們的伺服器基本上就配置完成了,過程挺複雜的哈…………
四、客戶端的測試過程
啟動客戶端的機器,有時候不需要將客戶端的機器設置成網路啟動,有的則需要設置成網路啟動.
但要注意的是,設置成網路啟動后,在客戶端安裝完成後一定要及時的將系統設置成硬碟啟動,否則客戶端的系統將一直安裝下去.
這個時候系統已經安裝完畢啦哈…………
五、常見故障排除
5.1 無法分配到IP地址,即dhcp伺服器無法啟動
出現的問題:
解決方法:
如果安裝開始的時候無法分配到IP地址,則說明你伺服器的dhcp.conf配置的有問題,有可能你的語法有問題,比如說少了個分號(;),又或者單詞寫的有問題,這些語法錯誤會導致dhcp服務啟動失敗.
5.2 tftp無法連接
出現的問題:
解決的方法:
主要原因是在你的dhcp.conf文件的next-server和tftp-server-name兩個欄位上,如果這兩個欄位沒有正確的指出tftp伺服器的地址的話,一般就會出現這樣的問題.這類問題一般都出現在dhcp伺服器的配置上面,當待安裝機器在區域網內廣播需要分配
IP地址的時候,伺服器會將IP地址和一些安裝文件的地址返回給待安裝機器上,如果dhcp出現了問題則無法將這些地址返回回來,這就導致了待安裝機器不知道從何處來獲取安裝文件.5.3 tftp已經連接上,但客戶端就是無法啟動
出現的問題:
解決的方法:
這主要是由於,伺服器端的防火牆、iptables和selinux沒有關閉.嘗試著將這些關閉,應該可以解決的.
5.4 無法獲取ks.cfg文件
出現的問題:
可以獲取到
dhcp伺服器分配的IP地址,也可以從tftp伺服器上獲取內核文件,並載入,但是在讀取ks.cfg文件的時候出現了錯誤.如下圖.
解決的方法:
出現了這樣的問題則說明你的客戶端是知道
ks.cfg的位置的,但是就是無法讀取,我們看看伺服器的ks.cfg的許可權,一般都是客戶端的許可權不夠,只要更改一下ks.cfg文件的許可權這樣的問題一般都是可以解決的.使用chmod命令來更改許可權.
六、實驗總結
kickstart技術是伴隨linux,但它確實非常的方便和實用,尤其是在批量安裝系統的方面更是體現出了它的價值.通過本次kickstart實驗,簡單的介紹了nfs、dhcp、tftp等服務的使用方法.由於接觸linux比較晚,此次實驗筆者前前後後做了幾十次的實驗,但其中還是出現較多的錯誤,但筆者相信出錯並不可怕,可怕的是錯了就餒.
此次實驗僅供參考,如當中還有別的錯誤,請原諒,也請大家改正!!!!!!!
本文出自 「藍色北極星」 博客,請務必保留此出處http://houyongkai.blog.51cto.com/2256917/404775
[火星人 ] linux kickstart無人值守批量安裝系統已經有523次圍觀