本文档不像常见的 HOWTO 文档那样引用通用原则,而是一种针对本质上复杂问题的实操方法。它借鉴了当前 NFS 根目录的结构,但在以下几点上有所不同:
本 HOWTO 假定您对您正在做的事情有一般性的了解,因此请先阅读 Diskless Nodes HOW-TO。
大学计算机实验室通常有很多运行 Windows 98 或/和 NT 的 PC,以及一台强大的 UNIX 服务器来满足对替代操作环境的需求。这台 UNIX 服务器大多数时候是空闲的,或者仅仅通过 telnet 访问并运行一些简单的任务。另一方面,学生,特别是那些就读计算机科学系的学生,想要充分利用它,只是为了好玩或“教育目的”(闯入、黑客攻击...)。telnet 的限制性环境不允许我们享受强大服务器的使用。对此有两种替代方案:
计算机实验室的网络包括以下内容。
我必须完成的任务如下:提供一个完整的可行解决方案,无需新的开销,并且除了服务器上必要的修改外,无需修改任何内容。
作为项目的负责人,我必须在关于它的各种解决方案之间做出选择。我选择了以下方案,原因如下:
为了能够启动 Linux 系统,您必须为其提供以下内容:
/sbin
目录。其中存在 init
程序,它负责启动其他程序和启动过程中的启动脚本。此外,/sbin
目录在 SuSE 的情况下包含启动脚本,一些有用的程序,例如 portmap
程序以及在挂载 /usr
目录之前需要的许多其他程序。/lib
目录。它包含 libc 库,如果您的 init
是动态链接的,则这些库是绝对必要的。/bin
目录。它包含用于运行启动脚本的文件命令和 shell。/etc
目录。它包含大多数程序的配置文件和 rc.d
目录,这是启动脚本的默认目录。/var
目录。它是程序想要写入的假脱机区域。它分为许多子目录,具有不同的用途。/dev
目录。它包含字符和块特殊设备,允许程序通过内核与计算机设备通信。/usr
和 /opt
目录中。因此,可以为每个无盘客户端创建一个目录,其中包含上面列出的目录和用于目录(如 /usr
)的挂载点,这些目录将由服务器导出。本文档假定的启动过程如下:init
程序启动。在切换到运行级别之前,它调用 /etc/inittab
文件中描述的脚本。此脚本负责构建库缓存、初始化和挂载交换文件、加载一些系统特定的内核模块并设置主机名。/etc/rc.d/rcX
目录中的脚本,其中 'X' 是运行级别的名称。这些脚本负责启动 portmapper 并挂载 NFS 导出的 /usr, /home
和 /opt
目录。