首页 理论教育 NFS根文件系统搭建-Linux驱动程序开发实例

NFS根文件系统搭建-Linux驱动程序开发实例

时间:2023-10-19 理论教育 版权反馈
【摘要】:首先应该在Linux主机上安装NFS服务器:sudo apt-get install nfs-kernel-server建立NFS服务目录/root/fgj/nfs/rootfs,将根文件系统的文件全部复制到该目录。另外使用NFS时最好关闭主机的防火墙。例11.4 建立NFS根文件系统确保内核包含网络设备驱动程序。配置内核支持NFS文件系统和NFS块设备、NFS根文件系统。图11-6 选择内核级别的自动IP配置配置完毕,根文件系统可以加载。

NFS根文件系统搭建-Linux驱动程序开发实例

网络文件系统(NFS)是一种通过网络共享文件的机制,通过NFS,远程的文件可以像本地文件一样访问。网络文件系统是一种服务器与客户端结构,客户端通过mount方式加载网络文件系统。

首先应该在Linux主机上安装NFS服务器:

sudo apt-get install nfs-kernel-server

建立NFS服务目录/root/fgj/nfs/rootfs,将根文件系统的文件全部复制到该目录。打开

/etc/exports,配置如下:

/root/fgj/nfs*(rw,sync,no_root_squash,no_subtree_check)

重新启动NFS服务,让目录生效:

sudo/etc/init.d/rpcbind restart

sudo/etc/init.d/nfs-kernel-server restart

一般安装完NFS server配置后,下次重启主机会自动启动NFS服务。另外使用NFS时最好关闭主机的防火墙

例11.4 建立NFS根文件系统

(1)确保内核包含网络设备驱动程序。

(2)配置内核支持NFS文件系统和NFS块设备、NFS根文件系统。在【File systems】->【Network File Systems】中设置如图11-4所示:

978-7-111-56706-6-Chapter11-40.jpg

图11-4配置内核支持NFS

978-7-111-56706-6-Chapter11-41.jpg

图11-5配置内核支持NFS块设备

(3)修改内核启动参数:

setenv bootargs"root=/dev/nfs nfsroot=192.168.10.102:/root/fgj/nfs/rootfs ip=192.168.10.103:192.168.10.102:192.168.10.1:255.255.255.0:www:eth0:off console=ttySAC0,115200"

其中root=/dev/nfs,并非真的设备,而是告诉内核通过网络取得根文件系统。参数nfsroot告诉内核以哪一台计算机,哪个目录以及哪个网络文件系统选项作为根文件系统使用。参数的格式如下:

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

如果指令列上没有给定nfsroot参数,则将使用/tftpboot/%s预设值。其他选项如下:

<server-ip>--指定网络文件系统服务端的互联网地址(IP address)。如果没有给定此字段,则使用由nfsaddrs变量所决定的值。此参数的用途之一是允许使用不同计算机作为反向地址解析协议(RARP)及网络文件系统服务端,通常可以设为空白。

<root-dir>--服务端上要作为根挂入的目录名称。如果字串中有个%s标识符(token),此符记将代换为客户端互联网地址之ASCII表示法。

<nfs-options>--标准的网络文件系统选项。所有选项都以逗号分开。如果没有给定此选项字段则使用下列的预设值:

port=as given by server portmap daemon(www.xing528.com)

rsize=1024

wsize=1024

timeo=7

retrans=3

acregmin=3

acregmax=60

acdirmin=30

acdirmax=60

flags=hard,nointr,noposix,cto,ac

参数ip=的格式如下:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

它告诉内核如何配置设备的IP地址,如何建立IP路由表。<client-ip>是客户IP,<server-ip>是NFS服务器IP,<gw-ip>是网关IP,<netmask>是掩码,<hostname>是客户主机名。<device>是网络设备名。<autoconf>在单独作为ip的值时起作用(它之前没有任何":"号,如:"ip=off"或"ip=none"等),如果"ip=off"或"ip=none",表示不启用自动配置。<autoconf>有如下值:

978-7-111-56706-6-Chapter11-42.jpg

运行后发现eth0没有自动激活。观察到启动参数中有ip参数:

ip=192.168.10.103:192.168.10.102:192.168.10.1:255.255.255.0:www:eth0:off

查找内核中有如下语句:

__setup("ip=",ip_auto_config_setup);

__setup("nfsaddrs=",nfsaddrs_config_setup);

跟踪代码发现ip_auto_config_setup没有执行,说明需要在内核中设置IP自动配置协议支持。配置【Networkingsupport】->【Networkingoptions】,如图11-6所示。

978-7-111-56706-6-Chapter11-43.jpg

图11-6 选择内核级别的自动IP配置

配置完毕,根文件系统可以加载。运行结果如下:

978-7-111-56706-6-Chapter11-44.jpg

可见NFS文件系统已经加载到根目录下。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈