1. 程式人生 > 實用技巧 >Kickstart+PXE定製網路批量自動安裝

Kickstart+PXE定製網路批量自動安裝

什麼是KickStart

KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案;在其後的安裝過程中(不只侷限於生成KickStart安裝檔案的機器)當出現要求填寫引數的情況時,安裝程式會首先去查詢KickStart生成的檔案,當找到合適的引數時,就採用找到的引數,當沒有找到合適的引數時,才需要安裝者手工干預。這樣,如果KickStart檔案涵蓋了安裝過程中出現的所有需要填寫的引數時,安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然後去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中設定的重啟選項來重啟系統,並結束安裝。

什麼是PXE

PXE(preboot execute environment)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像,並由此支援來自網路的作業系統的啟動過程,其啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機記憶體中並執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在伺服器中的終端作業系統。

網路拓撲圖:

在機房中批量上線安裝伺服器通常會使用如上圖所示的結構批量安裝,由於我們的工作電腦通常都是windows系統(office需要),所以再裝個VMware虛擬機器,在虛擬機器中架設PXE server不失為一種好方法。

VMware workstation虛擬機器的設定:安裝好CentOS並且虛擬機器網路連線方式為橋接(bridge)

以下所有配置都在虛擬機器中的CentOS完成:

使用PXE+Kickstart就可以製作網路多機器自動安裝,網路安裝的方式有三種:NFS、HTTP和FTP。綜合起來看,部署這樣的自動安裝環境需要的條件是:

1.DHCP 伺服器

2.TFTP 伺服器

3.KickStart所生成的ks.cfg配置檔案

4.一臺存放系統安裝檔案的伺服器,如 NFS、HTTP 或 FTP 伺服器

5.帶有一個 PXE 支援網絡卡的將安裝的主機

把系統安裝光碟mount到主機上

#mount /dev/cdrom /mnt/cdrom

安裝所需要的服務

yum -y install dhcp dhcp-devel nfs-utils nfs-utils-lib tftp tftp-server syslinux

配置TFTP,制定可供下載檔案的目錄。

  1. 1、編輯TFTP配置檔案
  2. #default:off
  3. #description:Thetftpserverservesfilesusingthetrivialfiletransfer\
  4. #protocol.Thetftpprotocolisoftenusedtobootdiskless\
  5. #workstations,downloadconfigurationfilestonetwork-awareprinters,\
  6. #andtostarttheinstallationprocessforsomeoperatingsystems.
  7. servicetftp
  8. {
  9. disable=no#找到disable,修改其值為no
  10. socket_type=dgram
  11. protocol=udp
  12. wait=yes
  13. user=root
  14. server=/usr/sbin/in.tftpd
  15. server_args=-s/tftpboot#此處為TFTP提供下載的位置
  16. per_source=11
  17. cps=1002
  18. flags=IPv4
  19. }
  20. 2,TFTP目錄建立與設定
  21. #mkdir/tftpboot
  22. #cp/usr/share/syslinux/pxelinux.0/tftpboot/
  23. #mkdir/tftpboot/pxelinux.cfg
  24. #cp/mnt/cdrom/isolinux/isolinux.cfg/tftpboot/pxelinux.cfg/default
  25. #cp/mnt/cdrom/isolinux/*/tftpboot#把光碟中isolinux裡的所有檔案複製到/tftpboot下

重啟動TFTP:service xinetd restart

DHCP伺服器設定

  1. #DHCPServerConfigurationfile.
  2. #see/usr/share/doc/dhcp*/dhcpd.conf.sample
  3. #see'man5dhcpd.conf'
  4. #
  5. #
  6. ddns-update-styleinterim;
  7. ignoreclient-updates;
  8. subnet10.20.30.0netmask255.255.255.0{
  9. optionrouters10.20.30.1;
  10. optionsubnet-mask255.255.255.0;
  11. optiondomain-name-servers10.20.30.2;
  12. rangedynamic-bootp10.20.30.210.20.30.100;
  13. default-lease-time21600;
  14. max-lease-time43200;
  15. next-server10.20.30.2;###重要
  16. filename"pxelinux.0";###重要
  17. }
  18. 單就網路安裝來說,只要在已經安裝配置好的DHCP伺服器上新增指定伺服器IP和指定pxelinux.0便可。

重啟動DHCP:service dhcpd restart

編輯/tftpboot/pxelinux.cfg/default

  1. defaultvesamenu.c32
  2. #prompt1
  3. timeout10#超時時間
  4. displayboot.msg
  5. menubackgroundsplash.jpg
  6. menutitleWelcometoCentOS6.3!
  7. menucolorborder0#ffffffff#00000000
  8. menucolorsel7#ffffffff#ff000000
  9. menucolortitle0#ffffffff#00000000
  10. menucolortabmsg0#ffffffff#00000000
  11. menucolorunsel0#ffffffff#00000000
  12. menucolorhotsel0#ff000000#ffffffff
  13. menucolorhotkey7#ffffffff#ff000000
  14. menucolorscrollbar0#ffffffff#00000000
  15. labellinux
  16. menulabel^Installorupgradeanexistingsystem
  17. menudefault
  18. kernelvmlinuz
  19. #appendks=ftp://10.20.30.2/pub/ks.cfginitrdinitrd=initrd.img##設定重點
  20. appendks=nfs:10.20.30.2:/tftpboot/ks.cfginitrdinitrd=initrd.img##設定重點
  21. labelvesa
  22. menulabelInstallsystemwith^basicvideodriver
  23. kernelvmlinuz
  24. appendinitrdinitrd=initrd.imgxdriver=vesanomodeset
  25. labelrescue
  26. menulabel^Rescueinstalledsystem
  27. kernelvmlinuz
  28. appendinitrdinitrd=initrd.imgrescue
  29. labellocal
  30. menulabelBootfrom^localdrive
  31. localboot0xffff
  32. labelmemtest86
  33. menulabel^Memorytest
  34. kernelmemtest
  35. append-
  36. ############FTP、NFS、HTTP三種安裝方式的配置路徑寫法##########
  37. ############主要是為了讓安裝載入程式找到ks.cfg配置檔案########
  38. ##############################################################
  39. #appendks=ftp://10.20.30.2/pub/ks.cfginitrdinitrd=initrd.img
  40. #appendks=nfs:10.20.30.2:/tftpboot/ks.cfginitrdinitrd=initrd.img
  41. #appendks=http://10.20.30.2/linux/ks.cfginitrdinitrd=initrd.img
  42. ##############################################################

對安裝光碟的定製

  1. #
  2. #/root/anaconda-ks.cfg.安裝系統時由anaconda自動生成的ks.cfg檔案
  3. #vianaconda-ks.cfg
  4. #Kickstartfileautomaticallygeneratedbyanaconda.
  5. #version=DEVEL
  6. install
  7. #cdrom
  8. langen_US.UTF-8
  9. keyboardus
  10. network--onbootyes--deviceeth0--bootprotodhcp--noipv6#這裡我把它設定為開機DHCP自動獲取IP,預設為--onbootno。
  11. rootpw--iscrypted$6$FLLlvfqZKzvs/9bu$oflTVbcg8ZDgfCvBCDeyIBrgswymV7.W6ZoKc0Ona0GT/SCmBvMokbD2Ty86GH.qMOzXKlh6fTUQJRq4C50FC1
  12. firewall--service=ssh
  13. authconfig--enableshadow--passalgo=sha512
  14. selinux--enforcing
  15. timezone--utcAsia/Shanghai
  16. #url --url=ftp://10.20.30.2/pub ###FTP 的方式
  17. #nfs --server=10.20.30.2 --dir=/mnt/cdrom ###NFS的方式
  18. #url --url=http://10.20.30.2/linux ###HTTP的方式
  19. bootloader--location=mbr--driveorder=sda--append="crashkernel=autorhgbquiet"
  20. #Thefollowingisthepartitioninformationyourequested
  21. #Notethatanypartitionsyoudeletedarenotexpressed
  22. #heresounlessyouclearallpartitionsfirst,thisis
  23. #notguaranteedtowork
  24. zerombr#注意此處,清空MBR
  25. clearpart--all--initlabel#重新初始化硬碟分割槽
  26. part/boot--fstype=ext4--size=200#/boot分割槽,200M
  27. partswap--size=1024#swap分割槽,1024M
  28. part/--fstype=ext4--grow--size=1#根分割槽/,意為剩下所有的空閒空間都留給/
  29. #repo--name="CentOS"--baseurl=cdrom:sr0--cost=100#暫未明白這是什麼意思,先註釋掉
  30. reboot#安裝完成後自動重啟
  31. %packages--nobase#這裡定義需要安裝的包
  32. @core#最小化安裝只有一個core就夠了。
  33. %post#%post後面可以接一些命令、指令碼。如/bin/touch/root/test.cfg,安裝完成後會在/root目錄下看到test.cfg檔案
  34. /bin/touch/root/test.cfg
  35. #######################################################
  36. #下面是我建立SSH公鑰的指令碼
  37. #######################################################
  38. if[!-d/root/.ssh];then
  39. mkdir/root/.ssh/
  40. fi
  41. if[!-f/root/.ssh/authorized_keys];then
  42. touch/root/.ssh/authorized_keys
  43. fi
  44. cat<<EOF>/root/.ssh/authorized_keys
  45. ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAAAgQDDZCIIaD6lCRhmRY4wwdhLcqfstvd0aT90Py9g0RTtZxkh7NcJuR/+zupmQ0Bet3UW2sGfiP3JSviQvi82QK9+orh0IC+cCboE0usgSH89nra0LLc0y2Iv816lhjh5Dmn9ubfT5uCkgnJMIu10qUqZbu2b/ypMwMe/5jEFBdG89
  46. w
  47. EOF
  48. %end#必須的結束標誌

安裝方式之一:FTP

  1. 安裝vsftpd之後預設允許匿名訪問FTP公共目錄/var/ftp/pub,所以無需對vsftd配置檔案進行修改。
  2. 只需要把ks.cfg檔案和光碟中的所有檔案複製到/var/ftp/pub就可以了。
  3. #cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
  4. #cp-a/mnt/cdrom/*/var/ftp/pub
  5. #分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式

安裝方式之二:NFS

  1. 編輯NFS的配置檔案,新增以下兩句
  2. /tftpboot*(ro,sync)#/tftpboot可被網路上任何主機讀取
  3. /mnt/cdrom*(ro,sync)#/mnt/cdrom可被網路上任何主機讀取
  4. 分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式

安裝方式之三:HTTP

  1. 1,把ks.cfg和/mnt/cdrom裡的所有檔案複製到apache指定的目錄下
  2. 2,分別修改ks.cfg和/tftpboot/pxelinux.cfg/default檔案對應的方式

轉載於:https://blog.51cto.com/fengzhige/1067242