天天看點

在centos7上實作PXE安裝方式

前言:PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作于Client/Server的網絡模式,支援工作站通過網絡從遠端伺服器下載下傳映像,并由此支援通過網絡啟動作業系統,在啟動過程中,終端要求伺服器配置設定IP位址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協定下載下傳一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端(用戶端)基本軟體設定,進而引導預先安裝在伺服器中的終端作業系統。

PXE工作原理

  1. Client向PXE Server上的DHCP發送IP位址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC位址)。
  2. 如果合法則傳回Client的IP位址,同時将啟動檔案pxelinux.0的位置資訊一并傳送給Client 
  3. Client向PXE Server上的TFTP發送擷取pxelinux.0請求消息,TFTP接收到消息之後再向Client發送pxelinux.0大小資訊。
  4. 試探Client是否滿意,當 TFTP收到Client發回的同意大小資訊之後,正式向Client發送pxelinux.0 
  5. Client執行接收到的pxelinux.0檔案 
  6. Client向TFTP Server發送針對本機的配置資訊檔案(在TFTP 服務的 pxelinux.cfg目錄下),TFTP将配置檔案發回Client。
  7. 繼而Client根據配置檔案執行後續操作。 
  8. Client向TFTP發送Linux核心請求資訊,TFTP接收到消息之後将核心檔案發送給Client 
  9. Client向TFTP發送根檔案請求資訊,TFTP接收到消息之後傳回Linux根檔案系統 
  10. Client啟動Linux核心 
  11. Client下載下傳安裝源檔案,讀取自動化安裝腳本

具體的實驗安裝步驟

 1.安裝前準備:關閉防火牆和SELINUX,DHCP伺服器靜态IP

    iptables -F  setenforce 0  # 隻是臨時有效,永久有效更改配置檔案

 2.安裝相關軟體包

    yum install httpd tftp-servier dhcp syslinux # 有的系統安裝的是syslinux-nonlinux

 3.配置檔案共享服務和yum源

    systemctl enable httpd

    systemctl start httpd

    mkdir /var/www/html/centos/7

    mount /dev/sr0/  /var/www/html/centos/7

 4.準備kickstart檔案

    在這裡我們用系統建立的ks檔案做為模闆來進行修改,下面列舉幾個關鍵的字段資訊

    vim /var/www/html/centos/ks7.cfg # ks7.cfg檔案存放在httpe伺服器上,注意權限

    # Use CDROM installation media

    url --url=http://ip位址/centos/7  # yum指定的路徑

    # Use graphical install

    text #字元界面安裝

    # Network information

    network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate # 網卡配置

    # Partition clearing information

    zerombr  # 清除MBR

    clearpart --all  # 清除所有分區

 5.配置tftp服務

    systemctl enable tftp.socket

    systemctl start tftp.socket

 6.配置DHCP服務

    vim /etc/dhcp/dhcpd.conf   # 編輯配置檔案

    option domain-name "xdg.com";  # 主機名

    default-lease-time 600;   # 租期時間

    max-lease-time 7200;     # 最大租期時間

    subnet 192.168.25.0 netmask 255.255.255.0 {

        range 192.168.25.50 192.168.25.100;  # 位址池

        next-server  tftp伺服器的ip位址; # 引導檔案的伺服器位址 例如:tftp

        filename  "pxelinux.0"; # 引導檔案名稱,這個檔案名系統預設的

    }

    #編輯完成之後啟動服務

    systemctl enable dhcpd

    systemctl start dhcpd

 7.準備PXE相關檔案

    mkdir /var/lib/tftpboot/pxelinux.cfg/

    cp/usr/share/syslinux/{pxelinux.0,menu.c32}  /var/lib/tftpboot/

    cp/misc/cd/isolinux/{vmlinuz,initrd.img}  /var/lib/tftpboot/

    cp/misc/cd/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

    注:檔案pxelinux.0和menu.c32都是系統生成的檔案,由軟體syslinux(syslinux-nonlinux)生成

    # 建立完成的目錄如下

    /var/lib/tftpboot/

    ├──initrd.img

    ├──menu.c32

    ├──pxelinux.0

    ├──pxelinux.cfg

    │└──default

    └──vmlinuz

    注:如果想安裝多個系統的話(initrd.img和vmlinux放在一個目錄裡,同時需要修改default檔案相關資訊配置),pxelinux.0、menu.c32、pxelinux.cfg目錄,這三個必須放在根目錄下面,引導的時候才會找到檔案位置

 8.制作啟動菜單檔案

    vim /var/lib/tftpboot/pxelinux.cfg/default 

    default menu.c32 # 啟動菜單界面

    timeout 600 # 1/10秒

    menu title CentOS Linux 7 PXE Install

    label centos7

      menu label Auto Install CentOS Linux 7

      kernel vmlinuz

      append initrd=initrd.img ks=http://ip位址/centos/ks7.cfg # 指定ks檔案路徑

    label local # 本地啟動

      menu default

      menu label Boot from ^local drive

      localboot 0xffff

    menu end

 9.相關的注意事項

    ks.cfg檔案存放在http伺服器上,檔案的權限有可讀,否則無法讀取安裝配置資訊

    /var/lib/tftpboot目錄下檔案的存放的位置

    在dhcp伺服器上的配置資訊裡,指定的filename和next-server兩個字段的資訊要正确,否則無法引導

    在安裝的時候,虛拟機的硬體配置 - - 記憶體最好大于1G,不然可能導緻安裝失敗

轉載于:https://blog.51cto.com/xddggg/1966284

繼續閱讀