首頁 > 軟體

CentOS 7 基於PXE安裝系統

2020-06-16 17:18:06

一、概念與原理

什麼是PXE

嚴格來說,PXE 並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支援的網絡卡(NIC),即網絡卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment,直譯為啟動前的執行環境)協定使計算機可以通過網路啟動。協定分為 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。PXE Client 通過 TFTP 協定到 TFTP Server 上下載所需的檔案。

什麼是KickStart

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

二、環境說明

執行pxe+kickstart來批次安裝系統,需要的環境為

1.DHCP伺服器
2.TFTP伺服器
3.httpd伺服器或者ftp伺服器或nfs伺服器等能提供檔案存取的伺服器
4.ks.cfg檔案
5.syslinux服務提供的pxelinux.0檔案
6.一台帶有支援pxe協定的網絡卡的主機
7.為確保實驗可用性,請將防火牆和selinux關閉

三、安裝步驟
1)、系統版本

[root@localhost ~]# uname -r
3.10.0-327.el7.x86_64

123

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

2)、設定網路環境以及yum源
本處使用的yum源為系統預設源,
本級網路為
[root@localhost dhcp]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:cc:38:86 brd ff:ff:ff:ff:ff:ff
    inet 172.16.219.136/24 brd 172.16.219.255 scope global dynamic eno16777736
      valid_lft 1353sec preferred_lft 1353sec
    inet6 fe80::20c:29ff:fecc:3886/64 scope link
      valid_lft forever preferred_lft forever

3)、安裝DHCP服務

[root@localhost ~]# yum install -y dhcp

設定dhcp伺服器,使其能夠提供172.16.219.50-172.16.219.53的ip地址,子網掩碼為255.255.255.0。設定如下
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
 ddns-update-style interim;
 ignore client-updates;
 authoritative;
 allow booting;
 allow bootp;
 allow unknown-clients;
 # A slightly different configuration for an internal subnet.
 subnet 172.16.219.0 netmask 255.255.255.0 {
    range 172.16.219.50 172.16.219.53;
    default-lease-time 600;
    max-lease-time 7200;
 
 next-server 172.16.219.136; #  DHCP server ip
 filename "pxelinux.0";
 }

4)、安裝httpd服務(本文通過http的方式提供服務)
[root@localhost ~]# yum install -y httpd

設定如下
[root@localhost ~]# vi /etc/httpd/conf.d/pxeboot.conf
Alias /CentOS7_x64 /var/lib/tftpboot/centos7_x64/
 
<Directory /var/lib/tftpboot/centos7_x64>
Options Indexes FollowSymLinks
Require ip 127.0.0.1 172.16.219.0/24
</Directory>
~

5)、安裝tftp-server伺服器端
[root@localhost ~]# yum install tftp-server xinetd -y

修改xinetd檔案

# default: off
# description: The tftp server serves files using the trivial file transfer
#      protocol.  The tftp protocol is often used to boot diskless
#      workstations, download configuration files to network-aware printers,
#      and to start the installation process for some operating systems.
service tftp
{
        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                    = 100 2
        flags                  = IPv4
}

把siabled的yes改為no

6)、準備所需要的rpm包
mount -o loop /root/CentOS-XX.iso /mnt/
mkdir /var/lib/tftpboot/centos7_x64
cp -fr /mnt/* /var/lib/tftpboot/centos7_x64/
chmod -R 755 /var/lib/tftpboot/centos7_x64/

7)、準備tftpboot下的檔案
安裝syslinux,此服務為pxe提供pxelinux.0檔案
[root@localhost ~]# yum install -y syslinux

準備檔案
cd /usr/share/syslinux/
cp pxelinux.0 menu.c32 memdisk mboot.c32 chain.c32 /var/lib/tftpboot/

自定義pxe檔案
mkdir /var/lib/tftpboot/pxelinux.cfg
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
 
menu title ########## PXE Boot Menu ##########
 
label 1
menu label ^1) Install CentOS 7
kernel centos7_x64/images/pxeboot/vmlinuz
append initrd=centos7_x64/images/pxeboot/initrd.img method=http://172.16.219.136/centos7_x64 devfs=nomount
 
label 2
menu label ^2) Boot from local drive localboot

9)、重新啟動各個服務
systemctl restart xinetd
systemctl restart httpd
systemctl restart dhcpd

將各個服務設定成開機自啟動
systemctl enable xinetd
systemctl enable httpd
systemctl enable dhcpd

一切準備就緒,可以開始測試了
10)、測試安裝

PXE+Kickstart實現無人值守批次安裝Linux  http://www.linuxidc.com/Linux/2015-11/125040.htm

Linux 基礎教學:Linux Kickstart 自動安裝  http://www.linuxidc.com/Linux/2015-05/117877.htm

使用PXE+DHCP+Apache+Kickstart無人值守安裝CentOS5.8 x86_64 http://www.linuxidc.com/Linux/2012-12/76913p4.htm

Linux PXE無人值守安裝出現 PXE-E32:TFTP OPen timeout的解決辦法 http://www.linuxidc.com/Linux/2014-03/98986.htm

使用PXE結合kickstart 自動安裝Linux系統 http://www.linuxidc.com/Linux/2014-03/98014.htm

Linux運維自動化工具 Kickstart  http://www.linuxidc.com/Linux/2016-04/129978.htm

RHCE認證之無人值守安裝Linux系統(FTP+TFTP+DHCP+Kickstart+PXE) http://www.linuxidc.com/Linux/2013-10/91013.htm

Kickstart 全自動安裝部署RHEL 7.0  http://www.linuxidc.com/Linux/2015-09/123312.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/142326.htm


IT145.com E-mail:sddin#qq.com