1. 程式人生 > 實用技巧 >PXE+Kickstart無人值守安裝系統

PXE+Kickstart無人值守安裝系統

PXE+Kickstart無人值守安裝系統

一、介紹
二、原理
三、安裝部署PXE+kickstart
四、安裝TFTP
五、安裝DHCP
六、生成kickstart(ks.cfg)檔案
七、安裝HTTP
八、虛擬機器測試自動安裝

一、介紹

CentOS的安裝方法挺多,最常見的有光碟、Kickstart無人值守安裝、U盤安裝及ISO硬碟安裝等。如果現在讓你安裝100臺伺服器,甚至更多臺伺服器,你會用什麼辦法安裝呢,用光碟?這樣要損壞多少張光碟呢,價格也不菲,U盤安裝?一臺一臺接,很累好不好,用kickstart無人值守安裝的方法,可以在內網批量安裝新伺服器系統,這種方法極大地簡化了用光碟重複安裝的過程,極大地提高了工作效率。

二、原理

1.什麼是PXE

(1)PXE不是一種安裝方式,而是一種引導方式
(2)PXE(Pre-bootExecutionEnvironment)協議可以使計算機通過網路啟動
(3)採用C/S結構

wKiom1j4KpLx8CBAAACtSxB_1Xs587.png-wh_50

2.PXE的工作過程

(1)PXEClient向DHCP傳送請求
PXEClient從自己的PXE網絡卡啟動,通過PXEBootROM(自啟動晶片)會以UDP協議傳送一個廣播請求,向本網路中的DHCP伺服器索取IP。

(2)DHCP伺服器提供資訊
DHCP伺服器收到客戶端的請求,驗證是否是合法的PXEClient的請求,驗證通過它將給客戶端一個提供相應,
這個提供相應中包含了為客戶端分配的IP地址、pxelinux啟動程式(TFTP)位置,以及配置檔案所在位置。

(3)PXE客戶端請求下載啟動檔案
客戶端收到伺服器的迴應後,會迴應一個幀,以請求傳送啟動所需檔案。這些檔案包括:pxelinux.0、pxelinux.cfg/default、initrd.img等檔案。

(4)BootServer響應客戶端請求並傳送檔案
當伺服器收到客戶端的請求後,他們之間之後將有更多的資訊在客戶端與伺服器之間作應答,用以決定啟動引數。
BootROM由TFTP通訊協議從BootServer下載啟動安裝程式所必須的檔案(pxelinux.0、pxelinux.cfg/default)。
default檔案下載完成後,會根據該檔案中定義的引導順序,啟動Liunx安裝程式的引導核心。

(5)請求下載自動應答檔案
客戶端通過pxelinux.cfg/default檔案成功的引導Linux安裝核心後,安裝程式首先必須確定你通過什麼介質來安裝linux
如果通過網路安裝(NFS.FTP.HTTP),則會在這個時候初始化網路,並定位安裝源位置。
接著會讀取default檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載該檔案。

(6)將ks.cfg檔案下載回來後,通過該檔案找到OSServer,並安裝該檔案的配置請求下載安裝過程需要的軟體包。
OSServer和客戶端建立連線後,將開始傳輸軟體包,客戶端將開始安裝作業系統。安裝完成後,將提示重新引導計算機。

補充資訊,這裡圖文並茂介紹PXE工作流程

http://www.zyops.com/autoinstall-kickstart

三、部署安裝PXE+Kickstart

1.系統環境準備

[[email protected]~]#uname-a				#這是一臺桌面GUN的Linux,可能你問為什麼要用桌面呢,後面要用到啦
Linuxpxe2.6.32-504.el6.x86_64#1SMPWedOct1504:27:16UTC2014x86_64x86_64x86_64GNU/Linux
[[email protected]~]#uname-m				
x86_64						#64位系統
[[email protected]
~]#cat/etc/redhat-release CentOSrelease6.6(Final) #版本是6.6 [[email protected]~]#getenforce Disabled #禁用selinux [[email protected]~]#/etc/init.d/iptablesstop #關閉防火牆 [[email protected]~]#ifconfigeth0|sed-n'2p'|awk'{print$2}'|awk-F":"'{print$2}' 192.168.16.100 #這臺機器的IP地址

注意:虛擬機器環境網絡卡採用NAT模式,不要使用橋接模式,把VMware的NAT模式的DHCP服務也關閉

2.建立用於存放映象裡面的內容目錄

[[email protected]~]#mkdir-p/data/sys

3.掛載映象到mnt目錄下,再將系統映象裡邊的內容拷貝到共享目錄/data/sys中去

[[email protected]~]#mount/dev/cdrom/mnt/
mount:blockdevice/dev/sr0iswrite-protected,mountingread-only
[[email protected]~]#ll/mnt/
total712
-r--r--r--.2testtest14Oct242014CentOS_BuildTag
dr-xr-xr-x.3testtest2048Oct242014EFI
-r--r--r--.2testtest212Nov282013EULA
-r--r--r--.2testtest18009Nov282013GPL
dr-xr-xr-x.3testtest2048Oct242014p_w_picpaths
dr-xr-xr-x.2testtest2048Oct242014isolinux
dr-xr-xr-x.2testtest686080Oct242014Packages
-r--r--r--.2testtest1354Oct202014RELEASE-NOTES-en-US.html
dr-xr-xr-x.2testtest4096Oct242014repodata
-r--r--r--.2testtest1706Nov282013RPM-GPG-KEY-CentOS-6
-r--r--r--.2testtest1730Nov282013RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--.2testtest1730Nov282013RPM-GPG-KEY-CentOS-Security-6
-r--r--r--.2testtest1734Nov282013RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--.1testtest3380Oct242014TRANS.TBL
[[email protected]~]#cp-a/mnt/*/data/sys/

四、安裝TFTP

在安裝PXE過程中,客戶端通過TFTP協議從TFTP伺服器下載引導檔案並執行,因此,需要配置TFTP伺服器和PXE的引導配置完成這個過程

1.安裝tftp和xinetd

[[email protected]~]#yuminstalltftp-server.x86_64xinetd.x86_64-y
[[email protected]~]#rpm-qatftp-serverxinetd
xinetd-2.3.14-40.el6.x86_64
tftp-server-0.49-8.el6.x86_64

2.配置tftp服務

TFTP服務使用Xinetd服務管理,編輯/etc/xinetd.d/tftp,將檔案中disable的引數由yes改為no
[[email protected]~]#vim/etc/xinetd.d/tftp
servicetftp
{
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=1002
flags=IPv4
}

3.啟動xinetd,並且設定開機自啟動

[[email protected]~]#/etc/init.d/xinetdstart
Startingxinetd:[OK]
[[email protected]~]#chkconfig--level3xinetdon
[[email protected]~]#chkconfig--listxinetd
xinetd	0:off	1:off	2:off	3:on	4:on	5:on	6:off

4.配置支援PXE引導啟動程式

PXE啟動映像檔案由syslinux軟體提供,只要安裝了syslinux,就會生成一個pxelinux.0檔案,將這個檔案複製到TFTP預設路徑即可。 syslinux是一個功能強大的引導載入程式,而且相容各種介質,更加確切地說:syslinux是一個小型的Linux作業系統,它的目的是簡化Linux的時間,並建立修護或其他特殊用途的啟動盤。

[[email protected]~]#yuminstallsyslinux.x86_64-y
[[email protected]~]#cp/usr/share/syslinux/pxelinux.0/var/lib/tftpboot/
[[email protected]~]#ll/var/lib/tftpboot/
total28
-rw-r--r--.1rootroot26759Apr1923:54pxelinux.0

5.用於網路啟動的核心檔案

將CentOS安裝光碟目錄中的p_w_picpaths/pxeboot/{vmlinuz,initrd.img}啟動檔案複製到某個安裝目錄,比如/var/lib/tftpboot/

[[email protected]~]#cp/data/sys/p_w_picpaths/pxeboot/vmlinuz/var/lib/tftpboot/				#複製核心檔案

[[email protected]~]#cp/data/sys/p_w_picpaths/pxeboot/initrd.img/var/lib/tftpboot/				#複製驅動檔案

[email protected]~]#cp/data/sys/isolinux/boot.msg/var/lib/tftpboot/				#複製boot.msg

6.建立pxelinx.cfg目錄,複製isolinux.cfg檔案到/tftpboot目錄並改名default

[[email protected]~]#mkdir-p/var/lib/tftpboot/pxelinux.cfg
[[email protected]~]#cp/data/sys/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

7.編輯配置default檔案

[[email protected]~]#cd/var/lib/tftpboot/pxelinux.cfg/
[[email protected]pxelinux.cfg]#chmod644default
[[email protected]pxelinux.cfg]#vimdefault
defaultlinux		#預設啟動的是“lobeltext”中標記的核心
#prompt1		#開啟會顯示命令列'boot:'提示符。prompt值為0時則不提示,將會直接啟動'default'引數中指定的
timeout1		#timeout時間是引導時等待使用者手動選擇的時間,設為1可直接引導,單位為1/10秒

displayboot.msg
#選單背景圖片、標題、顏色
menubackgroundsplash.jpg
menutitleWelcometoCentOS6.6!
menucolorborder0#ffffffff#00000000
menucolorsel7#ffffffff#ff000000
menucolortitle0#ffffffff#00000000
menucolortabmsg0#ffffffff#00000000
menucolorunsel0#ffffffff#00000000
menucolorhotsel0#ff000000#ffffffff
menucolorhotkey7#ffffffff#ff000000
menucolorscrollbar0#ffffffff#00000000

labellinux			
menulabel^Installorupgradeanexistingsystem
menudefault
kernelvmlinuz						#指定要啟動的核心。同樣要注意路徑,預設是/var/lib/tftpboot目錄
appendinitrd=initrd.imgks=http://192.168.16.100/ks.cfg	#新增ks檔案的地址

五、安裝配置DHCP服務

在PXE安裝過程中,PXE客戶機主要通過DHCP服務獲取地址,PXE引導檔名稱,然後再客戶端機上通過TFTP協議從TFTP伺服器下載引導檔案並執行,從而啟動系統安裝程式執行後,接著下載並安裝程式啟動安裝。

1.安裝和配置DHCP

[[email protected]~]#yuminstalldhcp.x86_64-y
[[email protected]~]#vim/etc/dhcp/dhcpd.conf
#
#DHCPServerConfigurationfile.
#see/usr/share/doc/dhcp*/dhcpd.conf.sample
#see'man5dhcpd.conf'
#
ddns-update-stylenone;					#不ddns更新
next-server192.168.16.100;				#告知客戶端tftp伺服器的ip地址
filename"pxelinux.0";					#告知客戶端從TFTP根目錄下載pxelinux.0檔案
subnet192.168.16.0netmask255.255.255.0{		#設定子網
range192.168.16.10192.168.16.20;			#設定子網範圍
optiondomain-name-servers114.114.114.114;		#設定DNS
optionrouters192.168.16.2;				#設定預設閘道器
default-lease-time600;				#設定預設的IP租用時間,單位為秒
max-lease-time7200;					#最大的IP租用時間,單位為秒
}
log-facilitylocal4;					#記錄DHCP日誌

2.建立日誌檔案

[[email protected]~]#vim/etc/rsyslog.conf
#Savedhcpdmessagesalsotodhcpd.log
local4.*/var/log/dhcpd.log
[[email protected]~]#touch/var/log/dhcpd.log
[[email protected]~]#chmod600/var/log/dhcpd.log

3.啟動DHCP伺服器

[[email protected]~]#/etc/init.d/dhcpdstart
Startingdhcpd:[OK]

4.設定開機自啟動

[[email protected]~]#chkconfigdhcpdon
[[email protected]~]#chkconfig--list|grepdhcp
dhcpd	0:off	1:off	2:on	3:on	4:on	5:on	6:off

六、生成kickstart檔案

通常安裝作業系統過程中,需要常常和伺服器進行互動操作,為了減少這個互動過程可以使用kickstart。使用kickstart,只需先定義好一個kickstart自動應答配置檔案ks.cfg,並讓安裝程式知道該配置檔案的位置,在安裝過程中安裝程式就可以自動從檔案中讀取kickstart配置檔案。

1.使用CentOS Linux提供一個圖形化的kickstart配置工具

[[email protected]~]#yuminstallsystem-config-kickstart.noarch

wKiom1j4KuriI1akAAGHTNVYN4Y472.png-wh_50

開啟kickstart工具,也在圖形終端開啟命令列視窗鍵入命令system-config-kickstart開啟

wKioL1j4K2PBal3gAAEU4-qDN7I520.png-wh_50

這裡選擇語言、時區、root密碼,勾選第一個,安裝系統後重啟

wKiom1j4LA-B6LNeAADE_OIhLrw512.png-wh_50

選擇全新安裝,安裝源方式為HTTP,HTTP地址和目錄

wKiom1j4LGeCkG_tAADwf9btwEA486.png-wh_50

選擇是引導,預設就行啦

wKiom1j4LIbTQDsBAAEZ7E-X8UY383.png-wh_50

分割槽資訊,清除引導,移除分割槽,新增你需要的分割槽

wKioL1j4LPXzlYqxAAC5Wgw7-FE264.png-wh_50

新增網路裝置,如果只有一張網絡卡就eth0啦

wKiom1j4LSzD1SZaAADYMOnUPcs326.png-wh_50

這裡密碼加密,預設就行

wKioL1j4LVHxO8_QAADJW3CKG0Y166.png-wh_50

防火牆配置,我這裡是選擇關閉的

wKiom1j4LYfzOYx4AAChuK7yp0g207.png-wh_50

顯示配置,預設即可

wKioL1j4LfLgXP1cAAE-YDdPvBE377.png-wh_50

選擇安裝的軟體包,根據自己情況選擇哈

wKioL1j4LkGi4G5zAAE-zT9DAbk072.png-wh_50

選擇左上角的File,點選Save(儲存)

wKiom1j4Ls6zBI6lAAFJPxYvH2E406.png-wh_50

儲存的路徑/data/sys/ks.cfg,這個路徑很講究喔

檢視儲存後的ks.cfg檔案,本應該是有三部分的,但我沒有選擇指令碼選項,所以這裡檔案只有兩部分,第一是鍵盤型別,語言,安裝方式等系統的配置,有必選項和可選項,如果缺少某項必選項,安裝時會中斷並提示使用者選擇此項的選項,第二是軟體包安裝

[[email protected]~]#cat/data/sys/ks.cfg
#platform=x86,AMD64,orIntelEM64T
#version=DEVEL
#Firewallconfiguration
firewall--disabled#防火牆禁用
#InstallOSinsteadofupgrade
install#表示是安裝系統不是升級
#Usenetworkinstallation
url--url="http://192.168.16.100/"#告訴安裝程式,到http://ip/下面找安裝介質
#Rootpassword
rootpw--iscrypted$1$ZoLiOvI6$jV67RM98I/JKaKpE6vUDz0#root密碼
#Systemauthorizationinformation
auth--useshadow--passalgo=sha512
#Usetextmodeinstall
text#文字安裝方式
firstboot--disable
#Systemkeyboard#鍵盤型別
keyboardus
#Systemlanguage#系統語言
langen_US
#SELinuxconfiguration#禁用selinux
selinux--disabled
#Installationlogginglevel#設定日誌級別
logging--level=info
#Rebootafterinstallation#安裝完系統後重啟
reboot
#Systemtimezone#系統時區
timezoneAsia/Shanghai
#Networkinformation#網路資訊
network--bootproto=dhcp--device=eth0--onboot=on
#Systembootloaderconfiguration
bootloader--location=mbr#系統引導相關資訊
#CleartheMasterBootRecord
zerombr
#Partitionclearinginformation#清除所有分割槽
clearpart--all--initlabel
#Diskpartitioninginformation#系統的三個分割槽
part/boot--fstype="ext4"--size=200
partswap--fstype="swap"--size=2048
part/--asprimary--fstype="ext4"--grow--size=1

%packages#安裝的軟體包
@base
@compat-libraries
@debugging
@development
git

%end

給予ks.cfg許可權

[[email protected]~]#chmod777/data/sys/ks.cfg

七.安裝HTTP服務

1.檢查是否安裝

[[email protected]~]#/usr/local/nginx/sbin/nginx-v		#這是我編譯安裝好的nginx
nginxversion:nginx/1.12.0

2.配置nginx.conf檔案

worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
server{
listen80;
server_name192.168.16.100;
location/{
root/data/sys;					#這個目錄是存放ks.cfg
indexindex.htmlindex.htm;
}
error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
}
}

3.檢查語法

[[email protected]conf]#/usr/local/nginx/sbin/nginx-t
nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
nginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful

4.啟動nginx服務

[[email protected]conf]#/usr/local/nginx/sbin/nginx

八、用虛擬機器測試自動化安裝

  1. 用虛擬機器安裝一臺測試機器,不用選擇光碟,直接點選開機就行

    wKioL1j4NBazOnnIAABdfPHo-9w579.png-wh_50

    wKioL1j4NEbx7W2SAAANiuayjOg924.png-wh_50


wKiom1j4NHjj6YngAAArwuBnfic767.png-wh_50

然後就是你去吃個飯回來,就安裝好啦,去吃飯啦


最後想說的是,這個自動化安裝功能我超級喜歡,就好像windows AD部署利用組策略自動安裝軟體一樣,嘻嘻,感謝51CTO這個平臺,讓自己學習更多知識,看到很多大牛的好文章,才能讓自己進步。

轉載於:https://blog.51cto.com/beckoning/1917690