PXE高效裝機(附加腳本)

1、PXE網絡裝機
1.概述:PXE是intel公司開發的網絡引導技術,C/S架構;
2.條件:
服務器端:linux

服務 做用
dhcp服務 爲客戶機提供網絡參數,及指定pxe服務器地址
tftp-server服務 爲客戶端發送vmlinuz內核,initrd.img啓動文件,pxelinux相關的文件
vsftpd服務 提供系統安裝過程的ISO鏡像中的軟件及ks.cfg(應答文件)
kickstart服務 生成ks.cfg應答文件(涵蓋了裝系統中的每一步)

客戶端:網卡支持PXE協議,且主板支持網絡引導;
3.三個組件的關係
PXE高效裝機(附加腳本)
4.裝機流程:
a、設置客戶機的BIOS從PXE啓動
b、客戶機向網絡中請求DHCP服務器獲取動態IP
c、DHCP服務器下發IP、引導文件位置、TFTP服務器地址
d、客戶機請求TFTP服務器獲取引導文件
e、執行引導程序
f、請求TFTP服務器獲取配置文件(pxelinux.cfg)
g、配置文件包含vmlinux、initrd.img、ks文件位置信息
h、根據配置文件,用戶請求TFTP服務器獲取linux內核(vmlinux)
i、請求TFTP服務器獲取linux根文件系統(initrd.img)
j、客戶機啓動linux內核
k、內核掛載initrd.img,並執行掛載各類各樣的模塊
l、若是設置KS文件,裝機步驟自動選擇,不然需手動選擇
m、裝機完成
二.實驗過程
(一)安裝dhcp服務以及配置 /etc/dhcp/dhcpd.conf vim

[root@localhost network-scripts]# yum install dhcp -y  安裝dhcp服務
[root@localhost network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 複製爲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服務器地址
        filename "pxelinux.0";指定引導文件
}

(二)安裝syslinux,tftp服務
1安裝tftp,修改配置文件centos

[root@localhost network-scripts]# yum install tftp-server -y //安裝tftp服務
[root@localhost network-scripts]#sed -i '/disable/s/yes/no/g' /etc/xinetd.d/tftp //修改配置文件

2.安裝syslinux,而且把引導文件pxelinux.0複製到 /var/lib/tftpboot 目錄下bash

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 文件複製到/var/lib/tftpboot 目錄下

(三)安裝vsftp服務(安裝以前先將centos7鏡像文件鏈接到光盤),將壓縮內核和初始化文件複製到TFTP站點服務器

[root@localhost tftpboot]# yum install vsftpd -y  //安裝vsftp服務
        mkdir /var/ftp/centos7 //建立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配置文件,關閉防火牆並開啓三個服務網絡

[root@localhost pxeboot]# cd /var/lib/tftpboot/   切換到tftp站點
[root@localhost tftpboot]# mkdir pxelinux.cfg   建立配置文件目錄
[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  關閉防火牆
[root@localhost pxelinux.cfg]# setenforce 0
[root@localhost pxelinux.cfg]# systemctl start dhcpd   啓動三個服務
[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

三.腳本app

#!/bin/bash
#---------------------------
#by jiji date:9-10         -
#pxe高效裝機               -
#---------------------------
#配置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

#關閉防火牆啓動服務
systemctl stop firewalld.service
setenforce 0
systemctl start dhcpd
systemctl restart dhcpd
systemctl start tftp
systemctl restart tftp
systemctl start vsftpd
systemctl restart vsftpd
相關文章
相關標籤/搜索