2015/4/27

【Ubuntu】架設PXE Server

PXE開機運作原理是Bootloader(PC來說就是BIOS)在開機時動態要求分配IP,在取得IP資訊同時也會收到下一個伺服器的位址與該讀取的檔案資訊,接著透過TFTP服務取得開機核心與檔案系統。所以一台伺服器要提供PXE功能,至少要有DHCP與TFTP伺服器功能,首先安裝這兩個套件:
sudo apt-get install isc-dhcp-server
apt-get install tftpd-hpa inetutils-inetd

指定提供DHCP服務的網路卡
sudo vi /etc/default/isc-dhcp-server
將interface指定為eth0
INTERFACES="eth0"

設定DHCP服務
sudo vi /etc/dhcp/dhcpd.conf

# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.253;
  option routers 192.168.0.254;
  option broadcast-address 192.168.0.255;
}
allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.254;
filename "pxelinux.0";

default-lease-time 600;
max-lease-time 7200;
若有domain name資訊則填入正確資訊,否則將相關兩的兩行敘述註解起來,否則啟動DHCP服務可能會帶不起來。這邊設定IP分配會從192.168.0.100到192.168.0.253,並指定client端取得IP資訊後接著要向192.168.0.254伺服器要求檔案pxelinux.0。
完成設定後重新啟動DHCP服務
sudo service isc-dhcp-server restart

修改tftp設定
sudo vi /etc/default/tftpd-hpa
增加敘述:
RUN_DAEMON="yes"
修改inet.conf
sudo vi /etc/inetd.conf
增加敘述
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

重新啟動tftp服務
sudo service tftpd-hpa restart

到這邊PXE服務就算設定完成了,這時在client端選擇網路開機,應該會成功取得IP配置,但會卡在取得檔案階段,底下說明使用ubuntu server的安裝光碟裡面提供的netboot檔案,讓client可以透過PXE服務開啟安裝程式。

掛載安裝印象檔,並將需要的檔案複製到tftp目錄即可
sudo mount ubuntu-14.10-server-amd64.iso /mnt
sudo cp -avr /mnt/install/netboot/* /var/lib/tftpboot/

這時client在選擇網路開機,就可以進到ubuntu安裝畫面了!

2 則留言:

  1. 版主您好 如要使用全程自動安裝 不知您有沒相關方式
    謝謝

    回覆刪除
  2. tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
    請問是不是多一行 /usr/sbin/in.tftpd?

    回覆刪除