利用Kickstart部署無人值守安裝源伺服器
一、基本概念
1、什麼是PXE
PXE(Pre-bootExecution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由此支援通過網路啟動作業系統,在啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial 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 上下載所需的檔案了.
2、什麼是Kickstart
Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在安裝過程中(不只侷限於生成Kickstart安裝檔案的機器)出現要填寫引數的情況,安裝程式首先會去查詢Kickstart生成的檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便需要安裝者手工干預了。所以,如果Kickstart檔案涵蓋了安裝過程中可能出現的所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重啟系統,並結束安裝.
3、PXE+Kickstart無人值守安裝作業系統完整過程如下
第一步:PXEClient向DHCP伺服器傳送請求
首先,將支援PXE的網路介面卡(NIC)的客戶端BIOS設定為網路啟動,通過PXE BootROM(自啟動晶片)會一UDP協議傳送一個廣播請求,向網路中的DHCP伺服器申請一個IP地址資訊.
第二步:DHCP伺服器提供資訊
DHCP伺服器收到客戶端請求,驗證是否來自PXEClient的請求,驗證通過後向客戶端迴響應資訊,包括:客戶端IP地址,TFTP Server、pxelinux.0檔名.
第三步:PXE客戶端請求下載啟動檔案
客戶端請求傳送啟動所需檔案,包括pxelinux.0、pxelinux. cfg/default、
第四步:BootInstall Server響應客戶端請求並傳送檔案
TFTP伺服器收到客戶端請求後,彼此間進行通訊應答,確定啟動引數,BootROM由TFTP通訊協議從BootServer下載啟動安裝程式所必需檔案(pxelinux.0pxelinux.cfg/default).default檔案下載完成後,會根據
該檔案中定義的引導順序,啟動Linux安裝程式的引導核心.
第五步:請求下載Kickstart配置檔案
客戶端通過pxelinux.cfg/default檔案成功的引導Linux執行是因為制訂了Kickstart配置檔案資訊所以當一vmlinuz、initrd.img組成的系統執行成功後系統確定你通過什麼安裝介質來安裝Linux如果是通過網路安裝(NFS、FTP、HTTP)則會在這個時候初始化網路,並請求下載Kickstart配置檔案.剛才PXE不是已經獲取過IP地址了嗎?為什麼現在還需要一次因為現在已經進入了有vmlinuz、initrd.img等檔案組成的系統中了,由於PXE的網路配置並不能傳遞給這個系統,所以才會進行兩次獲取IP地址過程.
第六步:客戶端安裝作業系統
將ks.cfg檔案下載後,通過該檔案找到OS Sserver,並按照該檔案的配置請求下載安裝過程需要的檔案,OS Server和客戶端建立連線後,將開始傳輸檔案,客戶端將開始安裝作業系統,安裝完成後,將會根據ks.cfg檔案設定來重啟或關機注意:安裝完成後開機一定要將BIOS修改會從硬碟啟動,不然的話又會重複的自動安裝作業系統.
以上理論部分摘自http://wxj121.blog.51cto.com/7136845/1638343
感謝軍爽博主的總結,如有侵權,請聯絡我,我將於第一時間刪除。
二、環境及所需軟體
伺服器端IP 192.168.1.2
Vmware下Centos6.5_x86_x64
網路模式為 Vmnet 1
需安裝的軟體
dhcp、tftp-server、pykickstart、syslinux、system-config-kickstart
[[email protected]_Server~]#yum-yinstalldhcptftp-serverpykickstartsyslinuxsystem-config-kickstart [[email protected]_Server~]#rpm-qadhcptftp-serverpykickstartsyslinuxsystem-config-kickstart tftp-server-0.49-7.el6.x86_64 syslinux-4.04-3.el6.x86_64 dhcp-4.1.1-43.P1.el6.centos.1.x86_64 system-config-kickstart-2.8.6.5-1.el6.noarch pykickstart-1.74.16-1.el6.noarch [[email protected]_Server~]#
掛載本地光碟到/mnt
[[email protected]_Server~]#mount/dev/cdrom/mnt mount:blockdevice/dev/sr0iswrite-protected,mountingread-only [[email protected]_Server~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda230G4.0G25G15%/ tmpfs495M80K495M1%/dev/shm /dev/sda1190M28M153M16%/boot /dev/sr04.4G4.4G0100%/mnt [[email protected]_Server~]#
二、相關配置
1、複製安裝源到tftpboot
[[email protected]_Server~]#cp/mnt/isolinux/*/var/lib/tftpboot/&&cp/usr/share/syslinux/pxelinux.0/var/lib/tftpboot/&&mkdir/var/lib/tftpboot/pxelinux.cfg&&cp/var/lib/tftpboot/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default [[email protected]_Server~]#
2、配置DHCP
[[email protected]_Server~]#\cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample/etc/dhcp/dhcpd.conf [[email protected]_Server~]#vim/etc/dhcp/dhcpd.conf
新增以下內容
subnet192.168.1.0netmask255.255.255.0{ range192.168.1.100192.168.1.200; #optiondomain-name-serverswww.test.com; #optiondomain-name"www.test.com"; #optionrouters192.168.1.253; #optionbroadcast-address10.5.5.31; default-lease-time600; max-lease-time7200; filename"pxelinux.0"; next-server192.168.1.2; }
3、配置NFS,並啟動相關服務
[[email protected]_Server~]#vim/etc/exports [[email protected]_Server~]#cat/etc/exports /mnt*(rw,sync) [[email protected]_Server~]#/etc/init.d/nfsrestart ShuttingdownNFSdaemon:[FAILED] ShuttingdownNFSmountd:[FAILED] ShuttingdownNFSquotas:[FAILED] ShuttingdownRPCidmapd:[失敗] StartingNFSservices:[OK] StartingNFSquotas:[OK] StartingNFSmountd:[OK] StartingNFSdaemon:[OK] 正在啟動RPCidmapd:[確定] [[email protected]_Server~]# 重啟dhcp服務 [[email protected]_Server~]#/etc/init.d/dhcpdrestart Startingdhcpd:[OK] [[email protected]_Server~]#/etc/init.d/xinetdrestart Stoppingxinetd:[OK] Startingxinetd:[OK] [[email protected]_Server~]#chkconfigtftpon [[email protected]_Server~]#chkconfigxinetdon [[email protected]_Server~]#
此時已經可以進行互動式安裝,根據實際情況選擇即可。
四、製作應答檔案,實現自動化安裝
需要藉助X Windows生產應答檔案
[[email protected]_Server~]#system-config-kickstart
配置完後要點檔案進行儲存,我在這儲存了/root下了
[[email protected]_Server~]#mkdir/pxefile [[email protected]_Server~]#cp-a/root/ks.cfg/pxefile/ [[email protected]_Server~]#vim/etc/exports [[email protected]_Server~]#cat/etc/exports /mnt*(rw,sync) /pxefile*(rw,sync) [[email protected]_Server~]#/etc/init.d/nfsrestart ShuttingdownNFSdaemon:[OK] ShuttingdownNFSmountd:[OK] ShuttingdownNFSquotas:[OK] ShuttingdownNFSservices:[OK] ShuttingdownRPCidmapd:[確定] StartingNFSservices:[OK] StartingNFSquotas:[OK] StartingNFSmountd:[OK] StartingNFSdaemon:[OK] 正在啟動RPCidmapd:[確定] [[email protected]_Server~]# 修改default檔案 [[email protected]_Server~]#vim/var/lib/tftpboot/pxelinux.cfg/default [[email protected]_Server~]#tail-5/var/lib/tftpboot/pxelinux.cfg/default labellinux menulabel^Install menudefault kernelvmlinuz appendinitrd=initrd.imgks=nfs:192.168.1.2:/pxefile/ks.cfg [[email protected]_Server~]#/etc/init.d/dhcpdrestart Shuttingdowndhcpd:[OK] Startingdhcpd:[OK] [[email protected]_Server~]#
客戶端啟動,無需互動。
在真實環境中,通常我們會發現一臺伺服器好幾塊硬碟,做完raid,整個硬碟有等10T,如果來使用kickstart自動安裝並分割槽呢;一般伺服器硬碟超過2T,如何來使用kickstart安裝配置呢?這裡就不能使用MBR方式來分割槽,需要採用GPT格式來引導並分割槽。
需要在ks.cfg末尾新增如下命令來實現需求:
%pre
parted -s /dev/sdb mklabel gpt
%end
轉載於:https://blog.51cto.com/linuxnote/1639532