2011年8月24日 星期三

PXE Server on Debian 6.0 (squeeze)

使用Linux的環境架設PXE Server
何謂PXE Server: Preboot Execution Environment

環境: Debian 6.0(代號: squeeze)
核心: Kernel 2.6.32-5-686
硬體: 945GSE晶片組

我是用Expert install來裝Debian 6.0,所以我無法保証是不是要額外裝其他的套件 XD

PXE Server,主要是由兩個最重要的功能所組成:
1. DHCP: 提供給 Target Board IP (Target Board本身必需將BIOS選項裡的Lan Boot功能打開)
2. TFTP: 提供Image,讓Target Board可以得到所需的Image. (pelinux.0)

DHCP Server: dhcp3-server
同時會安裝isc-dhcp-server,而在/etc/init.d下,是看到isc-dhcp-server。
需要修改設定檔,才可以讓dhcp server正確的運作。
設定檔名稱: /etc/dhcp/dhcpd.conf

下面是修改過的地方:
增加DNS,只是不曉得這樣有沒有問題就是了~XD 我只需要看到安裝的畫面就好~所以也沒測
option domain-name-servers 168.95.1.1, 8.8.8.8, 8.8.4.4;

第二段才是在述敘此DHCP Server的運作模式
subnet 10.1.199.0 netmask 255.255.255.0 {
range 10.1.199.50 10.1.199.200; >> Target board能拿到的ip範圍
filename "pxelinux.0"; >> DHCP到IP後,要跟TFTP討的檔案名稱
next-server 10.1.199.2; >> TFTP Server IP
option subnet-mask 255.255.255.0; >> netmask
option broadcast-address 10.1.199.255; >> broadcast
option routers 10.1.199.254; >> routers
}

TFTP Server: atftpd
因為一開始裝了其他的套件,所以並不確定atftpd是不是一開始就有

設定檔名稱: /etc/default/atfptd

設定檔內容:
USE_INETD=false >> 使tftpd不使用inetd(但是這邊我不是很確定,因為其實可以修改/etc/inetd.conf,但是將tftp那行註解掉後,tftp server也會有問題)

OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 10.1.199.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /home/avalue/tftp"
一些設定就自己man一下atftpd,主要就是最後的參數/home/avalue/tftp。
這就是設定tftp的root directory.

嗯...除了設定atfptd之外,也要修改/etc/inetd.conf下的tftp設定,將tftp root改為/home/avalue/tftp (這邊應該是我有地方沒設定好才會需要修改這個地方)

PXE Server:
DHCP Server以及TFTP Server都設定好後,就只差PXE Server所需要的檔案了。
PXE Server會去找pxe loader >> pxelinux.0,而這個檔案會去讀取pxelinux.cfg下的default。
我一開始要笨...把pxelinux.cfg當一個檔案,所以我的PXE Server會一直說找不到pxelinux.cfg/default

這些相關的檔案可以至義守大學的FTP站 http://ftp.isu.edu.tw/pub/Linux/Debian/debian/dists/lenny/main/installer-i386/20090123lenny8/images/netboot/

裡面有所需的pxelinux.0,以及pxelinux.cfg用的default。
透過default,你可以修改你的PXE Server要做的事情。
例如在義大站台下載到的default,內容如下:

include debian/squeeze/i386/boot-screens/menu-cfg
default debian/squeeze/i386/boot-screens/vesamenu.c32

嗯...長得不一樣...因為這是我的tftp內的路徑 w
所以pxe server會去tftp server下的debian/squeeze/i386/boot-screens/menu-cfg讀取設定

假如使用義大的設定,那最後PXE跑起來會是Debian的安裝畫面~

有要補充的之後有空再補充