把 RARP 支援編譯到核心中是個好方法. 如果在你不想在啟動時傳遞額外的參數給核心, 你必須將他編譯到核心中. 但如果客戶端不在同一個子網路區段中, 這個方式便沒有作用.
工作站的核心則必須至少有下列的支援:
如果在你不想在工作站開機時傳遞參數給核心, 你必須把根目錄設備設定成 0:255.
做法是用 mknod /dev/nfsroot b 0 255
建立一個裝置控制檔.
有了這個檔案後, 你便可以把核心內的根目錄路徑以 rdev <kernel-image> /dev/nfsroot
指定.
警告: 這些指令可能可以正常作用, 但並不表示可以在其他環境下作用.
對於建立根目錄檔案系統的較佳方式請參考 Ofer Maor <ofer@hadar.co.il>
所寫的 NFS-Root-Client mini howto.
決定了根目錄的放置路徑後, 可以用下面的指令建立
mkdir -p <路徑>
, 接著執行
tar cClf / - | tar xpCf <路徑> -
.
如果你不用 LILO 啟動核心, 根目錄路徑必須置於
/tftpboot/<IP 位置>
.
如果你不喜歡這個位置, 你可以修改核心原始碼中最頂層的 Makefile, 找到類似下面這行並加以修改
NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""
如果你改了這個, 你必須重新編譯核心.
首先清除不需要的檔案, 並且檢查 /etc/rc.d 的指令稿. 下面是一些重點:
要將根目錄系統分享給工作站的指令請參照 exports(5)
.
在改變設定檔後, 你必須重新起動 nfsd 與 mountd.
在 RedHat 下, 你只要執行
/etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start
就可以了.
在網路上必須有一個 RARP 伺服器. 如果啟動時同時沒有設定 nfsroot 參數, 則 RARP 伺服器必須設在 NFS 伺服器上. 通常都將 RARP 伺服器設在 NFS 伺服器上. 要完成這個設定, 你的核心必須要有 RARP 支援.
並且必須執行下面的指令 (通常放在 /etc/rc.d
裡面):
/sbin/rarp -s <ip 位置> <硬體位置>
其中
是工作站的 IP 位置, 而
則是工作站網路卡的乙太網路位置.
例如: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12
你也可以使用符號名稱來取代 IP 位置, 但伺服器必須能找到該名稱所對應的 IP 位置. (設定在 /etc/hosts 中, 或是經由 DNS 查詢)
要設定 BOOTP, 你必須編輯 /etc/bootptab
.
請參閱 bootpd(8) 以及 bootptab(5) 說明頁.
如果我不知道網路卡的硬體位置, 我該如何查詢?
/sbin/arp -a