1. 程式人生 > >Linux系統——PXE高效能批量網絡裝機

Linux系統——PXE高效能批量網絡裝機

cto vmlinuz transfer 包括 bar 啟動參數 root url socket

PXE:Pre-boot Excution Environment,預啟動執行環境,石油Intel公司開發的網絡引導技術,工作在Client、Server模式,允許客戶機通過網絡從遠程服務器下載陰道鏡像,並記載安裝文件或者整個操作系統。
搭建PXE網絡體系,必須要滿足一下條件:
1. 客戶機的網卡支持PXE協議(集成BOOTROM芯片),且主板支持網絡引導。
2. 網絡中有一臺DHCP服務器,一邊為客戶機分配地址、指定引導文件位置
服務器通過TFTP簡單文件傳輸協議提供引導鏡像文件的下載。
技術分享圖片


工作過程:
工作站開機後,PXE BootROM(自啟動芯片)獲得控制權之前先做自我測試,然後以廣播形式發出一個請求FIND幀。如果服務器收到工作站所送出的要求,就會送回DHCP回應,內容包括用戶端的IP地址,預設通訊通道及開機應許昂文件。否則,服務器會忽略這個要求。工作站收到服務器發回的響應後則會回應一個幀,以請求傳送啟動所需文件。之後,將有更多的訊息在工作站與服務器之間作應答,用以決定啟動參數。BootROM由TFTP通信協議從服務器下載開機映像檔,這個映像檔就是軟盤的映像文件。工作站樹勇TFTP協議接受啟動文件後,將控制權轉交啟動快,引導操作系統,完成遠程啟動。
#### 搭建PXE遠程安裝服務器
1. 安裝並啟動TFTP服務

```
[root@localhost ~]# mkdir -p /var/ftp/centos6
[root@localhost ~]# cd /var/ftp/centos6/
[root@localhost centos6]# cp -rp /media/cdrom/* .
[root@localhost ~]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# yum -y install tftp-server
[root@localhost centos6]# vim /etc/xinetd.d/tftp
# 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 = no # 無需等待,同一時刻可以多個客戶端連接
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #tftp服務的根目錄
disable = no #開啟tftp服務
per_source = 11
cps = 100 2
flags = IPv4
}

```
2. 啟動tftp

```
[root@localhost centos6]# /etc/init.d/xinetd start
Starting xinetd: [ OK ]
[root@localhost centos6]# chkconfig tftp on
```
3. 準備Linux內核、初始化鏡像文件

```
[root@localhost ~]# cd /var/ftp/centos6/isolinux/
[root@localhost isolinux]# ls
boot.cat initrd.img memtest vesamenu.c32
boot.msg isolinux.bin splash.jpg vmlinuz
grub.conf isolinux.cfg TRANS.TBL
[root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost isolinux]# ls /var/lib/tftpboot/
initrd.img vmlinuz

```
4. 準備PXE引導程序、啟動菜單文件
準備引導程序

```
[root@localhost isolinux]# yum -y install syslinux
[root@localhost isolinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost isolinux]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 vmlinuz
[root@localhost isolinux]#

```
準備啟動菜單

```
[root@localhost ~]# cp /var/ftp/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# chmod 644 isolinux.cfg
[root@localhost tftpboot]# vim isolinux.cfg

default linux #改個名字
prompt 0 #不進行交互
#timeout 600

display boot.msg

#menu background splash.jpg
#menu title Welcome to CentOS 6.5!
#menu color border 0 #ffffffff #00000000
#menu color sel 7 #ffffffff #ff000000
#menu color title 0 #ffffffff #00000000
#menu color tabmsg 0 #ffffffff #00000000
#menu color unsel 0 #ffffffff #00000000
#menu color hotsel 0 #ff000000 #ffffffff
#menu color hotkey 7 #ffffffff #ff000000
#menu color scrollbar 0 #ffffffff #00000000

label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img
label text #對原數據進行更改
menu label Install system with ^basic video driver
kernel vmlinuz
append text initrd=initrd.img xdriver=vesa nomodeset #對原數據進行更改
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append rescue initrd=initrd.img rescue #對原數據進行更改
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
[root@localhost tftpboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# mv isolinux.cfg ./pxelinux.cfg/default

```
5. 安裝並啟動DHCP服務(pxe服務端)

```
[root@localhost tftpboot]# yum -y install dhcp
[root@localhost tftpboot]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample .
[root@localhost tftpboot]# cat dhcpd.conf.sample > /etc/dhcp/dhcpd.conf
[root@localhost tftpboot]# vim /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "www.yunjisuan.com";
option domain-name-servers 192.168.239.2;

default-lease-time 21600;
max-lease-time 43200;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
# This is a very basic subnet declaration.

subnet 192.168.239.0 netmask 255.255.255.0 {
range 192.168.239.100 192.168.239.200;
option routers 192.168.239.2;
next-server 192.168.239.132; #PXE的IP地址
filename "pxelinux.0";

}
[root@localhost tftpboot]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]
[root@localhost tftpboot]# netstat -antup | grep 67
udp 0 0 0.0.0.0:67 0.0.0.0:* 1528/dhcpd
[root@localhost tftpboot]# yum -y install vsftpd
[root@localhost tftpboot]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]

```
6. 測試連接ftp功能(pxe客戶端)
```
[root@localhost ~]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp 192.168.239.132
Connected to 192.168.239.132 (192.168.239.132).
220 (vsFTPd 2.2.2)
Name (192.168.239.132:root): ftp
331 Please specify the password.
Password: #密碼為空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,239,132,90,93).
150 Here comes the directory listing.
drwxr-xr-x 7 0 0 4096 Dec 02 15:32 centos6
drwxr-xr-x 2 0 0 4096 Mar 22 2017 pub
226 Directory send OK.
ftp> cd centos6
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,239,132,90,223).
150 Here comes the directory listing.
-r--r--r-- 1 0 0 14 Nov 29 2013 CentOS_BuildTag
dr-xr-xr-x 3 0 0 4096 Nov 29 2013 EFI
-r--r--r-- 1 0 0 212 Nov 27 2013 EULA
-r--r--r-- 1 0 0 18009 Nov 27 2013 GPL
dr-xr-xr-x 2 0 0 282624 Nov 29 2013 Packages
-r--r--r-- 1 0 0 1354 Nov 27 2013 RELEASE-NOTES-en-US.html
-r--r--r-- 1 0 0 1706 Nov 27 2013 RPM-GPG-KEY-CentOS-6
-r--r--r-- 1 0 0 1730 Nov 27 2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 1 0 0 1730 Nov 27 2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 1 0 0 1734 Nov 27 2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 0 0 3380 Nov 29 2013 TRANS.TBL
dr-xr-xr-x 3 0 0 4096 Nov 29 2013 images
dr-xr-xr-x 2 0 0 4096 Nov 29 2013 isolinux
dr-xr-xr-x 2 0 0 4096 Nov 29 2013 repodata
226 Directory send OK.
ftp> exit
221 Goodbye.


```
7. 新建虛擬機進行驗證
(1)調整BIOS,一邊從網絡引導(不調整默認從網絡引導)
在工具欄的【虛擬機】選項,選擇【電源】,點擊【打開電源時進入固件】進入BIOS界面,將network boot from Intel E1000調整到第一位

技術分享圖片


(2)自動獲取IP地址,並指向centos安裝源
技術分享圖片


技術分享圖片


在URL setup輸入ftp的URL(連接對方的IP地址),進行正常裝機
#### 實現kickstart無人值守安裝
1. 創建應答文件

```
[root@localhost ~]# mount /dev/sr0 /media/cdrom
[root@localhost ~]# yum -y install system-config-kickstart

```
技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片

Linux系統——PXE高效能批量網絡裝機