添加NFS网络文件系统
- 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
- 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
- 参考资料:《嵌入式Linux应用开发手册》
- 开发环境:Linux 2.6.22.6 内核、arm-linux-gcc-3.4.5-glibc-2.3.6工具链
目录
一、前言
为了避免每次修改根文件系统都要重新烧录,所以引入NFS网络文件系统进行改进。
二、前期准备——开发版与电脑互ping
目的:开发板与电脑通过网线连接,设置开发版的ip地址
与电脑的ip地址
处于同一网段。
1、查看服务器的ip
在两者通过网线连接后,网络适配器会弹出下面红色的网卡驱动如果没有,需要检查电脑网卡是否被禁用,或者网卡口硬件、网线是否有问题
。
电脑命令行输入ipconfig
查看ip地址
:192.168.1.100
2、设置开发板的ip地址
进入根文件系统输入ifconfig eth0 192.168.1.1
,后输入ifconfig
查看是否修改成功。
3、互ping
输入ping 192.168.1.100
,此时的地址为服务器地址。
三、启动后手工挂接NFS(麻烦)
需要满足两个条件:
- 服务器“允许”目录被挂接
- 开发板去挂接
那么下面我们就来实现这两个条件。
1、(虚拟机)服务器“允许”目录被挂接
需要继续在虚拟机,完善我们的根文件系统。
- 在
/first_fs/etc
目录下新建exports
文件
执行sudo vi /etc/exports
输入/work/nfs_root/first_fs *(rw,sync,no_root_squash)
- 重启NFS服务
输入sudo /etc/init.d/nfs-kernel-server restart
- 实验是否成功
执行sudo mount -t nfs 192.168.1.2:/work/nfs_root/first_fs /mnt
这句话的作用是:把 first_fs 文件挂在到本机的/mnt 目录下,
注意:此时的IP地址为虚拟机的IP地址。
如下图,你没有错误信息就是可以挂载,即配置成功。
如果此时进入程序,出不来,可以按ctrl+C
跳出。
2、开发板去挂接
在开发版的根文件系统下操作。
- 在根目录下新建
/mnt
目录,执行mkdir /mnt
。 - 执行
mount -t nfs -o nolock 192.168.1.2:/work/nfs_root/first_fs /mnt
3、结果
如果此时,你在虚拟机上的/work/nfs_root/first_fs
目录下创建文件,在开发版的/mnt
目录下会立刻显现出来。
四、启动即使用NFS(方便)
实验发现,如果当开发版或者虚拟机关闭时,如果二者需要重新使用NFS,则
虚拟机需要执行sudo mount -t nfs 192.168.1.2:/work/nfs_root/first_fs /mnt
开发版根文件系统需要执行mount -t nfs -o nolock 192.168.1.2:/work/nfs_root/first_fs /mnt
很麻烦,所以可以修改开发板上的参数,使得开发版开机完毕后就可以直接使用NFS网络系统与虚拟机进行通信。
1、设置开发板的参数
完整指令如下:
set bootargs noiniritrd root=/dev/nfs nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf> console=ttySAC0
如果想看源码可以到linux-2.6.22.6\linux-2.6.22.6\Documentation\nfsroot.txt
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
参数说明如下:
[<server-ip>:]
:服务器ip192.168.1.2
<root-dir>
:服务器文件目录/work/nfs_root/first_fs
[,<nfs-options>]
:标准NFS选项,可省略
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
参数说明如下:
<client-ip>
:开发板ip192.168.1.1
<gw-ip>
:网关192.168.1.5
:<netmask>
:子网掩码255.255.255.0
<hostname>
:名字,可不填<device>
:开发板上的网卡名字eth0
<autoconf>
:自动配置选项设为off
最终指令为:
set bootargs noiniritrd root=/dev/nfs nfsroot=192.168.1.2://work/nfs_root/first_fs ip=192.168.1.1:192.168.1.2:192.168.1.5:255.255.255.0::eth0:off console=ttySAC0
后执行save
2、结果
重启开发板,尝试直接在虚拟机的/work/nfs_root/first_fs
目录下新建文件,观察开发板上的根文件系统/mnt
目录下是否出现该文件。
可以看到成功在启动时就可以直接使用NFS网络系统。