准备
- 主机平台:Ubuntu 16.04 LTS(x64)
- 目标平台:ARM40-A5D3
- 虚拟机:VMware® Workstation 12 Pro
- 默认VMware和Ubuntu已安装完毕,并可以上网。这里不提供安装教程
安装NFS Server
- 设置VMware 网络模式为NET
- 启动Ubuntu安装NFS Server
运行Terminal,安装nfs-kernel-server。nfs-common和portmap也会被自动安装。
$ sudo apt-get install nfs-kernel-server
安装NFS Server报错
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?解决方案:
$ sudo rm -rf /var/lib/dpkg/lock
$ sudo rm -rf /var/cache/apt/archives/lock
$ sudo apt-get update
$ sudo dpkg --configure -a
- 创建NFS共享目录
创建NFS共享目录,并修改权限。
$ sudo mkdir /home/nfsroot
$ sudo chmod 755 nfsroot -R
- 配置NFS
编辑exports文件,配置NFS。在文件的末尾添加如下图文本。
$ sudo vim /etc/exports
/home/nfsroot *(rw,sync,no_root_squash,no_subtree_check)
- 重启NFS服务
首先查看NFS服务的运行状态,然后重启下NFS服务。
$ sudo service nfs-server status
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor prese
Active: active (exited) since 二 2018-02-06 11:06:43 CST; 3s ago
Process: 2420 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCES
Process: 2417 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCE
Process: 2414 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 2434 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0
Process: 2432 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCES
Main PID: 2434 (code=exited, status=0/SUCCESS)
$ sudo /etc/init.d/rpcbind restart
[ ok ] Restarting rpcbind (via systemctl): rpcbind.service.
$ sudo /etc/init.d/nfs-kernel-server restart
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
- 测试NFS服务
NFS已经安装完毕,测试本地挂载是否成功,以及卸载操作。
$ cd /home/nfsroot/
$ sudo mkdir test
$ ls
>> test
$ sudo mount -t nfs localhost:/home/nfsroot /mnt
$ ls /mnt/
>> test
$ sudo umount /mnt
$ ls /mnt/
>>
Ubuntu和ARM40网络通信
- 配置VMware网络模式
首先要配置VMware的网络模式为“桥接模式”。
创建以太网连接
配置以太网的相关参数,如下图所示。
由于ARM40默认IP地址为192.168.6.5,所以Ubuntu的本地IP必须在192.168.6.0/24网段内。
配置结束保存,重启网络服务使其生效。
$ sudo service networking status
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor prese
Drop-In: /run/systemd/generator/networking.service.d
└─50-insserv.conf-$network.conf
Active: active (exited) since 二 2018-02-06 13:50:24 CST; 20s ago
Docs: man:interfaces(5)
Process: 3257 ExecStop=/sbin/ifdown -a –read-environment (code=exited, status
Process: 3305 ExecStart=/sbin/ifup -a –read-environment (code=exited, status=
Process: 3300 ExecStartPre=/bin/sh -c [ “$CONFIGURE_INTERFACES” != “no” ] && [
Main PID: 3305 (code=exited, status=0/SUCCESS)$ sudo service networking restart $ ifconfig -a
ens33 Link encap:Ethernet HWaddr 00:0c:29:6b:46:2b
inet addr:192.168.6.10 Bcast:192.168.6.10 Mask:255.255.255.255
inet6 addr: fe80::13c4:9bc6:ffa2:ac47/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1485 errors:0 dropped:1 overruns:0 frame:0
TX packets:495 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149980 (149.9 KB) TX bytes:55352 (55.3 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:966 errors:0 dropped:0 overruns:0 frame:0
TX packets:966 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:71243 (71.2 KB) TX bytes:71243 (71.2 KB)Ubuntu ping ARM40
Ubuntu和ARM40之间相互ping测试,以此验证网络的通路是否正常。
ARM40 IP地址为192.168.6.5,Ubuntu本地IP为192.168.6.10
关闭Ubuntu的防火墙,以防拦截,造成通信失败。
$ sudo ufw status
Status: active
$ sudo ufw disable
Firewall stopped and disabled on system startup
$ sudo ufw status
Status: inactive
成功关闭Ubuntu防火墙
如果没有安装ufw,执行下面的指令进行安装。
$ sudo apt-get install ufw
将Ubuntu和ARM40用网线连接起来,ARM40要连接到中间的网口,如下图箭头所示。
Ubuntu ping ARM40,如下图所示,通讯正常。
$ ping 192.168.6.5
ARM40 ping Ubuntu,如下图所示,通讯正常。
$ ping 192.168.6.10
如果Ubuntu和ARM40无法ping通,请检查ip地址设置是否正确,Ubuntu防火墙是否关闭,
PC主机无线网卡未被禁用也会影响相互ping。
ARM40挂载Ubuntu NFS共享目录
- 挂载NFS共享目录
将Ubuntu上的/home/nfsroot目录挂载到ARM40的/mnt目录下。查看/mnt目录,发现test目录,挂载成功。将调试的文件拷贝到/home/nfsroot目录下,ARM40通过访问/mnt目录,就可以远程调试了。
$ mount -t nfs -o nolock 192.168.6.10:/home/nfsroot /mnt
$ ls /mnt
test
至此,NFS共享目录服务,搭建完成。