Next Previous Contents

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 映像档。

还有其他方法可以准备个人电脑部份:

如果你选择的是第二者,你必须使用 dd 命令来将这个映像档写入一张软盘片里。

这个映像档包含了 bootp 以及 tftp 客户端程序。 你也需要准备一个 linux 核心程序码,它含有 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,但你需修改:

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 项目的一般样本,其中

之后,每一台机器应该有下面这行

5.4 瞭解 tftp

TFTP (Trivial File Transfer Protocol) 是一个文档传输协定,就像 ftp 一样,但 它比比较简化,因此可以容易地在 EPROM 里来编码。 TFTP 的使用方法有二种:

几乎每一个 Unix 实作都包含 tfpt 伺服器,也许你并不需要自己安装一个。

5.5 在硬件伺服器上设定一个小型的 Linux 建构

这包含 Slackware供应版内的 a, ap, n, 及 x 部份。要安装更多的套件也可以;但 是上面的套件已足够一个无磁盘 X 终端机的需求了。首先你需要一个已在运转的 Linux 系统。在硬件机器里找一个磁盘空间并 export 它成为可读写并挂上它到 Linux 机器的文档系统上的某一处 (例如 /mnt)。开始 Linux 设定并改变root 选项从 / 变为 /mnt。然后设立如上面所说的套件,如果你只是要执行一个无磁盘的 Linux 那 么就不需要做其他改变。另一方面,如果你计划使用超过一个以上的无磁盘机器, 那么上面的设定就需要些许的修改,因为有些文档以及目录必须只有机器本身使用。 我们可以以移开 /usr 目录(它包含非私人的资料)的方式跳过这个问题, 然后建立一个分开的子目录给每一个无磁盘机器。例如,如果 /export/linux/machine1 被挂在 /mnt 上,那么在初始设定后目录结构会像这样


/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/machine1/usr

改变后你会有


/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/usr

现在为其他的机器建立目录。从现在开始我们假设你的无磁盘机器分别叫做 machine1、machine2、 machine3等等; 使用以下的 bash 命令手稿来设立其他的目录


 
        cd /export/linux
        for x in machine2 machine3 ; do
                mkdir $x; cd $x
                (cd ../machine1; tar cf - *) | tar xvf -
        done

然后做下列的 export:

如下
下面范列是依照 SunOs 4.1.3 的 exports 文档的语法来做
:

 
# This file is /etc/export
# for remote linux X terminals by Buci
# this line is only once
/export/root/usr             -access=linuxnet
# these lines once for every host
/export/root/machine1       rw=machine1,root=machine1
/export/root/machine2       rw=machine2,root=machine2
/export/root/machine3       rw=machine3,root=machine3

请不要忘了执行 exportfs -a

5.6 建构 tftp 伺服器

现在该是建构 tftp 伺服器的时候了。如果你不需要一个安全的 tftp 那很简单, 因为你的客户端已经可以从 /export 目录来启动。

如果一个安全的 tftp 被采用,那么你可以在 /tftpboot 目录下做个完整的 /export/linux 目录结构。 (用一个实体核心程序及连结给其他机器的符号连结), 或是让 /export 目录成为安全的 tftpd 的根目录。或者如果你有一另外的 tftpboot 目录,那么,同样地,你只需要原来的目录结构,然后用一个实体核心程序来 符号连结其他机器) 。 你可以执行下列命令来完成这个设定:


      mkdir -p /tftpboot/export/linux/machine1
      cd /tftpboot/export/linux/machine1
      cp /export/linux/machine1/<name of the kernel> . 

然后执行下面:


      mkdir -p /tftpboot/export/linux/machine2
      cd ../machine2 
      ln -s ../machine2/<name of the kernel> 

5.7 最后工作

最后,你必须插入


   /sbin/mount nfs_server:/export/linux/usr /usr


   /export/linux/<machinex>/etc/rc.d/rc.S

的第一行。在这里 <machinex> 指的是 machine1, machine2等等。


Next Previous Contents