Linux Kickstart大規模部署安裝
在我們的網絡維護生涯中,有不少朋友,感覺到自己在機械的做一件事情,在無聊、無趣和無奈中工作。尤其一些簡單重複的操作更容易讓大家感到工作的無趣。今天將給大家介紹如何大規模的部署RedHat Linux操作系統,避免了手工安裝的繁瑣。當然本方法也使用於一些特殊場合,譬如沒有光驅或光驅壞掉的計算機、手中沒有安裝光盤等情況。
在安裝RedHat Linux企業版的過程中,我們都知道它允許通過NFS、HTTP或FTP協議來進行網絡安裝。但是在一般情況下我們需要有一個安裝引導介質(引導光盤、引導軟盤、U盤等),有沒有一種方法不通過引導光盤方式來安裝呢,而直接通過網絡來進行安裝?答案是有,即通過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 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
}
[root@qiuri Server]# /etc/init.d/xinetd restart
2)PXE引導配置(bootstrap)
PXE啓動映像文件由syslinux軟件包提供,RedHat Enterprise Linux光盤中已提供,如果沒有此軟件包可以到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無人值守安裝》後半部分。