在您继续安装服务器软件之前,最好先查看以下 HOWTO(按所列顺序)
特别是, Diskless-HOWTO 包含了对本项目非常有用的丰富信息。
所需软件大多已安装在标准的 Linux 发行版中,但可能缺少一些。通常找不到的那些(dhcpd、pxe 等)包含在 mpeg-box-project.tgz 文件中。
我假设您已阅读 NFS-HOWTO 。如果您还没有,请帮自己一个忙,阅读一下。这些信息大多直接来自该 HOWTO。
在您开始设置 NFS 之前,请确保您已安装 nfs-utils 或 nfs-server 软件包。如果您没有安装它们,dhcpd-2.0pl2 源代码包含在 mpeg-box-project.tgz 文件中。
tar -zxvf mpeg-box-project.tgz
cd "1st Step - configuring server/01 - dhcp"
./configure make make install
服务器的设置将分两个步骤完成:设置 NFS 的配置文件,然后启动 NFS 服务。
您需要编辑三个主要的配置文件来设置 NFS 服务器:/etc/exports、/etc/hosts.allow 和 /etc/hosts.deny。严格来说,您只需要编辑 /etc/exports 即可使 NFS 工作,但您将留下一个极其不安全的设置。您可能还需要编辑您的启动脚本。
此文件包含条目列表;每个条目都指示共享的卷以及共享方式。查看手册页(man exports)以获得文件中所有设置选项的完整描述,尽管这里的描述可能满足大多数人的需求。
/etc/exports 中的条目通常如下所示
directory machine1(option11,option12) machine2(option21,option22)
其中
您要共享的目录。它可能是一个完整的卷,尽管不一定是。如果您共享一个目录,那么同一文件系统下该目录下的所有目录也将被共享。例如,它可能是:/exports
将有权访问该目录的客户端机器。机器可以通过其 IP 地址或 DNS 地址(例如,machine.company.com 或 192.168.0.8)列出。使用 IP 地址更可靠、更安全。
每个机器的选项列表将描述该机器将具有的访问类型。重要选项是
对于我们的 MP3 播放器盒,我们只需要对包含 mp3 的目录进行只读访问。假设 MP3 播放器盒的 IP 将是 10.0.0.8,并且包含我们音乐文件的目录是 /exports/media。/etc/exports 将如下所示
/exports/media 10.0.0.8(ro)
这两个文件指定网络上的哪些计算机可以使用您机器上的服务。文件的每一行都是一个条目,列出了服务和一组机器。当服务器收到来自机器的请求时,它会执行以下操作
总的来说,对于 NFS(以及大多数互联网服务),一个好主意是显式拒绝您不需要允许访问的主机的访问。
执行此操作的第一步是将以下条目添加到 /etc/hosts.deny
portmap:ALL
接下来,我们需要向 hosts.allow 添加一个条目,以授予我们想要允许访问的任何主机访问权限。(如果我们只将以上行留在 hosts.deny 中,那么没有人可以访问 NFS。)hosts.allow 中的条目遵循以下格式
service: host [or network/netmask] , host [or network/netmask]
此处,host 是潜在客户端的 IP 地址;在某些版本中可能可以使用主机的 DNS 名称,但这强烈不建议使用。假设我们有上面的设置,我们只想允许访问 huh.com 和 arakis.dune.com,并假设这些机器的 IP 地址分别为 10.0.0.8 和 10.0.0.1。我们可以将以下条目添加到 /etc/hosts.allow
portmap: 10.0.0.8, 10.0.0.1
对于最新的 nfs-utils 版本,我们还需要添加以下内容(同样,即使不支持这些条目也是无害的)
lockd: 10.0.0.8, 10.0.0.1
rquotad: 10.0.0.8, 10.0.0.1
mountd: 10.0.0.8, 10.0.0.1
statd: 10.0.0.8, 10.0.0.1
启动 NFS 服务器的 shell 脚本通常位于 /etc/init.d 或 /etc/rc.d 中。根据您的 Linux 发行版,您需要运行:netconfig、setup (RedHat);YaSt2(SuSe);turbo-config (TurboLinux);或者您只能手动编辑 /etc/init.d/nfs-server 文件。如果您运行这些程序,请查找列出 NFS 或 nfs-serveR 的选项并启动这些服务。
DHCP(动态主机配置协议)是一种计算机查找其 IP 地址、网关设置、子网掩码以及更多信息的协议。对于系统管理员来说,这是一个非常好的卸载。您想要使用它的原因是,当 MP3 播放器盒启动时,如前所述,它没有硬盘驱动器,也没有软盘驱动器——因此它无法启动操作系统。但是对于支持 PXE 的网卡,会发生以下情况
设置 DHCP 守护进程是一个两阶段的过程——安装二进制文件和设置 DHCP 的配置文件。
我使用的 DHCP 版本来自 Internet Software Consortium,版本为 2.0。您可能已经安装了二进制文件,如果是这种情况——跳过此部分。
源代码是 1st Step - configuring server/01 - dhcpd/dhcp-2.0pl2,进入该目录并发出以下命令
./configure make make install
启动 DHCP 服务器的 shell 脚本通常位于 /etc/init.d 或 /etc/rc.d 中。根据您的 Linux 发行版,您需要运行:netconfig、setup (RedHat);YaSt2(SuSe);turbo-config (TurboLinux);或者您只能手动编辑 /etc/init.d/dhcpd 文件。
/etc/dhcpd.conf 文件最重要的部分是选项字段和主机字段。对于 ISC-dhcpd 的 v2.0,必须指定
option dhcp-class-identifier "PXEClient";
option vendor-encapsulated-options ff;
这将使 DHCP 服务器能够将带有 PXE 的网卡识别为有效。确保您也填写了主机部分。例如,对于名为 swallow.eoh 的 MP3 播放器盒,主机条目将如下所示
host swallow {
hardware ethernet 00:90:27:c1:dc:db;
fixed-address swallow.eoh;
}
这将允许 DHCP 服务器为具有该 MAC 地址(网卡在启动期间显示)的盒子分配与主机 swallow 关联的 IP 地址。主机如何与 10.0.0.8 关联——那是 DNS 服务器的工作(您希望已安装)。如果您没有 DNS,您可以使用平面主机解析,并将以下行添加到 /etc/hosts 中(将 00:90:27. .. 替换为您的 MAC 地址)
10.0.0.8 swallow.eoh swallow
回到程序...
以下是我的 /etc/dhcpd.conf 文件
option domain-name "eoh";
option dhcp-class-identifier "PXEClient";
option vendor-encapsulated-options ff;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.20 10.0.0.40;
}
host swallow {
hardware ethernet 00:90:27:c1:dc:db;
fixed-address swallow.eoh;
}
您可以通过启动 Windows 工作站并将其 IP 地址更改为 自动获取 IP 地址 来检查您的 DHCP 服务器。
PXE 是远程启动的标准。以下信息取自 1st Step - configuring server/02 - pxe/pxe-README
PXE 是 DHCP 的扩展,也是远程启动的方法。PXE 的规范可以在 ftp://download.intel.com/ial/wfm/pxespec.pdf 中找到。PXE 守护进程提供两种功能:proxyDHCP 和 PXE Bootserver。PXE 守护进程可以设置为提供其中一种或两种功能。两种功能都是必需的。
proxyDHCP 与 DHCP 并行工作,并为启动客户端提供远程启动配置选项。ProxyDHCP 为 PXE 客户端提供以下信息:带有可选超时的远程启动提示、远程启动菜单和 PXE Bootserver 发现选项。
PXE Bootserver 是 PXE 守护进程提供的功能。PXE Bootserver 是为启动客户端提供特定启动环境的启动映像的功能。
PXE Bootserver 向 PXE 客户端提供请求的 NBP(网络启动程序)。PXE 客户端使用 proxyDHCP 提供给客户端的发现信息来定位 PXE Bootserver。PXE 客户端使用的发现方法(多播、广播或单播)和可用启动服务器类型的列表由 proxyDHCP 控制。PXE Bootserver 始终侦听所有三种类型的发现请求,并将响应所有有效请求。
如果您有 RedHat 或 SuSE,pxe 可作为 RPM 使用 - 下载并安装它。不幸的是,您仍然需要源代码 - 您将必须重新编译 NBP(网络启动程序)。
下面提到的所有路径都指的是 mpeg-box-project.tgz 文件的内容,该文件包含下面列出的所有源文件和配置文件。
PXE 服务器的源文件位于
1st Step - configuring server/02 - pxe/pxe/pxe-linux/server.
如果您没有安装 PXE,只需运行:make 和 make install。文件将安装在 /usr/local 中。之后,您应该将 1st Step - configuring server/02 - pxe/pxe/pxe.init 文件复制到 /etc/rc.d 或 /etc/init.d。之后进入您的 /etc/rc2.d 并将 /etc/init.d/pxe.init 文件链接到 S99pxe。命令是
ln -s ../init.d/pxe.init S99pxe如果您不知道我在说什么,只需输入
pxe这将启动 PXE 守护进程(但在您阅读下一节后执行此操作)
为了使 PXE 守护进程完全正常工作,必须设置几个配置文件/目录。
mtftp dgram udp wait root /usr/sbin/tcpd in.mtftpd /tftpboot
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd
mtftp 1759/udp
pxe 67/udp
pxe 4011/udp
当您要调试网络问题时,这将使您的生活更轻松一些。
mkdir -p /tftpboot/X86PC/UNDI/BStrap
mkdir -p /tftpboot/X86PC/UNDI/linux-install
复制 bstrap.0 文件(位于 1st Step - configuring server/02 - pxe/pxe/pxe-linux/server/services 中)到 /tftpboot/X86PC/UNDI/BStrap。对 linux.0 执行相同的操作,但将其复制到 /tftpboot/X86PC/UNDI/linux-install。如果您不喜欢这些补丁中的任何一个,请相应地修改 /etc/pxe.conf、/etc/mtftpd.conf。完成所有这些步骤后,请确保您有一个正在运行且工作的 DHCP 守护进程(查看有关 DHCP 的部分以了解如何操作)。通过键入以下命令启动 pxe 守护进程
pxePXE 的调试信息通过管道传输到 /PxeServiceLog.txt。要关闭此调试功能,请编辑 /etc/pxe.conf - 搜索 DebugOutToFile。
打开具有支持 PXE 的网卡的系统。您应该看到网卡从 DHCP 服务器获取 IP,然后显示一个菜单。如果是这种情况,您已成功配置服务器系统,现在是时候在下一节中配置 MP3 播放器盒的 Linux 内核和 initrd 文件了。