一、概念與原理
什麼是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)、系統版本
1
2
<code>[root@localhost ~]# uname -r</code>
<code></code>3.10.0-327.el7.x86_64<code></code>
3
<code></code>
[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源為系統預設源,
本級網絡為
4
5
6
7
8
9
10
11
12
13
<code>[root@localhost dhcp]</code><code># ip a</code>
<code>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN</code>
<code> </code><code>link</code><code>/loopback</code> <code>00:00:00:00:00:00 brd 00:00:00:00:00:00</code>
<code> </code><code>inet 127.0.0.1</code><code>/8</code> <code>scope host lo</code>
<code> </code><code>valid_lft forever preferred_lft forever</code>
<code> </code><code>inet6 ::1</code><code>/128</code> <code>scope host</code>
<code>2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000</code>
<code> </code><code>link</code><code>/ether</code> <code>00:0c:29:cc:38:86 brd ff:ff:ff:ff:ff:ff</code>
<code> </code><code>inet 172.16.219.136</code><code>/24</code> <code>brd 172.16.219.255 scope global dynamic eno16777736</code>
<code> </code><code>valid_lft 1353sec preferred_lft 1353sec</code>
<code> </code><code>inet6 fe80::20c:29ff:fecc:3886</code><code>/64</code> <code>scope link</code>
3)、安裝DHCP服務
<code>[root@localhost ~]</code><code># yum install -y dhcp</code>
配置dhcp伺服器,使其能夠提供172.16.219.50-172.16.219.53的ip位址,子網路遮罩為255.255.255.0。配置如下
14
15
16
<code> </code><code>[root@localhost ~]</code><code># vi /etc/dhcp/dhcpd.conf</code>
<code> </code><code>ddns-update-style interim;</code>
<code> </code><code>ignore client-updates;</code>
<code> </code><code>authoritative;</code>
<code> </code><code>allow booting;</code>
<code> </code><code>allow bootp;</code>
<code> </code><code>allow unknown-clients;</code>
<code> </code><code># A slightly different configuration for an internal subnet.</code>
<code> </code><code>subnet 172.16.219.0 netmask 255.255.255.0 {</code>
<code> </code><code>range 172.16.219.50 172.16.219.53;</code>
<code> </code><code>default-lease-</code><code>time</code> <code>600;</code>
<code> </code><code>max-lease-</code><code>time</code> <code>7200;</code>
<code> </code><code>next-server 172.16.219.136; </code><code># DHCP server ip</code>
<code> </code><code>filename </code><code>"pxelinux.0"</code><code>;</code>
<code> </code><code>}</code>
4)、安裝httpd服務(本文通過http的方式提供服務)
<code>[root@localhost ~]</code><code># yum install -y httpd</code>
配置如下
<code>[root@localhost ~]</code><code># vi /etc/httpd/conf.d/pxeboot.conf</code>
<code>Alias </code><code>/centos7_x64</code> <code>/var/lib/tftpboot/centos7_x64/</code>
<code><Directory </code><code>/var/lib/tftpboot/centos7_x64</code><code>></code>
<code>Options Indexes FollowSymLinks</code>
<code>Require ip 127.0.0.1 172.16.219.0</code><code>/24</code>
<code><</code><code>/Directory</code><code>></code>
<code>~</code>
5)、安裝tftp-server服務端
<code>[root@localhost ~]</code><code># yum install tftp-server xinetd -y</code>
修改xinetd檔案
17
18
<code># default: off</code>
<code># description: The tftp server serves files using the trivial file transfer \</code>
<code># protocol. The tftp protocol is often used to boot diskless \</code>
<code># workstations, download configuration files to network-aware printers, \</code>
<code># and to start the installation process for some operating systems.</code>
<code>service tftp</code>
<code>{</code>
<code> </code><code>socket_type = dgram</code>
<code> </code><code>protocol = udp</code>
<code> </code><code>wait = </code><code>yes</code>
<code> </code><code>user = root</code>
<code> </code><code>server = </code><code>/usr/sbin/in</code><code>.tftpd</code>
<code> </code><code>server_args = -s </code><code>/var/lib/tftpboot</code>
<code> </code><code>disable = no</code>
<code> </code><code>per_source = 11</code>
<code> </code><code>cps = 100 2</code>
<code> </code><code>flags = IPv4</code>
<code>}</code>
把siabled的yes改為no
6)、準備所需要的rpm包
<code>mount</code> <code>-o loop </code><code>/root/CentOS-XX</code><code>.iso </code><code>/mnt/</code>
<code>mkdir</code> <code>/var/lib/tftpboot/centos7_x64</code>
<code>cp</code> <code>-fr </code><code>/mnt/</code><code>* </code><code>/var/lib/tftpboot/centos7_x64/</code>
<code>chmod</code> <code>-R 755 </code><code>/var/lib/tftpboot/centos7_x64/</code>
7)、準備tftpboot下的檔案
安裝syslinux,此服務為pxe提供pxelinux.0檔案
<code>[root@localhost ~]</code><code># yum install -y syslinux</code>
準備檔案
<code>cd</code> <code>/usr/share/syslinux/</code>
<code>cp</code> <code>pxelinux.0 menu.c32 memdisk mboot.c32 chain.c32 </code><code>/var/lib/tftpboot/</code>
自定義pxe檔案
<code>mkdir</code> <code>/var/lib/tftpboot/pxelinux</code><code>.cfg</code>
<code>default menu.c32</code>
<code>prompt 0</code>
<code>timeout 300</code>
<code>ONTIMEOUT </code><code>local</code>
<code>menu title </code><code>########## PXE Boot Menu ##########</code>
<code>label 1</code>
<code>menu label ^1) Install CentOS 7</code>
<code>kernel centos7_x64</code><code>/images/pxeboot/vmlinuz</code>
<code>append initrd=centos7_x64</code><code>/images/pxeboot/initrd</code><code>.img method=http:</code><code>//172</code><code>.16.219.136</code><code>/centos7_x64</code> <code>devfs=nomount</code>
<code>label 2</code>
<code>menu label ^2) Boot from </code><code>local</code> <code>drive localboot</code>
9)、重新開機各個服務
<code>systemctl restart xinetd</code>
<code>systemctl restart httpd</code>
<code>systemctl restart dhcpd</code>
将各個服務設定成開機自啟動
<code>systemctl </code><code>enable</code> <code>xinetd</code>
<code>systemctl </code><code>enable</code> <code>httpd</code>
<code>systemctl </code><code>enable</code> <code>dhcpd</code>
一切準備就緒,可以開始測試了
10)、測試安裝
<a href="https://s4.51cto.com/wyfs02/M00/8F/4A/wKioL1jaI7Dhkp-SAAC219Njnv0009.png" target="_blank"></a>
本文轉自wangfeng7399 51CTO部落格,原文連結:http://blog.51cto.com/wangfeng7399/1911145,如需轉載請自行聯系原作者