一、PXE網(wǎng)絡(luò)裝機(jī)
1.概述:PXE是intel公司開發(fā)的網(wǎng)絡(luò)引導(dǎo)技術(shù),C/S架構(gòu);
2.條件:
服務(wù)器端:
在偃師等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷,外貿(mào)網(wǎng)站制作,偃師網(wǎng)站建設(shè)費(fèi)用合理。
服務(wù) | 作用 |
---|---|
dhcp服務(wù) | 為客戶機(jī)提供網(wǎng)絡(luò)參數(shù),及指定pxe服務(wù)器地址 |
tftp-server服務(wù) | 為客戶端發(fā)送vmlinuz內(nèi)核,initrd.img啟動文件,pxelinux相關(guān)的文件 |
vsftpd服務(wù) | 提供系統(tǒng)安裝過程的ISO鏡像中的軟件及ks.cfg(應(yīng)答文件) |
kickstart服務(wù) | 生成ks.cfg應(yīng)答文件(涵蓋了裝系統(tǒng)中的每一步) |
客戶端:網(wǎng)卡支持PXE協(xié)議,且主板支持網(wǎng)絡(luò)引導(dǎo);
3.三個組件的關(guān)系
4.裝機(jī)流程:
a、設(shè)置客戶機(jī)的BIOS從PXE啟動
b、客戶機(jī)向網(wǎng)絡(luò)中請求DHCP服務(wù)器獲取動態(tài)IP
c、DHCP服務(wù)器下發(fā)IP、引導(dǎo)文件位置、TFTP服務(wù)器地址
d、客戶機(jī)請求TFTP服務(wù)器獲取引導(dǎo)文件
e、執(zhí)行引導(dǎo)程序
f、請求TFTP服務(wù)器獲取配置文件(pxelinux.cfg)
g、配置文件包含vmlinux、initrd.img、ks文件位置信息
h、根據(jù)配置文件,用戶請求TFTP服務(wù)器獲取linux內(nèi)核(vmlinux)
i、請求TFTP服務(wù)器獲取linux根文件系統(tǒng)(initrd.img)
j、客戶機(jī)啟動linux內(nèi)核
k、內(nèi)核掛載initrd.img,并執(zhí)行掛載各種各樣的模塊
l、如果設(shè)置KS文件,裝機(jī)步驟自動選擇,否則需手動選擇
m、裝機(jī)完成
二.實(shí)驗(yàn)過程
(一)安裝dhcp服務(wù)以及配置 /etc/dhcp/dhcpd.conf
[root@localhost network-scripts]# yum install dhcp -y 安裝dhcp服務(wù)
[root@localhost network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 復(fù)制為dhcp的配置文件
cp:是否覆蓋"/etc/dhcp/dhcpd.conf"? y
[root@localhost network-scripts]# vim /etc/dhcp/dhcpd.conf 編輯dhcp配置文件
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.340;
option routers 192.168.100.100;
option domain-name-servers 114.114.114.114;
next-server 192.168.100.100;//指向tftp服務(wù)器地址
filename "pxelinux.0";指定引導(dǎo)文件
}
(二)安裝syslinux,tftp服務(wù)
1安裝tftp,修改配置文件
[root@localhost network-scripts]# yum install tftp-server -y //安裝tftp服務(wù)
[root@localhost network-scripts]#sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp //修改配置文件
2.安裝syslinux,并且把引導(dǎo)文件pxelinux.0復(fù)制到 /var/lib/tftpboot 目錄下
oot@localhost network-scripts]# yum install syslinux -y //安裝syslinux
[root@localhost network-scripts]#find /usr/share/syslinux/ -name "pxelinux.0" -exec cp -fp {} /var/lib/tftpboot \; //把pxelinux.0 文件復(fù)制到/var/lib/tftpboot 目錄下
(三)安裝vsftp服務(wù)(安裝之前先將centos7鏡像文件連接到光盤),將壓縮內(nèi)核和初始化文件復(fù)制到TFTP站點(diǎn)
[root@localhost tftpboot]# yum install vsftpd -y //安裝vsftp服務(wù)
mkdir /var/ftp/centos7 //創(chuàng)建centos7目錄
mount /dev/sr0 /var/ftp/centos7 //把鏡像掛載到centos7下面
find /var/ftp/centos7/images/pxeboot -name "initrd.img" -exec cp -fp {} /var/lib/tftpboot \;
find /var/ftp/centos7/images/pxeboot -name "vmlinuz" -exec cp -fp {} /var/lib/tftpboot \;
(四)編輯啟動菜單default配置文件,關(guān)閉防火墻并開啟三個服務(wù)
[root@localhost pxeboot]# cd /var/lib/tftpboot/ 切換到tftp站點(diǎn)
[root@localhost tftpboot]# mkdir pxelinux.cfg 創(chuàng)建配置文件目錄
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default 編輯default配置文件
[root@localhost pxelinux.cfg]# systemctl stop firewalld.service 關(guān)閉防火墻
[root@localhost pxelinux.cfg]# setenforce 0
[root@localhost pxelinux.cfg]# systemctl start dhcpd 啟動三個服務(wù)
[root@localhost pxelinux.cfg]# systemctl start tftp
[root@localhost pxelinux.cfg]# systemctl start vsftpd
defualt配置文件如下
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
三.腳本
#!/bin/bash
#---------------------------
#by jiji date:9-10 -
#pxe高效裝機(jī) -
#---------------------------
#配置dhcp配置文件
dhcpexp(){
echo -e " subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.20;
option routers 192.168.100.100;
option domain-name-servers 114.114.114.114;
next-server 192.168.100.100;
filename \"pxelinux.0\" ;
}" >>/etc/dhcp/dhcpd.conf
}
#安裝dhcp
rpm -q dhcp
if [ $? -eq 0 ];then
dhcpexp
else
yum -y install dhcp
cp -fpr /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
dhcpexp
fi
#安裝tftp和修改配置文件
rpm -q tftp-server
if [ $? -ne 0 ];then
yum -y install tftp-server
sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp
else
sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp
fi
#安裝syslinux
rpm -q syslinux
if [ $? -ne 0 ];then
find /usr/share/syslinux/ -name "pxelinux.0" -exec cp -fp {} /var/lib/tftpboot \;
else
yum -y install syslinux
find /usr/share/syslinux/ -name "pxelinux.0" -exec cp -fp {} /var/lib/tftpboot \;
fi
$安裝ftp
rpm -q vsftpd
if [ $? -ne 0 ];then
yum -y install vsftpd
mkdir /var/ftp/centos7
mount /dev/sr0 /var/ftp/centos7
find /var/ftp/centos7/images/pxeboot -name "initrd.img" -exec cp -fp {} /var/lib/tftpboot \;
find /var/ftp/centos7/images/pxeboot -name "vmlinuz" -exec cp -fp {} /var/lib/tftpboot \;
else
mkdir /var/ftp/centos7
mount /dev/sr0 /var/ftp/centos7
find /var/ftp/centos7/images/pxeboot -name "initrd.img" -exec cp -fp {} /var/lib/tftpboot \;
find /var/ftp/centos7/images/pxeboot -name "vmlinuz" -exec cp -fp {} /var/lib/tftpboot \;
fi
#配置編輯default啟動菜單
mkdir /var/lib/tftpboot/pxelinux.cfg
cat>/var/lib/tftpboot/pxelinux.cfg/default <<-EOF
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
EOF
#關(guān)閉防火墻啟動服務(wù)
systemctl stop firewalld.service
setenforce 0
systemctl start dhcpd
systemctl restart dhcpd
systemctl start tftp
systemctl restart tftp
systemctl start vsftpd
systemctl restart vsftpd