1. 程式人生 > >CentOS 6.9下PXE+Kickstart無人值守安裝操作系統附常見問題

CentOS 6.9下PXE+Kickstart無人值守安裝操作系統附常見問題

參數 rii 註釋 config 實現 記錄 centos 6 的人 工具

CentOS 6.9下PXE+Kickstart無人值守安裝操作系統

一、簡介

1.1 什麽是PXE

PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。

嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE 協議可以使計算機通過網絡啟動。此協議分為 Client端和 Server 端,而PXE Client則在網卡的 ROM 中。當計算機引導時,BIOS 把 PXE Client 調入內存中執行,然後由 PXE Client 將放置在遠端的文件通過網絡下載到本地運行。運行 PXE 協議需要設置 DHCP 服務器和 TFTP 服務器。DHCP 服務器會給 PXE Client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE Client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE Client 的 ROM 中,已經存在了 TFTP Client,那麽它就可以通過 TFTP 協議到 TFTP Server 上下載所需的文件了。

PXE的工作過程:

  1. PXE Client 從自己的PXE網卡啟動,向本網絡中的DHCP服務器索取IP;

  2. DHCP 服務器返回分配給客戶機的IP 以及PXE文件的放置位置(該文件一般是放在一臺TFTP服務器上) ;

  3. PXE Client 向本網絡中的TFTP服務器索取pxelinux.0 文件;

  4. PXE Client 取得pxelinux.0 文件後之執行該文件;

  5. 根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和文件系統 ;

  6. 進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;

詳細工作流程,請參考下面這幅圖:

1.2 什麽是Kickstart

Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工幹預填寫的各種參數,並生成一個名為ks.cfg的文件。如果在安裝過程中(不只局限於生成Kickstart安裝文件的機器)出現要填寫參數的情況,安裝程序首先會去查找Kickstart生成的文件,如果找到合適的參數,就采用所找到的參數;如果沒有找到合適的參數,便需要安裝者手工幹預了。所以,如果Kickstart文件涵蓋了安裝過程中可能出現的所有需要填寫的參數,那麽安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後就去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啟系統,並結束安裝。

PXE+Kickstart 無人值守安裝操作系統完整過程如下:

二、系統環境

實驗環境:VMware Workstation 10

系統平臺:CentOS release 6.9 (最小化安裝)

網絡模式:NAT模式(共享主機的IP地址)

DHCP / TFTP IP:192.168.111.130

HTTP / FTP / NFS IP:192.168.111.130

防火墻已關閉/iptables: Firewall is not running.

SELINUX=disabled

三、準備工作

生成ks.cfg 文件

通常,我們在安裝操作系統的過程中,需要大量的和服務器交互操作,為了減少這個交互過程,kickstart就誕生了。使用這種kickstart,只需事先定義好一個Kickstart自動應答配置文件ks.cfg(通常存放在安裝服務器上),並讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了在安裝過程中多次的人機交互,從而實現無人值守的自動化安裝。

生成kickstart配置文件的三種方法:

方法1、 每安裝好一臺Centos機器,Centos安裝程序都會創建一個kickstart配置文件,記錄你的真實安裝配置。如果你希望實現和某系統類似的安裝,可以基於該系統的kickstart配置文件來生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位於/root/anaconda-ks.cfg)
方法2、Centos提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Linux系統上運行該工具,就可以很容易地創建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).網上有很多用CentOS桌面版生成ks文件的文章,如果有現成的系統就沒什麽可說。但沒有現成的,也沒有必要去用桌面版,命令行也很簡單。
方法3、閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創建你自己的kickstart配置文件。
四、配置HTTP安裝方式

系統的安裝方式可以選擇HTTP、FTP、 NFS,我們這裏介紹HTTP方式的安裝,其他兩種方式的安裝,大家可以自行百度。

4.1 安裝並配置HTTP

yum install httpd –y

rpm -qa|grep httpd

開啟服務並設置開機啟動

/etc/init.d/httpd start

chkconfig --level 35 httpd on

4.2 加載ISO鏡像

在虛擬機中設置加載ISO鏡像。

將iso文件掛載至/mnt/cdrom.

4.3 復制光盤全部內容至http 的根目錄/var/www/html/ 下

cp -r /mnt/cdrom/ /var/www/html/

HTTP部分設置完畢。

五、配置TFTP

5.1 安裝tftp-server

yum install tftp-server –y

5.2 啟用tftp 服務

vi /etc/xinetd.d/tftp

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
將disable 設置為no

5.3 啟動tftp服務

因為tftp服務是掛載在超級進程xinetd 下的,所以通過啟動xinetd 來啟動tftp服務。

/etc/init.d/xinetd restart

九、測試安裝

自動化安裝系統配置完畢,下面啟動一臺新的機器進行測試,網絡連接模式選擇NAT模式。

在使用PXE+Kickstart無人值守安裝操作系統的時候
總是會出現一些意料之外的問題,以下給出一些個人的解決辦法:

1.TPTP can not open connection

此問題出現的時候,很多情況是dhcp的配置存在問題。

subnet 192.168.174.0 netmask 255.255.255.0 { #提供DHCP服務的網段
range 192.168.174.3 192.168.174.251; #地址池
#option domain-name "internal.example.org"; #分配DNS域,由於在虛擬機上創建,註釋
option routers 192.168.174.2; #網關
next-server 192.168.174.145; #tftp服務器地址
filename "pxelinux.0"; #PXE引導文件
default-lease-time 600; #默認租約時常
max-lease-time 7200; #最大租約時常
option domain-name-servers 192.168.1.1; #分配DNS地址,一般寫真實DNS地址,
}

此配置有幾個需要註意的地方:
option routers 192.168.174.2; #網關
next-server 192.168.174.145; #tftp服務器地址
此處的網關是VMware為虛擬機提供的網關
使用VMware做實驗的時候,此時的虛擬機的tftp的服務器地址為PXE的IP地址

2.Error down loading kickstart file

此處需要註意的是ks.cfg文件的權限問題。
一般情況下,此處的權限問題需大於或者等於755.

3.Unable to retrieve

此處的問題還是權限問題,安裝完成相關服務後
在/var/ftp下有pub目錄,把光盤文件直接掛在在此處。文件的權限大於或者等於755

4.the following problem occurred on line 42 of the kickstart file

對比之下,可以發現,第42行除應為“--ondrive”,但是一不小心寫成了“--oindriive”
這是由於在編輯配置文件的時候不小心造成的,這個在以後需要註意

5.not enough free space on disks

此處的問題是在對磁盤進行分區的時候,分區的容量超出了整個虛擬機的20G的容量。原來的代碼:

重新計算後完成的代碼如圖:

6.unable to read package metadata

此問題主要是由於ks.cfg文件配置的不正確,主要出現是在分區完成以後了
主要的原因可能是由於打開了行代碼

repo開始的這段代碼需要註釋掉。
當然,此處重新開機也ing不能解決問題了,次處修改完成後,需要長頭開始安裝

CentOS 6.9下PXE+Kickstart無人值守安裝操作系統附常見問題