下一页 上一页 目录

3. 在服务器上设置

3.1 编译内核

在服务器端,如果您不打算使用旧的用户模式 NFS 守护进程,您需要将 NFS 服务器支持编译进内核(``NFS server support,'' 也称为 knfsdCONFIG_NFSD)。如果您计划使用较旧的 RARP 协议为客户端分配 IP 地址,那么在服务器内核中启用 RARP 支持可能是一个好主意。(如果您要通过 RARP 启动且不带内核参数,则必须启用此支持。)另一方面,如果客户端与服务器不在同一子网内,则它对您没有帮助。

工作站的内核至少需要以下设置:

如果可以选择将某些东西编译为模块,请不要这样做;模块只在内核启动之后工作,而这些东西需要在启动期间使用。

对于动态分配的 IP 地址,您还需要选择以下一个或多个内核选项:

如果工作站将在不带内核参数的情况下启动,您还需要将根设备设置为 0:255。通过使用命令 mknod /dev/nfsroot b 0 255 创建一个虚拟设备文件来完成此操作。在创建了这样一个设备文件之后,您可以使用命令 rdev <kernel-image> /dev/nfsroot 设置内核镜像的根设备。[注意:现代内核识别 root=/dev/nfs 作为命令行参数;为了保持一致性和/或兼容性,最好使用 /dev/nfs 作为设备名称,而不是 /dev/nfsroot]

3.2 创建根文件系统

复制文件系统

警告:虽然这些说明可能对您有效,但在生产环境中绝不是明智之举。为了更好地为客户端设置根文件系统,请参阅 Ofer Maor 编写的 NFS-Root-Client 迷你指南 <ofer@hadar.co.il>

在决定将根目录树放在哪里之后,使用(例如) mkdir -p <directory>tar cClf / - | tar xpCf <directory> - 创建它。

如果您在不使用 LILO 的情况下启动内核,那么根目录必须是 /tftpboot/<IP 地址>。如果您不喜欢这样,您可以在内核源代码的顶层 Makefile 中更改它,查找类似这样的行:NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""。如果您更改了此项,则必须重新编译内核。

对根文件系统的更改

现在删除不需要的文件,并检查 /etc/rc.d 脚本。一些重要的点:

导出文件系统

将根目录导出到工作站。基本思路是编辑 /etc/exports 文件,包含类似于以下行的内容:

例如,一个 DHCP 客户端在 C 类子网上接收 IP 地址将需要类似于这样的 exports 条目:

no_root_squash 参数允许超级用户 (root) 被 NFS 服务器视为超级用户;否则 root 将被重新映射为 nobody,并且通常无法对文件系统执行任何有用的操作。no_all_squash 参数类似,但适用于非 root 用户。详情请参阅 exports(5) 手册页。

在对 exports 文件进行任何更改后,您需要通知 NFS 服务器。在 Red Hat 下,这可以很容易地通过键入 /etc/rc.d/init.d/nfs stop; /etc/rc.d/init.d/nfs start 完成。在其他系统上,一个简单的 /etc/rc.d/init.d/nfs restart 甚至 exportfs -a 可能就足够了,而在运行用户模式 NFS 守护进程的旧机器上,您可能实际上需要 killall -HUP rpc.mountd; killall -HUP rpc.nfsd。(但是,不要 killall -HUP rpc.portmap!)

如果安装了 tcp_wrappers,您可能还需要编辑 /etc/hosts.allow 和/或 /etc/hosts.deny。特别是,如果远程系统(客户端)收到 RPC: connection refused 错误,/etc/hosts.deny 可能包含 portmap: ALLALL: ALL。要使客户端能够使用服务器的端口映射器,请在 /etc/hosts.allow 中添加相应的行。

portmap: <client-IP-number>
portmap: <2nd-client-IP-number>
portmap: <client-IP-network>/<client-IP-netmask>

在这种情况下,无需重启任何东西。您可以通过在 NFS 服务器上运行 rpcinfo -p,以及在允许范围内的 Linux 客户端上运行 rpcinfo -p NFS 服务器 来检查;两者列出的 RPC 服务应该匹配。

如果遇到问题,请检查 /var/log/messages/var/log/syslog 中是否有错误(例如,运行 tail -f /var/log/messages /var/log/syslog,然后尝试启动客户端),并查看您的手册页(exports、exportfs、portmap 等)。作为最后的手段,重启 NFS 服务器可能会有所帮助,但这有点像微软的做法...

RARP 设置

在网络上的某个地方设置 RARP。如果您在不带 nfsroot 参数的情况下启动,RARP 服务器必须是 NFS 服务器。通常这将是 NFS 服务器。要做到这一点,您需要运行一个带有 RARP 支持的内核。

要做到这一点,请执行(并将其安装在服务器的 /etc/rc.d 中的某个位置!):

/sbin/rarp -s <ip-addr> <hardware-addr>

其中:

ip-addr

是工作站的 IP 地址,以及

hardware-addr

是工作站网卡的以太网地址。

示例:/sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

您也可以使用符号名称而不是 IP 地址,只要服务器能够找到 IP 地址。(/etc/hosts 或 DNS 查询)

BOOTP 设置

对于 BOOTP 设置,您需要编辑 /etc/bootptab。请查阅 bootpd(8)bootptab(5) 手册页。

DHCP 设置

DHCP 服务器不需要与 NFS 服务器是同一台服务器,在大多数情况下,DHCP 服务器已经设置好。如果没有,请查阅 DHCP 迷你指南以获得更多帮助。

查找硬件地址

我不知道硬件地址!我该如何找到它?


下一页 上一页 目录