热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxNFS

linuxNFS--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
嵌入式Linux系统基础
在了解Linux相关基础知识基础上,本章将介绍与嵌入式Linux系统开发有关的基础知识,主要包括三部分内容:1)构建嵌入式Linux操作系统开发环境,即了解嵌入式系统开发的相关细节和环境搭建:2)嵌入式系统开发基础和C语言程序设计;3)线程和进程的程序实现。是否熟练掌握嵌入式Linux系统的基础术语会直接影响到使用效果
2.1构建嵌入式Linux系统环境
嵌入式系统一般是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式开发板的资源往往比较有限,没有足够的资源来运行开发调试工具。所以,通常嵌入式系统的软件开发需要采用交叉编译的方式。
交叉编译是构建嵌入式Linux系统环境过程中的重要一步。交叉编译的环境建立在宿主机(host)上,而对应的开发板称为目标机(target)。为了使宿主机上开发的程序(应用程序和驱动程序)能够方便的下载到目标机上运行,一般还要还在宿主机上配置好网络,使其支持NFS或tftp等网络服务,从而实现两台机器之间的文件共享。
2.2交叉编译
所谓的交叉编译,就是利用运行在某台计算机(宿主机)上的编译器编译某个程序,生成在另一台机器(目标机)上运行的目标代码的过程。事实上,交叉编译是不得不产生的技术。因为目标机资源有限,无法运行编译和调试工具,因此需要宿主为之代劳。另外,在构建嵌入式系统的过程中也需要交叉编译目标机所需要的引导系统和操作系统内核。因此,在嵌入式系统开发时,往往由宿主机开发程序,而目标机作为最后的执行机。两者在开发时需要交替结合进行。
2.3 交叉编译器
在构建交叉编译环境的过程中,交叉编译器(cross compilation tool chain)无疑是最重要的组成部分。在嵌入式系统开发过程中,由嵌入式开发平台的资源有限:例如常见的ARM开发平台,静态存储空间仅有32MB,CPU主频也仅为203MHz。这样的资源不足以完成本机编译(native compilation),因此交叉编译器应运而生。
NFS 简介
在嵌入式系统开发过程中,由于可执行程序的编译过程和执行过程分别在宿主机和目标机上完成,因此实现宿主机和目标机之间的实时交互能够大幅度提高嵌入式系统开发的效率。由于目标机也带有操作系统,因此可以通过实现不同机器之间的网络共享来完成实时交互。NFS为为网络文件系统(Network File System)的缩写,NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准使用NFS服务,至少需要启动以下3个系统守护进程。

(1)rpc.nfsd
它是基本的NFS守护进程,主要功能是管理客户端是否能够登入服务器。
(2)rpc.mountd
它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利地通过rpc.nfsd登录NFS服务器后,在使用NFS服务器所提供的文件前,还必须通过文件使用权限的验证,rpc.mountd会读取NFS的配置文件/etc/exports来对比客户端的权限。
(3)portmap
portmap的主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过该端口向服务器请求服务。值得注意的是,虽然portmap只用于RPC,但它对NFS服务来说是必不可少的。portmap没有运行,NFS客户端就无法查找从NFS服务器中共享的目录,要检查NFS服务是否正常运行,可使用rpcinfo -p命令。如果NFS服务运行正常,就可在该命令执行结果中看到关于portmapper等守护进程的条目。
NFS安装主要软件包
portmap-4.0-54.i386.rpm//提供port端口软件包
nfs-untils-1.0.1-2.9.i386.rpm//nfs服务包
[root@localhost root]#rpm ?qa|grep portmap
//查看portmap软件包是否安装
[root@localhost root]#rpm ?qa|grep nfs
//查看nfs软件包是否安装
[root@localhost root]#mount /dev/cdrom /mnt/cdrom
//如果没有安装,则将Red Hat Linux 9.0的第一张镜像盘挂载到虚拟机上,两个主安装包都在第一张镜像盘
[root@localhost RPMS]#cd /mnt/cdrom/RedHat/RPMS/
//切换到安装包目录,
[root@localhost RPMS]#ls ?l portmap*
//显示以portmap开头安装包的详细信息
[root@localhost RPMS]#rpm ?ivh portmap-4.0-54.i386.rpm
//安装并用进度条显示安装过程
[root@localhost RPMS]#ls ?l nfs-utils*
//同理,显示nfs安装包
[root@localhost RPMS]#rpm ?ivh nfs-untils-1.0.1-2.9.i386.rpm
//安装nfs
[root@localhost RPMS]#ls ?l redhat-config-nfs-1.0.4-5.noarch.rpm
解压是一样道理的。

[root@localhost root]#service portmap status
//查看portmap端口的运行情况
[root@localhost root]#service nfs status
//查看nfs服务是否启动
[root@localhost root]#service portmap start
//启动portmap服务
[root@localhost root]#service nfs start
//启动nfs服务,如果重启服务用service nfs restart

[root@localhost root]#rpcinfo ?p
//显示nfs程序版本协议端口

DEVICE=eth0 //设备别名
BOOTPROTO=static //静态类型
IPADDR=192.168.1.10 //IP地址
NETMASK=255.255.255.0 //子网掩码
NETWORK=192.168.1.0 //网络地址
BORADCAST=192.168.1.255 //广播地址


在根目录下建立一个arm2410cl主目录,在arm2410cl建立1个子目录temp

基本:
目录:自己定义的
/arm2410cl *(或缺省) 所有主机
/arm2410cl/temp 192.168.1.0/24(或192.168.1.*) 指定子网中的所有主机
/arm2410cl/mail www.chen.com 指定域名的主机
/arm2410cl/samba *.chen.com 指定域中的所有主机
/arm2410cl/ftp 192.168.1.10指定IP地址的主机
基本权限:
ro: 只读
rw: 读写
两个基本权限是单选的,选择ro,rw就不能存在。同理,选择rw就不能选择ro
常规选项:
Insecure:允许来自高于1024的端口的连接
Insecure_locks:允许不安全的文件锁定
no_subtree_check:禁用子树查询
sync:按要求同步写操作
no_wdelay:立即强制同步写操作
用户访问:
no_root_squash:把远程根用户当作本地根用户
all_squash:把所有客户用户当作匿名用户
anOnuid=XXX:为匿名用户指定本地用户ID
anOngid=XXX:为匿名用户指定本地组群ID
维护NFS服务的输出目录列表
每当修改了/etc/exports文件的内容后,实际上不需要重新启动NFS服务,而直接使用命令exportfs就可以使设置立即生效。
exportfs命令就是用来维护NFS服务的输出目录列表的,命令的基本格式如下:

exports [选项]
选项有以下几个。
-a:输出在/etc/exports文件中所设置的所有目录。
-r:重新读取/etc/exports文件中的设置,并使设置立即生效,而不需重新启动NFS服务。
-u:停止输出某一目录。
-v:在输出目录时将目录显示到屏幕上。
1.重新输出共享目录
每当修改了/etc/exports文件的内容后,可使用下面的命令来重新输出共享目录
Exports ?-rv
2.停止输出所有共享目录
要停止输出当前主机中NFS服务器的所有共享目录,可使用下面的命令。
exportfs ?-auv
NFS服务的配置
NFS服务的配置方法相对比较简单,只需在NFS的主配置文件/etc/exports中进行设置,然后启动NFS服务即可。
2.使用showmount命令测试NFS服务器的输出目录状态
showmount命令的基本格式为:
showmount ?-e 192.168.1.10
showmount
showmount命令如下:
# showmount [-ae] hostname
参数说明如下。
(1)-a:以host:dir这样的格式来显示客户主机名和挂载点目录。
(2)-d:仅显示被客户挂载的目录名。
(3)-e:显示NFS服务器的输出清单。
(4)-h:显示帮助信息。
(5)-v:显示版本信息。
(6)--no-headers:禁止输出描述头部的信息。
当要扫描某一主机所提供的NFS共享的目录时,使用showmount -e IP(或主机名称hostname)即可。
观察激活的端口号

# netstat -utln
nfs所开启的端口是2049,其他端口是RPC Server其他程序(例如rpc.mountd、rpc.rquotad及rpc.nfsd.)随机产生的。即端口号不会是固定的,每次restart nfs都会得到不一样的端口号值得注意的是,在使用showmount -e命令查看NFS服务器上的输出目录时,如果出现如图4-14所示的故障,其原因可能是NFS服务器上没有启动portmap或nfs服务,也可能是被防火墙过滤掉了。解决办法是启动NFS服务器上的portmap或nfs服务,并重新设置NFS服务器上的防火墙(包括iptables和TCP_Wrappers)。若是iptables防火墙引起的故障,为了测试NFS服务器功能,可简单地用service iptables stop命令先关掉该防火墙。如果不想关掉防火墙也可以,RPC port端口:111 和NFS启动端口2049,允许对外开放
iptables -A INPUT -p tcp -m multiport --dport 111,2049 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 111,2049 -j ACCEPT

启动时自动连接NFS要想让系统在启动时自动挂载NFS服务器上的输出目录,应编辑文件/etc/fstab,在该文件中加入如下格式的语句
[root@localhost root]#vim /etc/fstab
NFS服务器名或IP地址:输出目录 本地挂载目录 nfs defaults 0 0
192.168.1.10:/arm2410cl /mnt/nfs nfs defaults 0 0

启动超级终端:修改IP和子网掩码
[root@EmbedSky /]#ifconfig eth0 192.168.1.6 netmask 255.255.255.0

[root@EmbeSky /]#ping ?c 4 192.168.1.10
//ping是连通

[root@EmbeSky /]#mount ?t nfs ?o nolock 192.168.1.10:/arm2410cl /mnt/nfs
挂载目录是客户端的/arm2410cl 挂载点是开发板上的/mnt/nfs

卸载NFS服务器
[root@EmbedSky]#umount /mnt/nfs
//不能在挂载目录卸载,否则卸载会显示系统繁忙无法卸载

如果不想再使用已挂载的NFS输出目录,可用umount命令来卸载该目录。例如,要卸载前面挂载的/mnt/nfs目录,可使用下面的命令。
Umount /mnt/nfs
故障排除思路
NFS出现了故障,可以从以下几个方面着手检查。
(1)NFS客户机和服务器的负荷是否太高,服务器和客户端之间的网络是否正常。
(2)/etc/exports文件的正确性。
(3)必要时重新启动NFS或portmap服务。
运行下列命令重新启动portmap和NFS:
service portmap restart
service nfs start
(4)检查客户端中的mount命令或/etc/fstab的语法是否正确。
(5)查看内核是否支持NFS和RPC服务。
Portmap关闭或防火强启屏蔽,或没有启动NFS服务

挂载时命令打错了的

挂载时没有那个目录的状态



原文出处:http://chenboqiang.blog.51cto.com/1068057/285346




































推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
author-avatar
梦傲天001_137
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有