FreeBSD下建立无盘X服务器指引
*译文 from http://www.freebsd.org/doc/en_US.ISO_8859-1/articles/diskless-x/index.html
*原作 Jerry Kendall,jerry@kcis.com
*译者 paulliang,iesun@21cn.com 水平有限,敬请指正
在一些FreeBSD-hacker列表上朋友的帮助下,我创建了一个无盘X终端。X终端的建立首先
要建立一个挂上NFS的最小的有效的无盘系统。这些相同的步骤被用于建立两个独立的无盘系
统。首先是http://altair.kcis.com,一个运行在一台旧的386DX-40上无盘X终端,它有个340M的硬盘,可
我并不想改换,它经由以太网从antares.kcis.com引导。第二个系统是一台486DX2-66机。我装设了一个没有本
地硬盘的无盘FreeBSD(完全的)。服务器是运行SunOS 4.1.3的一台Sun 670MP机。对于两者需有相同的设置。我
确信会存在需要加入到此的一些东西,欢迎任何批评。
1、创建boot floppy (On the diskless system)
由于网络引导载入器不能工作在一些TSR系统如MS-DOS用,所以最好是创建一个专用boot floppy,或者如果可
能,你创建一个MS-DOS菜单,在系统启动时它会询问什么样的配置载入。(config.sys autoexec.bat文件).
以下是我的使用方法,它工作的很好。My MS-DOS菜单如下。
Example 1. config.sys
[menu]
menuitem=normal, normal
menuitem=unix, unix
[normal]
....
normal config.sys stuff
...
[unix]
Example 2. autoexec.bat
@ECHO OFF
goto %config%
:normal
...
normal autoexec.bat stuff
...
goto end
:unix
cd \netboot
nb8390.com
:end
2、获取网络引导程序(On Server)
编译位于/usr/src/sys/i386/boot/netboot的程序"net-boot"。你可阅读Makefile的顶部注释,如有需要改
变,请做个备份。当编译完成后,就会有两个MS-DOS可执行文件:nb8390.com和nb3c509.com,其中一个是运行
无盘服务器所需的,它将可从引导服务器载入内核,基于这点,可将两个程序都拷入boot floppy。
3、确定那一个程序运行(On the diskless system)
如果你知道以太网适配器晶片组,那是很容易的。如果是NS8390晶片组,或是基于NS8390晶片组的,选用
nb8390.com;如果是基于3com 509晶片组的,选用nb3c509.com程序。如果你不知道是什么晶片组,请先试用其
中一个,当出现“NO adapter found”,再试用另一个。
4、从网络上引导
也可在任意config.sys/autoexec.bat文件之外引导。我的以太网适配器是WD8013下16位模式,所以我选择运行
C:>cd \netboot
C:>nb8390
Boot from Network (Y/N) ? Y
BOOTP/TFTP/NFS bootstrap loader ESC for menu
Searching for adapter… WD8013EBT base 0x0300, memory 0x000D8000, addr
00:40:01:43:26:66 Searching for server…
无盘系统尝试寻找一个引导服务器(boot server)。注意上面地址那一行,稍后将会用到
这些数字。如果想自动运行,那么请修改config.sys和autoexec.bat文
件和重启无盘系统。类似地,对于3com 509晶片组,可运行nb3c509.com。如果在搜索适配器是出"NO adapter found"信
息,请查实Makefile的确实设置。
5、允许系统从网络上引导(On the Server)
确信文件 /etc/inetd.conf开启了tftp和bootps服务:
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
Additions by who ever you are
bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab
如果你改变了/etc/inetd.conf,请发送HUP信号给inetd。
还记得在无盘系统上引导载入器有关地址行的输出信息吗?猜对了,现在就要用它了。
增加一个条目到/etc/bootptab(可能要创建这个文件)。它显示象以下的内容:
altair:\
:ht=ether:\
:ha=004001432666:\
:sm=255.255.255.0:\
:hn:\
:ds=199.246.76.1:\
:ip=199.246.76.2:\
:gw=199.246.76.1:\
:vm=rfc1048:
解释如下:
altair 无盘系统名(没有域或)
ht=ether 以太网的硬件类型
ha=004001432666 硬件地址(上述注意的)
sm=255.255.255.0 子掩码
hn 告诉服务器发送客户机名给客户机
ds=199.246.76.1 告诉客户机那一台是域名服务器
ip=199.246.76.2 告诉客户机它是IP地址是这个值
gw=199.246.76.1 告诉客户机,缺省网关是这个值
vm=… 离开
注意:IP地址设置的要正确。以上是我一些设置,你应根据你的情况作相应的设置。
在服务器上创建目录"/tftpboot",它包含为了无盘系统的服务器提供服务的配置文件,这些文件被命名为
"cfg."的形式,就是无盘系统的IP地址。atlair的配置文件是/tftpboot/cfg.199.246.76.2,它的内
容是:
rootfs 199.246.76.1:/DiskLess/rootfs/altair
hostname altair.kcis.com
行hostname altair.kcis.com仅仅是告诉无盘系统一个完整的域名是什么。
行rootfs 199.246.76.1:/DiskLess/rootfs/altair告诉无盘系统NFS挂载表里根文件系统的位置。
注意:NFS挂载表根文件系统挂载后是只读的。
如果有需要,无盘系统可重挂成可读可写的。
我使用386DX-40机作专门的X终端。
"altair"的层次是:
/
/bin
/etc
/tmp
/sbin
/dev
/dev/fd
/usr
/var
/var/run
实际的文件列表是:
-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel
-r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh
-rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc
-rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys
-rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts
-rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair
-r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init
-r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig
-r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs
-r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot
-r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV
不要忘记运行设备目录(dev directory)里的MAKEDEV。
altair的/etc/rc文件有:
#!/bin/sh
PATH=/bin:/
export PATH
configure the localhost
/sbin/ifconfig lo0 127.0.0.1
configure the ethernet card
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
mount the root filesystem via NFS
/sbin/mount antares:/DiskLess/rootfs/altair /
mount the /usr filesystem via NFS
/sbin/mount antares:/DiskLess/usr /usr
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair \
/dev/null 2>&1
Reboot after X exits
/sbin/reboot
We blew up…
exit 1
欢迎指正与批评。