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.三個組件的關係
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