2007年1月30日 星期二

架設PXE網路開機服務來為net4501安裝ubuntu

PXE全名Preboot Execution Environment,是一種可以讓機器透過網路來載入作業系統的服務,而一般都是拿它來安裝作業系統,特別是在沒有額外儲存裝置或是要大量安裝的機器上. 它的原理大概是這樣,機器開機時,在網路中要一個ip(透過dhcp機制),然後順便透過tftp還有nfs將作業系統的核心抓到本機上執行.

以下是我在ubuntu6.06上安裝的過程:

1.要架設PXE,首先在來源機器上先安裝好需要的軟體
$sudo apt-get install tftp-hpa tftpd-hpa

$sudo apt-get install dhcp3-server

$sudo apt-get install nfs-common

2.設定dhcpd
編輯 /etc/dhcp3/dhcpd.conf

加入

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.12 ;
filename "pxelinux.0";
}

其實這是簡單的dhcp設定, 但額外需要加上 filename "pxelinux.0"; 來載入OS的核心

3.設定tftp並放置OS核心(安裝來源)
(1)確認tftp服務有打開: $cat /etc/inetd.conf 應該會有tftp的敘述

(2)執行 $sudo update-inetd --enable BOOT

(3)確認 /etc/default/tftp-hpa 的內容是否為
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

(4)把OS核心或你下載的ISO檔,解壓縮到 /var/lib/tftpboot
$lftp -c "open http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/; mirror netboot/"

$cp -a netboot/* /var/lib/tftpboot

$cd /var/lib/tftpboot/

$tar xfz pxeboot.tar.gz

(4) 因為我是在net4501這塊板子上安裝,因而沒有vga界面,所以必須動點手腳
編輯 pxelinux.cfg/default

將 print screen 的敘述拿掉,並把install的參數改成

LABEL install
kernel ubuntu-installer/i386/linux
append console=ttyS0,19200n81 initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw --


4.當然,欲使用網路開機的機器,必需支援PXE開機才行,找一部有PXE功能的機器試試,應該就可以成功了

參考

沒有留言: