使用者工具

網站工具


linux:pxeinstall

大量部屬Linux作業系統

經典安裝作業系統通常以光碟方式安裝,或是以usb方式。這些安裝方式有一個共通毛病就是耗時,若只有一台電腦還可以,那10台..50台或是100台電腦?

這邊就是要討論以PXE網路開機方式大量安裝作業系統,以節省時間。

  • 這邊以Centos6 平台下實驗的

建置步驟

  1. 安奘好DHCP及TFTP及TFTP-Server
    yum install dhcp dhcp-devel tftp-server tftp
  2. 設定好DHCP組態檔並嘗試啟動
    vim /etc/dhcp/dhcpd.conf
    option domain-name "Qoop.com";
    default-lease-time 600;
    max-lease-time 7200;
     
    subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.170 192.168.0.172;
    option domain-name-servers 192.168.0.53;
    host TESTKS.Qoop.com {hardware ethernet 42:70:e4:f1:6b:d8;fixed-address 192.168.0.170;} -->以ip及MAC Address綑綁在一起 (MAC Address 是那一台要安裝作業系統的網卡位址)
    next-server 192.168.0.62;  -->指定bootloader是在哪台機器上(也就是 tftp-server)
    filename    "pxelinux.0";   -->bootloader程式的檔名
    }

    檢查設定檔格式及語法是否正確

    /etc/init.d/dhcpd configtest  
    Syntax: OK

    正確後,啟動dhcpd服務

    /etc/init.d/dhcpd start
    Starting dhcpd:                                            [  OK  ]
  3. 修改TFTP組態檔,建立tftp分享目錄再嘗試啟動tftp(由xinetd的SuperDaemon作管理)
    vim /etc/xinetd.d/tftp
    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /tftpboot     --->tftp分享的目錄
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }

    建立分享目錄,另外把pxelinu.0放置在/tftpboot/根下

    mkdir /tftpboot
    這邊是用 syslinux導引系統,用它的pxelinux.0 sample檔
    #rpm -ql syslinux|grep -i pxelinux.0
    /usr/share/syslinux/pxelinux.0
    #cp /usr/share/syslinux/pxelinux.0 /tftpboot

    在/tftpboot/下再建立一個目錄pxelinux.cfg/,此目錄主要是bootloader的設定檔(開機選單)

    mkdir /tftpboot/pxelinux.cfg
    /etc/init.d/xinetd start
  4. 為了方便測試,可先暫時停掉SELinux及iptables
    #setenforce 0
    #/etc/init.d/iptables stop

    測試tftp傳輸是否正常

    tftp
  5. 以Web server來當作安裝媒體來源(Installer)
    若無Apache httpd server 就安裝
    #yum install httpd
    建立安裝媒體目錄
    mkdir /var/www/html/Centos6
    掛載centos6.iso到媒體目錄
    mount -o loop centos6.iso /var/www/html/Centos6
    測試網頁狀況(Installer安裝在192.168.0.62)
    links http://192.168.0.62/Centos6
  6. 建立pxelinux.0需要的開機選單
    #vim /tftpboot/pxelinux.cfg/default
    內容為:
    DEFAULT TEST      -->(預設以哪一個label啟動)
    PROMPT  1         -->(是否要提示訊息 0:為否;1為是)
    TIMEOUT 50        -->(等待時間;單位 1/10秒) 
    #DISPLAY BOOT.MSG -->(開機訊息檔 /tftpboot/boot.img)
    LABEL   TEST
      kernel vmlinuz_x86
      append initrd=initrd_x86.img noipv6 ks=http://192.168.0.62/ks/ks.cfg  ksdevice=eth0

    複製Centos6 kernel及initrd等img檔到/tftpboot/

    #cp /var/www/html/Centos6_x86/images/pxeboot/vmlinuz /tftpboot/vmlinuz_x86
    #cp /var/www/html/Centos6_x86/images/pxeboot/initrd.img /tftpboot/initrd_x86.img
  7. 建立KS(kickstart設定檔)
    ks檔是自動化安裝重要的文件,它會將需要安裝套件,設定,安裝前設定或安裝後設定都寫在此檔中
    通常編輯ks檔都會安裝system-config-kickstart套件,是圖形介面編輯,要不然就拿現有範本檔做修改

    範例ks檔

  8. 到Client端測試pxe開機
    從BIOS調整網路開機

參考資料

linux/pxeinstall.txt · 上一次變更: 2013/07/06 01:28 (外部編輯)