【记录】挂接NFS
来源:互联网 发布:货车软件有哪些 编辑:程序博客网 时间:2024/05/18 03:15
1. 目的
每次修改文件系统,或者驱动程序,重新烧写开发板,这样频繁的操作没有必要,我们希望在服务器中,修改文件系统或者驱动程序,调试,待一切都稳定后,再去烧写到开发板上验证。
解决方法就是网络文件系统,NFS。因为开发板可以通过网络与服务器连接,那么就可以让开发板启动服务器上的文件系统。这样,可以直接远程登录服务器,操作服务器中的文件系统,这些修改也会直接反应到开发板上。
2. 具备的条件
条件:
1. 服务器允许那个目录被挂接
2.开发板挂接服务器上的文件系统
服务器允许那个目录被挂接
服务器启动NFS服务。
①配置文件为/etc/exports,添加指定的文件(被挂接为NFS的目录/work/nfs_root/first_fs)
book@book-desktop:/work/nfs_root/first_fs$ sudo vi /etc/exports# /etc/exports: the access control list for filesystems which may be exported# to NFS clients. See exports(5).## Example for NFSv2 and NFSv3:# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)## Example for NFSv4:# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)#/work/nfs_root *(rw,sync,no_root_squash)/work/nfs_root/first_fs *(rw,sync,no_root_squash)
②重启NFS服务
book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart * Stopping NFS kernel daemon ...done. * Unexporting directories for NFS kernel daemon... ...done. * Exporting directories for NFS kernel daemon...exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.xexportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root/first_fs". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x ...done. * Starting NFS kernel daemon ...done.book@book-desktop:~$
测试一下,将文件系统挂载到/mnt目录下
book@book-desktop:~$ sudo mount -t nfs 192.168.10.175:/work/nfs_root/first_fs /mntmount.nfs: mount to NFS server '192.168.10.175:/work/nfs_root/first_fs' failed: RPC Error: Program not registeredbook@book-desktop:~$
参考错误2。
再次挂载,并查看/mnt目录下是否有对应的文件夹。
book@book-desktop:~$ sudo mount -t nfs 192.168.10.175:/work/nfs_root/first_fs /mntbook@book-desktop:~$ ls /mntbin dev etc lib linuxrc proc sbin sys usr
2.2.开发板挂接服务器上的文件系统
手动挂载
从Flash上启动根文件系统,再用命令挂接NFS
# mount -t nfs -o nolock 192.168.10.175:/work/nfs_root/first_fs /mnt# ls /mntbin etc linuxrc sbin usrdev lib proc sys
挂载完成。测试一下,在/first_fs目录下增加一个文件
book@book-desktop:/work/nfs_root/first_fs$ echo hello > test.txtbook@book-desktop:/work/nfs_root/first_fs$ lsbin dev etc lib linuxrc proc sbin sys test.txt usr
/mnt目录下出现增加的文件
book@book-desktop:/work/nfs_root/first_fs$ ls /mntbin dev etc lib linuxrc proc sbin sys test.txt usr
开发板上/mnt目录下也出现该文件
# ls /mntbin etc linuxrc sbin test.txtdev lib proc sys usr
直接从NFS上启动开发板
1.重启开发板,进入u-boot目录
OpenJTAG> print bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0bootdelay=2baudrate=115200ethaddr=08:00:3e:26:0a:5bipaddr=192.168.7.17serverip=192.168.7.11netmask=255.255.255.0stdin=serialstdout=serialstderr=serialmtdids=nand0=nandflash0mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)partition=nand0,0mtddevnum=0mtddevname=bootloaderEnvironment size: 443/131068 bytesOpenJTAG>
发现根目录的参数root=/dev/mtdblock3,修改启动参数,使其从NFS启动
参考内核文档nfsroot.txt有参数格式说明。
OpenJTAG> set bootargs noinitrd root=/dev/nfs nfsroot=192.168.10.175:/work/nfs_root/first_fs ip=192.168.10.11:192.168.10.175:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0OpenJTAG> saveSaving Environment to NAND...Erasing Nand...Writing to Nand... done
print查看一下参数信息
OpenJTAG> printbootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0bootdelay=2baudrate=115200ethaddr=08:00:3e:26:0a:5bipaddr=192.168.7.17serverip=192.168.7.11netmask=255.255.255.0stdin=serialstdout=serialstderr=serialmtdids=nand0=nandflash0mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)partition=nand0,0mtddevnum=0mtddevname=bootloaderbootargs=noinitrd root=/dev/nfs nfsroot=192.168.10.175:/work/nfs_root/first_fs ip=192.168.10.11:192.168.10.175:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
启动一下,查看信息。
IP-Config: Complete: device=eth0, addr=192.168.10.11, mask=255.255.255.0, gw=192.168.10.1, host=192.168.10.11, domain=, nis-domain=(none), bootserver=192.168.10.175, rootserver=192.168.10.175, rootpath=Looking up port of RPC 100003/2 on 192.168.10.175Looking up port of RPC 100005/1 on 192.168.10.175VFS: Mounted root (nfs filesystem).Freeing init memory: 140Kinit started: BusyBox v1.7.0 (2016-08-03 20:18:39 CST)starting pid 765, tty '': '/etc/init.d/rcS'Please press Enter to activate this console. starting pid 770, tty '/dev/console': '/bin/sh'# lsbin etc linuxrc sbin usrdev lib proc sys#
测试,服务器上编写hello,world程序,编译。
book@book-desktop:/work/nfs_root/first_fs$ vi hello.c #include <stdio.h>int main(){ printf("Hello, world!\n"); return 0;}~"hello.c" 7L, 74C written book@book-desktop:/work/nfs_root/first_fs$ arm-linux-gcc -o hello hello.cbook@book-desktop:/work/nfs_root/first_fs$ lsbin dev etc hello hello.c lib linuxrc proc sbin sys usr
开发板上执行hello程序。
# ./helloHello, world!#
错误
错误1:重启NFS失败
错误信息
book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.xexportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root/first_fs". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon Cannot register service: RPC: Unable to receive; errno = Connection refused [fail]
解决方法
启动portmap
book@book-desktop:~$ sudo service portmap startportmap start/running, process 2044
重启NFS,正常
book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.xexportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/work/nfs_root/first_fs". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon [ OK ]
错误2:挂载错误
错误信息:
book@book-desktop:~$ sudo mount -t nfs 192.168.10.175:/work/nfs_root/first_fs /mntmount.nfs: mount to NFS server '192.168.10.175:/work/nfs_root/first_fs' failed: RPC Error: Program not registered
解决方法
重启NFS服务,好像第一次重启没有生效。
book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart
错误3:开发板NFS挂载失败
错误信息
IP-Config: Complete: device=eth0, addr=192.168.10.11, mask=255.255.255.0, gw=192.168.10.1, host=192.168.10.11, domain=, nis-domain=(none), bootserver=192.168.10.175, rootserver=192.168.10.175, rootpath=Looking up port of RPC 100003/2 on 192.168.10.175rpcbind: server 192.168.10.175 not responding, timed outRoot-NFS: Unable to get nfsd port number from server, using defaultLooking up port of RPC 100005/1 on 192.168.10.175rpcbind: server 192.168.10.175 not responding, timed outRoot-NFS: Unable to get mountd port number from server, using defaultmount: server 192.168.10.175 not responding, timed outRoot-NFS: Server returned error -5 while mounting /work/nfs_root/first_fsVFS: Unable to mount root fs via NFS, trying floppy.VFS: Cannot open root device "nfs" or unknown-block(2,0)Please append a correct "root=" boot option; here are the available partitions:1f00 256 mtdblock0 (driver?)1f01 128 mtdblock1 (driver?)1f02 2048 mtdblock2 (driver?)1f03 259712 mtdblock3 (driver?)Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
原因,中间重启过服务器,导致NFS服务没有启动。
解决方法:重启NFS服务
book@book-desktop:~$ sudo service portmap startportmap start/running, process 2190book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart
总结这几个错误,原因都是因为挂载时,NFS服务没有启动导致,所以在NFS挂载时,一定先重启一下服务器的NFS服务。
book@book-desktop:~$ sudo service portmap startportmap start/running, process 2190book@book-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart
参考
NFS常见错误
nfs常见问题解决方法
- 【记录】挂接NFS
- nfs 记录
- NFS配置随手记录
- NFS 安装记录
- nfs安装记录
- 记录一次nfs共享磁盘
- OK6410 nfs挂载记录
- 【记录】NFS工具的使用
- 【记录】重启NFS错误
- uboot更改nfs root记录
- 关于nfs的配置与错误记录
- Redhat6.2 部署nfs服务记录
- 记录12--Nfs服务器的配置
- Android 5.x系统nfs挂载系统启动记录 nfs挂载文件记录
- NFS
- NFS
- nfs
- NFS
- 六款值得推荐的android(安卓)开源框架简介
- 开机启动服务chkconfig开机启动脚本/etc/rc.local
- 特效降级看来是帮不上忙了
- 从日语(繁体字)到日本文化
- 阿里前端笔试题看 CSS布局与定位---实现2列自适应布局的几种方法
- 【记录】挂接NFS
- 20160806 2^k进制数 高精递推
- CentOS7.2下PXE+kickstart自动化安装系统
- php 向数据库插入特殊字符
- IE、Firefox等浏览器不兼容原因及解决方案(1)
- POJ 1704:Georgia and Bob
- Android Launcher3 隐藏指定应用图标
- iOS-延迟执行和定时器详解
- 创业有套路