当前位置:嗨网首页>书籍在线阅读

07-NFS服务器[5]

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.3.3 NFS服务器[5]

[5] 我们在9.8节也介绍过NFS,可以一并参考一下。——译者注

使用NFS挂载目标板的根文件系统是一个非常强大的开发手段。这里列出了这种开发方式的一些优点:

  • 根文件系统的大小不会受限于板卡上的有限资源,比如闪存;
  • 在开发过程中,对应用程序文件所做的改动会立刻体现在目标系统中;
  • 你可以在开发调试根文件系统之前调试和引导内核。

设置NFS服务器的具体步骤因桌面Linux发行版的不同而各异。和本章描述的其他服务一样,必须参考Linux发行版所附带的文档,以了解适合你的具体操作细节。NFS服务必须从你的启动脚本、图形化菜单或命令行中启动。例如,在一个安装了Fedora Linux的桌面电脑中,要启动NFS服务,可以以root用户的身份在命令行中执行下面的命令:

310.png 或者

311.png 注意,在后来的Ubuntu和其他发行版中,这个命令已经变成了/etc/init.d/nfs-kernel-server。

每次启动桌面Linux工作站之后,你都必须执行一下这个命令。(这个服务以及其他一些服务可以在系统开机时自动启动。请参考你的桌面Linux发行版附带的文档。)除了开启这个服务以外,内核必须在编译时就支持NFS。尽管DHCP和TFTP都是用户空间的工具,但是NFS需要有内核的支持。这同样适用于你的开发工作站和目标板。图12-2中显示了内核中有关NFS的配置选项。注意,其中同时包含了支持NFS服务器和NFS客户端的选项。还要注意Root file system on NFS选项。目标板内核必须配置了这个选项才能以NFS挂载其根文件系统。

312.png

图12-2 NFS相关的内核配置

NFS服务器从一个导出文件中获取其指令,这个文件存放在你的开发工作站中,通常是/etc/exports。代码清单12-7显示了这个文件的内容。

代码清单12-7 简单的NFS exports文件

313.png 这里显示了3个条目,每个条目中包含了一个目录名称,一个NFS客户端可以远程挂载其中任意一个目录。目录名称后面的星号( * )表示NFS服务器允许来自任意IP地址的连接请求,后面的括号中设置了挂载相应目录时的属性(读/写, rw )。后一个属性( no_root_squash )允许具有root权限的客户端能够在给定目录中行使root用户的权利。当客户端是嵌入式系统时,这个属性通常是必需的,因为它们常常只有root账户。

当一个用户发起NFS请求时, no_all_squash 属性确保他的uid和gid保持不变,而不是被映射为一个默认的匿名账户。 no_subtree_check 属性关闭了服务器上的子树检查。在某些情况下,这可以提升性能和可靠性。如果你想了解这些属性的更多详细信息,请参考NFS服务器的文档和导出文件的帮助手册。

你可以在自己的工作站上测试一下NFS服务器的配置(这时,工作站既是服务器也是客户端)。我们假设你已经开启了NFS服务(需要同时开启NFS服务器和NFS客户端的功能),你可以挂载一个本地的NFS导出目录,就像挂载其他文件系统一样:

314.png 如果这个命令能够成功执行,而且你可以通过目录/mnt/remote访问目录.../workspace中的内容,这表明你的NFS服务器配置可以正常工作。