實驗室有幾臺電腦,裡邊裝有windows,因為實驗需求要給其裝入CentOS7。但是這幾個電腦無法用U盤引導系統的安裝,雖然帶有光碟機,但是又不想麻煩去買碟片,所以便想到用網路引導系統的安裝。
1. 軟體需求
dhcpd: 動態分配IP
xinetd: 對服務訪問進行控制,這裡主要時控制tftp
tftp: 從伺服器端下載pxelinux.0、default檔案
syslinux: 用於網路引導
httpd: 在網路上提供安裝源,也就是映象檔案中的內容
yum install dhcp xinetd syslinux tftp-server httpd
2. 配置
2.1 配置IP
將伺服器的IP配置為192.168.100.1,以便與DHCP能夠正常啟動,後邊的TFTP,HTTP都是執行在這個IP上。
[root@Amei tftpboot]# ip addr add 192.168.100.1/24 brd + dev p4p1 [root@Amei tftpboot]# ip addr show dev p4p1
2.2 配置DHCP
如果要了解以下DHCP的工作原理以及簡單的配置,可以參考前一篇隨筆《CentOS7中DHCP配置》,這裡在其基礎之上增加了:
next-server 192.168.100.1; # tftp server的ip
filename "pxelinux.0";
dhcp的配置檔案/etc/dhcp/dhcpd.conf的內容:
# # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # # 1. 整體的環境設定 ddns-update-style none; ignore client-updates; default-lease-time 259200; max-lease-time 518400; option domain-name-servers 192.168.100.1; # 上面是 DNS 的 IP 設定,這個設定值會修改客戶端的 /etc/resolv.conf # 2. 關於動態分配的 IP subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.101 192.168.100.200; option routers 192.168.100.1; option subnet-mask 255.255.255.0; next-server 192.168.100.1; # the configuration file for pxe boot filename "pxelinux.0"; }
啟動dhcpd,檢視是否有問題,如果沒有成功啟動需要仔細檢視配置是否正確
systemctl start dhcpd.service
2.3 配置TFTP
tftp是由xinetd管理的,所以在需要配置 /etc/xinetd.d/tftp檔案,這個檔案中只需要改一個引數即可
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot
#將此值改為no,表明開啟此服務 disable = no per_source = 11 cps = 100 2 flags = IPv4 }
開啟xinetd和tftp服務:
tftp的埠為69,同時xinetd接管了此埠
[root@Amei tftpboot]# systemctl start xinetd
[root@Amei tftpboot]# systemctl start tftp
2.4 檔案準備
首先將已經下載好的CentOS的映象檔案掛載到一個目錄中,然後複製可引導的、壓縮的核心檔案vmlinuz,以及包含一些模組和安裝檔案系統的initrd。因為安裝過程中以http的方式提供映象源,所以這裡直接將映象檔案掛在到httpd訪問目錄中(/var/www/html)。
[root@Amei ~]#mkdir /var/www/html/centos7 [root@Amei ~]# mount -o loop CentOS7.2.iso /var/www/html/centos7/
複製vmlinuz,和 initrd.img 到TFTP訪問目錄的centos7子目錄中,因為以後會引導其它的系統,所以這裡通過子目錄將不同的系統區分開。
[root@Amei ~]# mkdir /var/lib/tftpboot/centos7 [root@Amei ~]# cp /var/www/html/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/ [root@Amei ~]# cp /var/www/html/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
2.5 設定syslinux載入器
vesamenu.c32和menu.c32是syslinux所擁有眾多模組中的兩個,它們的功能是制定啟動器使用什麼模式的背景。Vesamenu.c32圖形模式,menu.c32文字模式。我選擇的時menu.c32。
同時還需要pxelinux.0檔案,它對整個引導器的作用就如同核心對系統的作用一般,它可以解釋default檔案(配置引導選單的檔案)中的每個配置項,並根據配置項做出不同的反應。如等待的時間、啟動器背景、啟動選單、核心引導等等。
所以我們需要將這兩個檔案複製到tftp的訪問目錄中:
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
接著就是pxelinux.cfg目錄,pxelinux被執行後,它會掃描該目錄下是否存在指定的配置檔案,如果存在,則引用被制定的配置檔案。
default檔案存放於pxelinux.cfg目錄中,pxelinux程式最後掃描的配置檔名就是default。所以,我們經常把啟動器配置項都寫入該檔案中。
所以我們就要建立pxelinux.cfg,並在此目錄下建立default檔案,編輯引導選單。
[root@Amei ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@Amei ~]# emacs /var/lib/tftpboot/pxelinux.cfg/default
default檔案內容為:
default menu.c32 prompt 0 timeout 300 ONTIMEOUT local menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install CentOS 7 x64 with HTTP kernel centos7/vmlinuz append initrd=centos7/initrd.img method=http://192.168.100.1/centos7 devfs=nomount
2.5 檢查檔案以及服務
此時/var/lib/tftp資料夾的結構應該是這樣的:
確保開啟dhcpd,xinetd,tftp,http這些服務,在開啟的時候沒有發生錯誤,說明配置沒問題。
[root@Amei tftpboot]# systemctl start dhcpd.service
[root@Amei tftpboot]# systemctl start xinetd.service
[root@Amei tftpboot]# systemctl start tftp.service
[root@Amei tftpboot]# systemctl start httpd.service
驗證httpd是否執行正常:
同時為了防止意外的發生我們需要關閉防火牆和selinux。
[root@Amei tftpboot]# systemctl stop firewalld.service [root@Amei tftpboot]# setenforce 0
3. 測試
pxe伺服器配置完成後,就可以在此子網中用網路引導安裝了,此時和普通的安裝系統差別不大,但是要選擇從網路引導。
default中定義的選單
熟悉的安裝介面