1. 程式人生 > >linux 搭建kickstart 無人值守安裝詳解

linux 搭建kickstart 無人值守安裝詳解

一、概念
1.1 PXE
PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網路模式,支援工作站通過網路從遠端伺服器下載映像(載入程式,如mbr),並由此支援通過網路啟動作業系統,在啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在伺服器中的終端作業系統。PXE可以引導多種作業系統。
嚴格來說,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 上下載所需的檔案了。
1.2 PXE的工作過程:

  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 方式之一進行安裝;
    詳細工作流程,請參考下面這幅圖:

這裡寫圖片描述
1.3 Kickstart
Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在安裝過程中(不只侷限於生成Kickstart安裝檔案的機器)出現要填寫引數的情況,安裝程式首先會去查詢Kickstart生成的檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便需要安裝者手工干預了。所以,如果Kickstart檔案涵蓋了安裝過程中可能出現的所有需要填寫的引數,那麼安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重啟系統,並結束安裝。
Syslinux是一個功能強大的引導載入程式,而且相容各種介質。他的目的是簡化首次安裝linux的時間,並建立修護或其他特殊用途的啟動盤。它的安裝很簡單,一旦安裝好syslinux之後,syslinux啟動盤就可以引導各種基於DOS的工具,以及MS-OS/windows或者其他作業系統,不僅採用BIOS結構的主機板,而且從6.0版本也開始支援採用EFI結構的新型主機板。
Xinetd已經取代了inetd,並且提供了訪問控制、加強的日誌和資源管理功能,已經成了Red Hat 7 和 Mandrake 7.2的Internet標準超級守護程序。

  • 支援對tcp、udp、RPC服務(但是當前對RPC的支援不夠穩定)
  • 基於時間段的訪問控制
  • 功能完備的log功能,即可以記錄連線成功也可以記錄連線失敗的行為
  • 能有效的防止DoS攻擊(Denial of Services)
  • 能限制同時執行的同一型別的伺服器數目
  • 能限制啟動的所有伺服器數目
  • 能限制log檔案大小
  • 將某個服務繫結在特定的系統介面上,從而能實現只允許私有網路訪問某項服務
  • 能實現作為其他系統的代理。如果和ip偽裝結合可以實現對內部私有網路的訪問
    它最大的缺點是對RPC支援的不穩定性,但是可以啟動protmap,與xinetd共存來解決這個問題。
    xinetd用括號括起的、擴充套件了的語法取代了inetd中的通用的行。另外,還添加了日誌和訪問控制功能。 雖然inetd可以使用Venema的 tcp_wrappers軟體(tcpd) 控制 TCP 的連線,但是你不能用它來控制 UDP 連線。此外,inetd對RPC(portmapper)型別的服務也處理不好。另外,雖然使用 inetd 你可以控制連線速度 ( 通過給wait或是no wait 變數附加一個數值,例如nowait.1表示每隔一秒鐘一個例項),你不能控制例項的最大數。這能導致程序表攻擊(例如,一個有效的拒絕服務攻擊)。通過使用xinetd,我們可以防止Dos。
    xinetd 對所有的服務都進行紀錄,日誌儲存到檔案 /var/adm/xinetd.log中,並且使用配置檔案/etc/xinetd.conf。
    開機—>bios自檢—>MBR(硬碟的主引導記錄)
    PXE+Kickstart 無人值守安裝作業系統完整過程如下:
    這裡寫圖片描述

二、步驟
服務機大概步驟

  1. 配置DHCP服務,為客戶機建立ip
  2. 配置TFTP伺服器,允許任何數量的客戶端連線同時進行
  3. 準備引導的相關檔案
  4. 安裝映象
  5. 建立ks應答檔案

伺服器需要安裝的軟體

yum install dhcp xinetd tftp-server vsftpd syslinux system-config-kickstart

2.1伺服器配置 ip 192.168.142.200
2.1 .1DHCP服務配置
1)安裝dhcp軟體

[[email protected] ~]# yum install dhcp –y

2)修改dhcp服務配置檔案/etc/dhcp/dhcpd.conf

[[email protected] ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
指定引導檔案
filename "pxelinux.0";
指定引導檔案伺服器
next-server 192.168.142.200;
宣告網段和掩碼
subnet 192.168.142.0 netmask 255.255.255.0 {
指定閘道器
        option routers 192.168.142.1;
指定掩碼
        option subnet-mask 255.255.255.0;
指定dns
        option domain-name-servers 114.114.114.114;
指定地址池範圍
        range dynamic-bootp 192.168.142.200 192.168.142.250;
預設租約
        default-lease-time 60;
最大租約
        max-lease-time 60;
}

3)起服務dhcpd ,檢查狀態

  [[email protected] ~]# systemctl restart dhcpd
  [[email protected] ~]# systemctl status dhcpd

2.1.2配置TFTP伺服器
1)安裝軟體xinetd 和tftp-server

[[email protected] ~]# yum install xinetd.x86_64 tftp-server.x86_64 -y 

2)修改tftp配置檔案/etc/xinetd.d/tftp

[[email protected] ~]# vim /etc/xinetd.d/tftp
修改tftp配置檔案
server_args             = -s /tftpboot
開啟服務開關
disable                 = no

修改後的檔案內容如下

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

3)啟動服務tftp

並檢視服務狀態

[[email protected] ~]# systemctl restart tftp
[[email protected] ~]# systemctl status tftp

在7.0系統中如果服務無法啟動,使用以下命令進行啟動

systemctl start tftp.socket

檢查服務埠狀態

[[email protected] ~]# lsof -i:69

4)啟動xinetd服務,並檢查狀態

[[email protected] ~]# systemctl restart xinetd
[[email protected] ~]# systemctl status xinetd

2.1.3準備引導的相關檔案*

1)建立網路引導配置檔案目錄/tftpboot/pxelinux.cfg

[[email protected] ~] mkdir -p /tftpboot/pxelinux.cfg

2)複製引導檔案

[[email protected] ~] cp /usr/share/syslinux/pxelinux.0 /tftpboot/

3)複製系統映像

[[email protected] ~] cp /mnt/images/pxeboot/initrd.img /tftpboot/

4)複製系統核心

[[email protected] ~] cp /mnt/images/pxeboot/vmlinuz /tftpboot/

5)複製引導配置檔案

cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

6)變更配置檔案許可權

[[email protected] ~] chmod 644 /tftpboot/pxelinux.cfg/default

7)修改配置檔案/tftpboot/pxelinux.cfg/default

[[email protected] ~]# vim /tftpboot/pxelinux.cfg/default

修改第一行
default linux
修改第64行
append initrd=initrd.img ks=ftp://192.168.142.200/ks.cfg

2.1.4準備安裝映象(採用ftp)*
方法一: [FTP]

啟動FTP服務

[[email protected] ~] systemctl start vsftpd

檢視FTP服務狀態

[[email protected] ~] systemctl status vsftpd

檢視服務埠啟用狀態

[[email protected] ~]# lsof -i:21

掛載系統映象到共享目錄

[[email protected] ~] mount /dev/sr0 /var/ftp/pub/

可通過windows系統的瀏覽器才確認服務訪問情況
這裡寫圖片描述
方法二 :[HTTP]

安裝HTTPD服務

[[email protected] ~]# yum install httpd -y

複製系統安裝檔案到/var/www/html目錄下

[[email protected] ~]# cp -r /mnt/* /var/www/html/

複製KS檔案到/var/www/html目錄下

[[email protected] ~]# ll /var/www/html/ks.cfg

啟動HTTPD服務

[[email protected] ~]# systemctl start httpd

檢查HTTPD服務狀態

[[email protected] ~]# systemctl status httpd

檢查HTTPD服務埠

[[email protected] ~]# lsof -i:80

可通過windows系統的瀏覽器才確認服務訪問情況

注意:需要修改default檔案的ks檔案路徑

[[email protected] ~] vi /tftpboot/pxelinux.cfg/default
64  append initrd=initrd.img ks=http://192.168.171.204/ks.cfg

注意:需要修改KS應答檔案中的系統安裝資源目錄

[[email protected] ~]# vi /var/www/html/ks.cfg 
 Use network installation
url --url="http://192.168.171.204/"

方法三:[NFS]

編輯NFS配置檔案

[[email protected] ~]# vi /etc/exports

配置檔案內容如下:

[[email protected] ~]# cat /etc/exports
/var/www/html        *(ro)

啟動NFS服務

[[email protected] ~]# systemctl restart nfs

檢查服務狀態

[[email protected] ~]# systemctl status nfs

檢查服務埠狀態

[[email protected] ~]# netstat -lntp | grep 111
[[email protected] ~]# netstat -lntp | grep 2049

可通過其他linux主機進行遠端掛載共享目錄來測試服務啟動情況

[[email protected] ~]# mount -t nfs 192.168.171.204:/var/www/html /mnt

注意:需要修改default檔案的ks檔案路徑

[[email protected] ~] vi /tftpboot/pxelinux.cfg/default
64   append initrd=initrd.img ks=nfs:192.168.171.204:/var/www/html/ks.cfg

注意:需要修改KS應答檔案中的系統安裝資源目錄

[[email protected] ~]# vi /var/www/html/ks.cfg 
Use network installation
nfs --server=192.168.171.204 --dir=/var/www/html

2.1.5建立ks應答檔案
1)安裝system-config-kickstart.noarch

[[email protected] ~]# yum install system-config-kickstart.noarch

2)使用圖形化介面建立一個ks應答檔案system-config-kickstart

[[email protected] ~]# system-config-kickstart

這裡寫圖片描述

1.基本設定
選擇時區為亞洲上海
設定root密碼
勾選安裝後重啟

2.安裝方法
選擇執行全新安裝
FTP 輸入伺服器地址192.168.142.200,FTP目錄為pub

3.引導裝載程式選項
選擇安裝新引導裝載程式

4.分割槽
新增/分割槽2000,/boot為200,swap 分割槽為2000

5.網路配置和驗證
不需要改

6.防火牆配置
禁用selinux和防火牆

7.剩下的都不用改

8.選擇檔案儲存,儲存在檔案系統根目錄/var/pub,再儲存,退出

檢視

[[email protected] ~]# ll /var/ftp
[[email protected] ~]# cat /var/ftp/ks.cfg

3)重啟服務dhcpd、xinetd、tftp.socket、vsftpd,關閉防火牆和selinux

[[email protected] ~]# systemctl restart dhcpd
[[email protected] ~]# systemctl restart xinetd.service 
[[email protected] ~]# systemctl restart tftp.socket 
[[email protected] ~]# systemctl restart vsftpd

意關閉防火牆和selinux
[[email protected] pxelinux.cfg]# systemctl stop firewalld
[[email protected] pxelinux.cfg]# setenforce 0

2.1客戶機設定
客戶機和服務機是相同的模式(都是僅主機或者其它)

2.1.1新建一個客戶機,最好選擇40G,(不上傳映象)開機測試
1)測試

2)軟體選擇KDE
如果建立客戶機時,虛擬機器的磁碟太小,(最好是40G),圖形介面建立應答檔案時的分割槽就會沒有生效,手動設定分割槽(INSRTALLATION DESTINATION),

3)開始安裝