class="21992">
作者: Robert Nemkin
[email protected] 譯者: 謝昆中 HSIEH Kun-Chung, (
[email protected] )
v0.0.3版, 1996年 9月12日
--------------------------------------------------------------------------------
本文件在敘述如何設立一個無磁碟 Linux 機器。著作權為 Robert Nemkin 所有。著作權條款依照 GPL。我想要謝謝 Bela Kis
將這份文件翻譯成為英文。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 修改
v0.0.3版 1996年9月12日: 一小部份的修改
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 如何設立一個無磁碟的 Linux 機
本文件在敘述如何設立一個無磁碟 Linux 機器。有時候我們可能需要在一個既無硬碟亦無軟碟機的個人電腦上執行 Linux 。如果有個網路, 其他的 Unix 系統有著 bootp, tftp, NFS 伺服器,而我們又有一個 eprom 燒錄機,那麽我們有辦法在建立一個無任何磁碟機的 Linux系統了。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 相關文章
NFS-root Mini Howto
Linux NET-2/3-HOWTO 由 Terry Dawson 所寫, [email protected]
/usr/src/linux/README □於建構以及編譯新核心
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 硬體
在本文所提到的都是以下面的建構來做的
Sun-OS 4.1.3 做為啟動伺服器
Slackware 2.3 + Linux 1.2.8 + wd 8013 網路卡
已使用中的乙太網路
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5. 基本概念
基本概念如下:個人電腦會經由 bootp 協定從啟動伺服器中來取得它的 IP 位址。用 0.0.0.0 為初始 IP 位址,而它的核心程式會經由 tftp 協定。
跳過區段的啟動 (經由路由器router) 並不是個簡單問題,所以,不是將伺服器以及無磁碟機的機器放置在同一個網路區段,就只有建構一個 UDP 輔助位址在你的 router 到伺服器的位址上。細節請參考你的 router 產器手冊。
以下是我們的步驟
5.1 設定個人電腦
取得 nfsboot 套件 (可從你較喜歡的 linux mirror 鏡射站的 /pub/Linux/system/Linux-boot 目錄取得)。它包含了一個給 wd8013卡可直接燒錄用的 booteprom 映像檔。
還有其他方法可以准備個人電腦部份:
如果你的機器並不是沒有磁碟的,那麽你可以使用小小的 DOS 程式或
含有同樣套件的二進位軟體映像檔。
如果你選擇的是第二者,你必須使用 dd 命令來將這個映像檔寫入一張軟碟片□。
這個映像檔包含了 bootp 以及 tftp 客戶端程式。你也需要准備一個 linux 核心程式碼,它含有 nfs-root 選項。
如果你使用最新的穩定核心程式,如 linux-1.2.13,那麽你需要使用包含在 nfsbootk套件內的 patch 修補核心程式。
參考 patch(1)
如果你想要用最新的,但卻不是很穩的 linux-1.3.x 系列核心,那麽你就需要建構 nfs-root 這選項。
隨便你要不要建構區塊設備 (軟碟機或硬碟機) 的支援,但你必須建構 tcp/ip 支援、 wd 乙太網路卡支援、 nfs 檔案系統支援。然後重新編譯核心程式。
5.2 在伺服器上設定 bootpd
它可以在 bootpd-2.4.tar.gz套件中找到 (可從你較喜歡的 linux mirror 鏡射站的 /pub/Linux/system/Network/boot.net 目錄內)。取得這個套件,編譯並安裝它。如果你其他的 Unix 機器也是用 Slackware Linux 的,那麽標准的供應版本就有 bootpd 了,所以你可以跳過這部份。 daemon 可以直接發出命令來執行
--------------------------------------------------------------------------------
bootpd -s
--------------------------------------------------------------------------------
或是使用 inetd,但你需修改:
/etc/inetd.conf 在這些條列中移除 # 號
--------------------------------------------------------------------------------
# tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export
# bootps dgram udp wait root /usr/sbin/in.bootpd bootpd
--------------------------------------------------------------------------------
在 /etc/services 中插入或是移除備注符號:
--------------------------------------------------------------------------------
bootps 67/tcp # BOOTP server
tftp 69/udp # TFTP server
--------------------------------------------------------------------------------
重新啟動 inetd ,使用
--------------------------------------------------------------------------------
kill -HUP .
--------------------------------------------------------------------------------
5.3 在伺服器上建構 bootpd
由先, bootpd 有個叫 bootptab 的建構檔,它通常被放在 /etc 內。你必須修改它,加上你的無磁碟機器的閘道 IP 位址、 dns 伺服器,以及乙太網路位址(es)。 □例如下 /etc/bootptab:
--------------------------------------------------------------------------------
global.prof:
:sm=255.255.255.0:
:ds=192.168.1.5:
:gw=192.168.1.19:
:ht=ethernet:
:bf=linux:
machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140:
machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:
--------------------------------------------------------------------------------
global.prof 是 host 項目的一般樣本,其中
sm 欄包含子網路遮罩
ds 欄包含網域名稱伺服器的位址
gw 欄包含內定閘道位址 gateway
ht 欄包含網路媒介硬體種類
bf 欄包含啟動檔檔名
之後,每一台機器應該有下面這行
首欄包含主機名稱
hd 欄包含啟動檔案的目錄
全區樣本應該被包含到 tc 欄,
ha 欄包含乙太網路卡的硬體位址
ip 欄包含被分配的的 IP 位址
5.4 了解 tftp
TFTP (Trivial File Transfer Protocol) 是一個檔案傳輸協定,就像 ftp 一樣,但它比比較簡化,因此可以容易地在 EPROM □來編碼。 TFTP 的使用方法有二種:
簡單的 tftp: 表示客戶端可以存取你的整個檔案系統。雖然較簡單但卻開了一個安全大洞 (任何人都可以經由 tftp 來拿到你的密碼)。
安全的 tftp: tftp 伺服器會使用chroot.2 系統呼叫來改變它自己的根目錄。任何在新目錄以外的事件都完全無法存取。因為 chroot 目錄變成新的根目錄, 硬碟在 bootptab 整檔時必須反應這個新的處境。例如:當我們使用不安全的 tftp 時, hd 欄包含了啟動目錄的完整路徑,: /export/root/machine1。當使用安全的 tftp 時, /export 被當成根目錄,而 /export 變成 / ,且 hd 欄就變成 /root/machine1了。
幾乎每一個 Unix 實作都包含 tfpt 伺服器,也許你並不需要自己安裝一個。
5.5 在遠端伺服器上設定一個小型的 Linux 建構
這包含 Slackware供應版內的 a, ap, n, 及 x 部份。要安裝更多的套件也可以;但是上面的套件已足夠一個無磁碟 X 終端機的需求了。首先你需要一個已在運轉的 Linux 系統。在遠端機器□找一個磁碟空間並 export 它成為可讀寫並掛上它到 Linux 機器的檔案系統上的某一處 (例如 /mnt)。開始 Linux 設定並改變root 選項從 / 變為 /mnt。然後設立如上面所說的套件,如果你只是要執行一個無磁碟的 Linux 那麽就不需要做其他改變。另一方面,如果你計畫使用超過一個以上的無磁碟機器,那麽上面的設定就需要些許的修改,因為有些檔案以及目錄必須只有機器本身使用。我們可以以移開 /usr 目