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結構
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
開啟kickstart工具,也在圖形終端開啟命令列視窗鍵入命令system-config-kickstart開啟
這裡選擇語言、時區、root密碼,勾選第一個,安裝系統後重啟
選擇全新安裝,安裝源方式為HTTP,HTTP地址和目錄
選擇是引導,預設就行啦
分割槽資訊,清除引導,移除分割槽,新增你需要的分割槽
新增網路裝置,如果只有一張網絡卡就eth0啦
這裡密碼加密,預設就行
防火牆配置,我這裡是選擇關閉的
顯示配置,預設即可
選擇安裝的軟體包,根據自己情況選擇哈
選擇左上角的File,點選Save(儲存)
儲存的路徑/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
八、用虛擬機器測試自動化安裝
然後就是你去吃個飯回來,就安裝好啦,去吃飯啦
最後想說的是,這個自動化安裝功能我超級喜歡,就好像windows AD部署利用組策略自動安裝軟體一樣,嘻嘻,感謝51CTO這個平臺,讓自己學習更多知識,看到很多大牛的好文章,才能讓自己進步。
轉載於:https://blog.51cto.com/beckoning/1917690