相信不少人都有過裝系統的經歷,之前是用光盤,如今基本都是用U盤來裝系統。咱們只須要製做一個U盤驅動便可,安裝起來方便快捷。但若是是企業須要同時安裝大量的系統時,U盤很顯然不適合,它會耗費大量的時間。這時咱們就能夠用到PXE遠程安裝服務了,它能夠提供大量的客戶機同時安裝系統。可是,同時安裝的客戶機數量是受到帶寬的限制的。並且在安裝系統時,還須要手動進行部分設置。這時咱們就會用到Kickstart無人值守安裝。linux
PXE:預啓動執行環境(Preboot eXecution Environment,PXE)也被稱爲預執行環境,提供了一種使用網絡接口(Network Interface)啓動計算機的機制。這種機制讓計算機的啓動能夠不依賴本地數據存儲設備(如硬盤)或本地已安裝的操做系統。 工做於Client/Server的網絡模式,支持工做站經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統,在啓動過程當中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial 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 上下載所需的文件了。vim
Kickstart:是一種無人值守的安裝方式。它的工做原理是在安裝過程當中記錄典型的須要人工干預填寫的各類參數,並生成一個名爲ks.cfg的文件。若是在安裝過程當中(不僅侷限於生成Kickstart安裝文件的機器)出現要填寫參數的狀況,安裝程序首先會去查找Kickstart生成的文件,若是找到合適的參數,就採用所找到的參數;若是沒有找到合適的參數,便須要安裝者手工干預了。因此,若是Kickstart文件涵蓋了安裝過程當中可能出現的全部須要填寫的參數,那麼安裝者徹底能夠只告訴安裝程序從何處取ks.cfg文件,而後就去忙本身的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啓系統,並結束安裝。centos
1. PXE Client 從本身的PXE網卡啓動,向本網絡中的DHCP服務器索取IP; 2. DHCP 服務器會分配給客戶機的IP,同時告知PXE文件的放置位置(該文件通常是放在一臺TFTP服務器上) ; 3. PXE Client 向本網絡中的TFTP服務器索取pxelinux.0 文件; 4. PXE Client 取得pxelinux.0 文件後之執行該文件; 5. 根據pxelinux.0 的執行結果,經過TFTP服務器加載內核和文件系統 ; 6. 進入安裝畫面, 此時能夠經過選擇HTTP、FTP、NFS 方式之一進行安裝(我用的是FTP)。
用VMware14 虛擬機來進行本次實驗:安全
1.首先爲了方便實驗,須要一臺CentOS7同時部署DHCP、TFTP、FTP服務來做爲PXE服務端。服務端須要配置雙網卡,一塊爲NAT模式,用來聯網安裝所需程序,一塊爲僅主機模式,配置一個固定IP用來與局域網互通。
2.新建一臺虛擬機用來做爲PXE客戶端,用來進行遠程安裝,安裝的系統也爲CentOS7。bash
1.給客戶端添加一塊網卡,並將網絡模式改成僅主機模式。服務器
2.進入「/network-scripts/」目錄下,複製一份「ifcfg-ens33」配置文件,命名爲「ifcfg-ens36」。「-p」爲保留原有權限。網絡
輸入:cd /etc/sysconfig/network-scripts/ 輸入:cp -p ifcfg-ens33 ifcfg-ens36
3.用vim編輯器對配置文件「ifcfg-ens36」進行編輯,將「dhcp」改成「static」,「ens33」改成「ens36」,刪除「UUID」,同時添加IP地址、子網掩碼、網關。app
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=7bdb3fdc-0c3b-4a92-918d-3815b0816b02 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.100 NETMASK=255.255.255.0 GATEWAY=192.168.100.1
4.重啓網絡服務,再查看一下網絡配置。「ens36」網卡的固定IP已經設置成功。dom
輸入:systemctl restart network 輸入:ifconfig
5.安裝DHCP服務所需軟件包。編輯器
輸入:yum install dhcp -y
6.複製一份DHCP主配置文件的模板,覆蓋DHCP的主配置文件。
輸入:cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
7.用vim編輯器對DHCP服務主配置文件進行編輯,添加一個「192.168.100.0」網段的配置文件,地址池可根據具體狀況本身決定,主要是下一個TFTP服務器的路徑和引導程序的位置。
添加: subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.20 192.168.100.30; option routers 192.168.100.100; option domain-name-servers 114.114.114.114; next-server 192.168.100.100; filename "pxelinux.0"; }
8.安裝「syslinux」軟件包和「tftp-server」軟件包。
輸入:yum install syslinux -y 輸入:yum install tftp-server -y
9.查看一下「syslinux」和「tftp-server」軟件包的配置文件,我將重要的配置文件標了出來。
輸入:rpm -ql syslinux |grep pxelinux.0 輸入:rpm -ql tftp-server
10.複製一份「pxelinux.0」文件到「/var/lib/tftpboot/」目錄下,並查看是否複製成功。
輸入:cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 輸入:ls /var/lib/tftpboot/
11.用vim編輯器對TFTP服務的配置文件進行編輯,將「disable」後的「yes」改成「no」,開啓TFTP服務。
輸入:vim /etc/xinetd.d/tftp
12.安裝FTP服務所需軟件包。
輸入:yum install vsftpd -y
13.進入到FTP服務的站點目錄下,新建一個centos7目錄。
輸入:cd /var/ftp/ 輸入:mkdir centos7
14.將PXE客戶端所須要的光盤鏡像掛載到剛纔建立的centos7目錄下,並查看掛載信息(你也能夠直接複製過去)。
輸入:mount /dev/sr0 /var/ftp/centos7/ 輸入:df -h
15.進入到「centos7/images/pxeboot/」目錄下(能夠一步直接進入),將文件「initrd.img」和「vmlinuz」複製到「/var/lib/tftpboot/」目錄下。
輸入:cd centos7/images/pxeboot/ 輸入:cp initrd.img vmlinuz /var/lib/tftpboot/
16.查看一下「 /var/lib/tftpboot/」目錄,已經有了三個文件了,其中「pxelinux.0」是引導程序文件,「vmlinuz」是壓縮內核文件,「initrd.img」是系統初始化文件。如今還差一個默認的啓動菜單文件,因此咱們直接進入「/var/lib/tftpboot/」目錄,建立一個目錄「pxelinux.cfg」,而後在目錄「pxelinux.cfg」內新建一個文件「default」。
輸入:ls /var/lib/tftpboot/ 輸入:cd /var/lib/tftpboot/ 輸入:mkdir pxelinux.cfg 輸入:cd pxelinux.cfg/ 輸入:vim default
17.在「default」文件中,輸入如下內容。
default auto //默認自動模式 prompt 1 //等待時間1s label auto //自動模式安裝 kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux text //文本模式安裝 kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue //進入救援模式 kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
18.關閉防火牆和加強性安全功能,同時開啓DHCP、TFTP、FTP服務。
輸入:systemctl stop firewalld.service 輸入:setenforce 0 輸入:systemctl start dhcpd 輸入:systemctl start tftp 輸入:systemctl start vsftpd
19.我們新建一個虛擬機,具體配置以下圖,注意網絡爲僅主機模式。
20.打開新建的虛擬機做爲PXE客戶機,選擇網絡驅動。
21.客戶機會獲取到DHCP服務分配的IP地址,而後啓動引導程序,加載默認的啓動菜單。此時須要回車纔會繼續。
22.在回車後,稍做等待就會進入系統安裝的設置界面。
23.咱們能夠看到PXE遠程安裝服務,在安裝過程當中任須要人工進行設置,而咱們須要的是無人值守安裝,那麼咱們能夠配置「kickstart」程序。首先安裝一個「system-config-kickstart」軟件包。
輸入:yum install system-config-kickstart -y
24.咱們進入圖形化界面(能夠用「init 5」命令進入),進入Kickstart的配置面板。
25.基本配置,設置好默認語言和時區,同時設置root用戶密碼,勾選安裝後重啓。
26.安裝方法,選擇FTP,同時輸入FTP服務器的路徑和存放鏡像文件的目錄。
27.引導裝載程序選項,勾選安裝引導裝載程序便可。GRUB密碼也能夠設置,這樣系統會更加安全。
28.分區信息,點擊添加分別設置「/boot」、「/home」、「swap」、「/」等分區的大小。注意根分區「/」不用設置大小,直接勾選使用磁盤所有未使用空間便可。
29.網絡配置,添加一塊ens33網卡,網絡類型默認的DHCP模式便可。
30.防火牆配置,禁用SELinux。
31.安裝後腳本,選擇使用解釋程序,輸入「/bin/bash」便可。
32.保存配置好的文件,將文件「ks.cfg」保存到FTP服務的站點目錄」/var/ftp「下。
33.咱們先進入root的家目錄,用vim編輯器進入「anaconda-ks.cfg」文件,這是「ks.cfg」的模板文件,咱們將其中的安裝包命令複製,粘貼到「ks.cfg」文件中去。
輸入:cd ~ 輸入:vim anaconda-ks.cfg 輸入:cd /var/ftp/ 輸入:vim ks.cfg
34.咱們再進入「/var/lib/tftpboot/pxelinux.cfg/」 目錄,用vim編輯器對「default」文件進行編輯,在自動模式的文件後面添加一個kickstart配置文件的路徑。
default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
35.咱們再新建一臺虛擬機,配置與以前的相同。
36.啓動新建的虛擬機,操做與PXE遠程安裝同樣,不過此次不須要在手動設置了,系統會自動執行咱們在「ks.cfg」文件中配置的內容。