Contributed by Martin Renters <martin@FreeBSD.org>.
有了netboot.com/netboot.rom 這兩個檔案,客戶端不需要磁碟機就能經由網路啟動並執行FreeBSD, 而且從2.0版開始就可以使用本地交換區,同時仍然能以NFS做為交換區。
目前支援的乙太網路卡有:Western Digital/SMC 8003, 8013, 8216與相容卡;NE1000/NE2000與相容卡(必須重新編譯)
找一部機器作為伺服器,這部機器的磁碟必須有足夠的空間存放 FreeBSD 2.0,並且提供bootp、tftp和NFS服務。經過測試的機器:
執行HP-UX 9.04(以上)的HP9000/8xx(pre 9.04無法使用)
Sun/Solaris 2.3。(需要先取得bootp)
設定bootp服務提供客戶端IP、閘道(gateway)和子網路遮罩(netmask)。
diskless:\ :ht=ether:\ :ha=0000c01f848a:\ :sm=255.255.255.0:\ :hn:\ :ds=192.1.2.3:\ :ip=192.1.2.4:\ :gw=192.1.2.5:\ :vm=rfc1048:
設定TFTP服務(與bootp服務同一臺伺服器)提供啟動資訊給客戶端, 檔名的格式是 cfg.X.X.X.X (或/tftpboot/cfg.X.X.X.X), 其中X.X.X.X是客戶端的IP位址。 檔案的內容可以是任何有效的netboot指令,在2.0中, netboot有下列的指令:
help | 顯示說明 |
ip X.X.X.X | 顯示/設定客戶端IP位址 |
server X.X.X.X | 顯示/設定bootp/tftp伺服器的位址 |
netmask X.X.X.X | 顯示/設定子網路遮罩 |
hostname name | 顯示/設定主機名稱 |
kernel name | 顯示/設定kernel名稱 |
rootfs ip:/fs | 顯示/設定根檔案系統(root filesystem) |
swapfs ip:/fs | 顯示/設定交換區檔案系統(swap filesystem) |
swapsize size | 顯示/設定交換區檔案系統(swap filesystem) |
diskboot | 使用磁碟開機 |
autoboot | 繼續執行啟動程序 |
trans on|off | 開啟/關閉transceiver功能 |
flags bcdhsv | 設定啟動旗標 |
一個典型的設定檔:
rootfs 192.1.2.3:/rootfs/myclient swapfs 192.1.2.3:/swapfs swapsize 20000 hostname myclient.mydomain
一個使用本地交換區的設定檔:
rootfs 192.1.2.3:/rootfs/myclient hostname myclient.mydomain
確定你將NFS伺服器裡做為根(及交換區)檔案系統的目錄開放給客戶端, 並且讓客戶端能以root的身份存取這些檔案系統,一個用於FreeBSD的典型 /etc/exports檔如下:
/rootfs/myclient -maproot=0:0 myclient.mydomain /swapfs -maproot=0:0 myclient.mydomain
HP-UX則是:
/rootfs/myclient -root=myclient.mydomain /swapfs -root=myclient.mydomain
如果使用NFS(完全無磁碟作業),請用dd 指令為客戶端建立交換檔。如果在swapfs指令 加了參數/swapfs,並且指定大小為20000, 就像上面的範例,客戶端的交換檔檔名就是 /swapfs/swap.X.X.X.X, 而X.X.X.X則是客戶端的IP位址。例如:
# dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000
此外,當客戶端開始使用交換檔之後, 交換檔裡可能會被存放敏感的資料, 所以記得為交換檔設定讀取及寫入的權限,防止未經許可的存取:
# chmod 0600 /swapfs/swap.192.1.2.4
在客戶端做為根檔案系統的目錄中(如上例中的 /rootfs/myclient)將根檔案系統解開。
HP-UX系統:HP9000/800系列的伺服器應該執行HP-UX 9.04 或更新的版本,較舊的版本無法在NFS上建立設備檔。
在/rootfs/myclient中解開 /dev時, 注意某些系統(HPUX)不會建立設備檔,不過FreeBSD沒有問題。 因此在第一次啟動時必須進入單一使用者模式 (在啟動時按Control-C鍵), cd /dev然後執行 sh ./MAKEDEV all指令來修正這個問題。
在客戶端執行netboot.com指令或是用 netboot.rom檔案製作EPROM。
雖然我正讓每個客戶端共享個別的/usr和 /檔案系統,但是目前並沒有公認正確的做去, 如果任何人對於共享/和/usr 檔案系統有更好的建議,請通知我或FreeBSD documentation project mailing list <freebsd-doc@FreeBSD.org>。
如果要使用NE1000/2000,必須修改 /sys/i386/boot/netboot/Makefile 中的組態並且重新編譯。請參考檔案中的註解。