實驗室有幾台電腦,里邊裝有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中定義的菜單
熟悉的安裝界面