批量安裝Linux操做系統之PXE

可參考:https://blog.51cto.com/baidu/158675 html

DHCP協議的工做方式:linux

客戶端:
    客戶端廣播查找DHCP服務器的UDP數據包,數據包的目標IP是255.255.255.255
服務器端:

    服務器端在收到客戶端廣播的數據包後,會根據客戶端的MAC地址與服務端的配置來進行操做:

        1.查詢服務端日誌文件,如客戶端以前使用過某IP,且該IP空閒,則提供該IP予客戶端。

        2.查詢服務端配置文件,如配置文件對客戶端MAC有提供特定的固定IP,則將該固定IP給予客戶端。

        3.如不符合上述倆項條件,則隨機選取空閒的IP給予客戶端,並記錄

        4.客戶端選擇接受DHCP服務器提供的網絡參數,併發送一個廣播數據包告知已經接受DHCP服務器的網絡參數

        5.服務器端向客戶端回送確認的響應數據包,並告知客戶端網絡參數租約期限,開始租約計時間

                客戶端租約到期節約的倆種狀況:
                    客戶端脫機
                        關閉網絡接口
                        從新啓動
                        關機
                    客戶端租約到期

       DHCP服務器給予客戶端的IP參數主要由倆種:
        固定(Static)IP
        動態(Dynamic)IP

Linux DHCP協議的實現程序:dhcp, dnsmasq

DHCP服務端的配置
   主配置文件:
        /etc/dhcp/dhcpd.conf (Centos6.x 配置文件位置,Centos5.x配置文件位於/etc/dhcpd.conf)

        /usr/sbin/dhcpd
            /etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd  (IPV4 配置文件)
            /etc/dhcp/dhcpd6.conf --> /etc/rc.d/init.d/dhcpd6 (IPV6 配置文件)
        /usr/sbin/dhcrelay
            /etc/rc.d/init.d/dhcrelay  dhcpvim中繼器

        dchpd和dhcrelay倆個進程同時只能啓動一個

        dhcp服務監聽在udp的67號端口
        dhclient: 68/udp

        dhcpd.conf 範例文件:/usr/share/doc/dhcp*/dhcpd.conf.example

  主配置文件/etc/dhcp/dhcpd.conf或/etc/dhcpd.conf 的語法
    除了右括號")"後面以外,其餘每一行配置最後都要以";"做爲結尾。
    某些配置項目必須以option來定義,基本形式爲"option <參數代碼><配置內容>"

    如需分配固定IP的化,須要知道設置成固定IP的那臺計算機的MAC地址

    全局設置:
      allow booting;容許DHCP服務器給沒有安裝操做系統的服務器分配IP地址
        default-lease-time xxx #默認租約時間
        max-lease-time xxx     #最大租約時間
        option routers 默認網關的IP地址  #爲客戶端指定默認網關的的IP地址
        option domain-name-servers xxx  #爲客戶端指定DNS地址

    IP分配設置:
        subnet 網絡地址 netmask 子網掩碼 {  設定DHCP待分配地址的區域,subnet和netmask爲是關鍵詞

            range IP1 IP2 ; #指定一個連續的IP地址段

            host 主機名 { 指定固定IP對應到固定MAC的設置值
                hardware etherent MAC地址;
                fixed-address IP地址;

            }

         }     

         對於option 定義的某配置,若是同時存在於全局配置和IP分配設置中,則做用範圍越小的配置越先生效。

         其它配置選項:
        filename: 指明引導文件名稱;
        next-server:提供引導文件的服務器IP地址;

        範例;
        filename "pxelinux.0";
        next-server 172.16.100.67;

TFTP:
tftp:簡單文件傳輸協議
監聽在udp的69號端口
受xinetd服務管理apache

安裝:
          服務端 yum install tftp-server
          客戶端 yum install tftp

         配置文件:
            /etc/xinetd.d/tftp

         文件訪問根目錄:
            /var/lib/tftpboot

    tftp受xinetd管理,配置文件是/etc/xinetd.d/tftp

配置文件內容以下:bootstrap

service tftp

{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #此項值要改成no 啓動tftp
per_source = 11
cps = 100 2
flags = IPv4
}
~ vim

修改後重啓xinetd服務:
systemctl restart xinetd服務器

PXE:預啓動執行環境
工做於C/S的網絡模式
Client經過網絡從Server下載映像,並經過網絡啓動操做系統網絡

PXE 依賴於dhcp,tftp,文件服務

PXE(Pre-boot Execution Environment)是由Intel設計的協議,它可使計算機經過網絡啓動。協議分爲client和server兩端,PXE client在網卡的ROM中,當計算機引導時,BIOS把PXE client調入內存執行,並顯示出命令菜單,經用戶選擇後,PXE client將放置在遠端的操做系統經過網絡下載到本地運行。

  PXE協議的成功運行須要解決如下兩個問題:
既然是經過網絡傳輸,那麼計算機在啓動時,它的IP地址由誰來配置;
經過什麼協議下載Linux內核和根文件系統
  對於第一個問題,能夠經過DHCP Server解決,由DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協議,不過因爲這裏是給PXE Client分配IP地址,因此在配置DHCP Server時,須要增長相應的PXE特有配置。
  至於第二個問題,在PXE client所在的ROM中,已經存在了TFTP Client。PXE Client使用TFTP Client,經過TFTP協議到TFTP Server上下載所需的文件。併發

PXE client在工做過程當中,須要三個二進制文件:bootstrap、Linux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及Linux根文件系統。app

syslinux :提供網絡引導文件,啓動加載器dom

經過PXE安裝Linux:(使用PXE服務器安裝時,默認生成的配置文件的安裝文件狀況下)
環境準備:
yum install dhcp tftp-server xinetd -y
yum install syslinux -y
yum install httpd -y

將當前系統(PXE服務器)root用戶家目錄下的anaconda-ks.cfg文件複製到httpd的根目錄中,並重命名爲ks.cfg
cp anaconda-ks.cfg /var/www/html/
更改ks.cfg文件的屬主屬組:
chown apache:apache ks.cfg

將系統鏡像下的全部文件複製到/var/www/html目錄下:

修改ks.cfg文件,將cdrom 這行內容改成url -url=http://192.168.1.22/

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
將系統鏡像中images/pxeboot目錄下的vmlinuz,initrd.img 複製到tftp根目錄中
cp vmlinuz initrd.img /var/lib/tftpboot/
將系統鏡像中isolinux目錄下的boot.msg,vesamenu.c32,splash.png複製到tftp根目錄中
cp boot.msg vesamenu.c32 splash.png /var/lib/tftpboot/
在tftp根目錄中建立pxelinux.cfg目錄
mkdir /var/lib/tftpboot/pxelinux.cfg
將系統鏡像中isolinux目錄下的isolinux.cfg文件複製到tftp根目錄下pxelinux.cfg目錄中,並重命名爲default
cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改/var/lib/tftpboot/pxelinux.cfg/default文件,將default vesamenu.c32這行註釋,並添加default linux 這行內容
(default linux 表示默認安裝 label linux 指定的系統)
找到以下內容:
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
將append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet這行註釋,添加如下內容:
append initrd=initrd.img ks=http://192.168.1.22/ks.cfg

pxelinux.0 :引導文件
vmlinuz: 內核
initrd.img :
boot.msg :開機畫面文件()

配置dhcp服務:
範例以下:

allow booting;
allow bootp
option domain-name-servers 192.168.1.1;
default-lease-time 3600;
max-lease-time 7200;

log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100  192.168.1.199 ;
    option routers 192.168.1.108 ;

    filename "pxelinux.0";
    next-server 192.168.1.22;   #PXE服務器地址

}

相關文章
相關標籤/搜索