如果您的機器連接到了一個區域網路,您可以從網路上的另外一台機器上面透過 TFTP 來開機。如果您傾向從另外一台機器上面啟動安裝系統,則開機檔案需要放在那台機器上面的某個特殊地方,並且設定您的機器從該機器進行開機。
您需要設置一台 TFTP 伺服器,對於很多機器來說,還需要一台 BOOTP 伺服器 ,又或 DHCP 伺服器。
BOOTP 是一種 IP 通訊協定,用來告訴電腦它自己的 IP 位址以及從網路何處取得啟動映像。 DHCP (動態主機設定協定 Dynamic Host Configuration Protocol) 是一個更靈活,向後相容的 BOOTP 延伸。有一些系統只能透過 DHCP 來配置。
普通檔案傳輸協定 (Trivial File Transfer Protocol, TFTP) 能為客戶端提供開機映像。理論上,任何伺服器,在任何平台上只要實做這些協定就都能夠被應用。在這一節的一些例子裡面,我們將提供在 SunOS 4.x、SunOS 5.x (即 Solaris) 和 GNU/Linux 上面的一些操作例子。
在 GNU/Linux 下面有兩種 BOOTP 伺服器。他們是 CMU bootpd 和另外一種實際上是 DHCP 伺服器的程式 ISC dhcpd,他們被包含在 Debian GNU/Linux 的 bootp
和 dhcp
軟體套件中。
要使用 CMU bootpd,您必須先將 /etc/inetd.conf
中相關的註釋標記去掉 (或者加入一些新行)。在 Debian GNU/Linux 裡,您可以執行 update-inetd --enable bootps
,然後執行 /etc/init.d/inetd reload
來完成此工作。在其它系統中,這行設定應該看起來像這樣:
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
現在,您必須建立一個 /etc/bootptab
檔案。它具有和一些老 BSD 檔案相似並使用相同的加密格式。這些檔案包括 printcap
、termcap
,和 disktab
。請參閱 bootptab
的手冊以獲得更多的資訊。對於 CMU bootpd,您將需要知道客戶端硬的體 (MAC) 位址。這裡有一個範例 /etc/bootptab
:
client:\\ hd=/tftpboot:\\ bf=tftpboot.img:\\ ip=192.168.1.90:\\ sm=255.255.255.0:\\ sa=192.168.1.1:\\ ha=0123456789AB:
您至少需要修改 "ha" 選項,它指定了客戶端的硬體地址。"bf" 選項則指定了一個客戶端應該透過 TFTP 取得的檔案名稱。請從 節 4.3.4, "將 TFTP 映像放到適當的位置" 處取得更多的資訊。
透過 ISC dhcpd 設定 BOOTP 反而非常容易。因為它把 BOOTP 客戶端程式看成一個特殊的 DHCP 客戶端。部分架構結構需要經過複雜的設定才能從 BOOTP 啟動客戶端。如果您的機器屬於這種情況,請閱讀 節 4.3.2, "設置 DHCP 伺服器"。否則,您大概只需要將 allow bootp
指令添加到包含客戶機的子網域的配定部分,並重新啟動 dhcpd 就可以了,重啟的指令是:/etc/init.d/dhcpd restart
。
ISC dhcpd 是一種自由軟體 DHCP 伺服器。在 Debian GNU/Linux 裡,它被包含在 dhcp
軟體套件中。這裡有它的一個設定檔的範例(通常是 /etc/dhcpd.conf
):
option domain-name "example.com"; option domain-name-servers ns1.example.com; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; server-name "servername"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option routers 192.168.1.1; } host clientname { filename "/tftpboot/tftpboot.img"; server-name "servername"; next-server servername; hardware ethernet 01:23:45:67:89:AB; fixed-address 192.168.1.90; }
註:新的(並且是建議的) dhcp3
軟體套件使用 /etc/dhcp3/dhcpd.conf
作為其設定檔。
在這個例子中,一台伺服器 servername
負責執行包括 DHCP 伺服器、TFTP 伺服器和閘道器在內的所有工作。您需要修改網域名稱選項,以及伺服器名稱和客戶端硬體位址。filename
選項應是要從 TFTP 取得的檔案名稱。
在編輯了 dhcpd 設定檔後,您需要使用下面的指令重新啟動它:/etc/init.d/dhcpd restart
。
要準備好 TFTP 伺服器,您首先需要確定 tftpd 已經啟動。這通常可以在 /etc/inetd.conf
加入下列設定來完成:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
Debian 套件通常在安裝後會自動把這條設定好。
檢查那個檔案並且記住被用作 in.tftpd 參數的目錄,您接下來將會需要它。-l
參數能夠讓某些版本的 in.tftpd 將所有請求記錄到系統日誌中。這在檢查錯誤的時候會很有用。如果您必須修改 /etc/inetd.conf
,您將必須提醒正在運作的 inetd 程序該檔案已經被改變。在 Debian 系統中,您應該執行 /etc/init.d/inetd reload
﹔而在其它系統中,找到 inetd 所對應的程序 ID,並且執行 kill -HUP
。 inetd-pid
接下來,將在 節 4.2.1, "哪裡能找到安裝映像檔" 中找到的 TFTP 開機映像放到tftpd 開機映像目錄中。一般來說,這個目錄將是 /tftpboot
。您必須將該檔案鏈結到 tftpd 用來啟動客戶端的檔案名稱。不幸的是,這個檔案名稱完全決定於 TFTP 客戶端程式,並且沒有一個強制的標準。
對於用 PXE 開機來說,您所需的只是設定 netboot/netboot.tar.gz
壓縮檔案。簡單地將此包解壓縮到 tftpd 開機映像目錄下。 並確保您的 DHCP 伺服器設定會把 /debian-installer/ia64/elilo.efi
以開機所需的檔案名傳遞至tftpd。