基于ARM6410-Ubuntu的NFS挂载方法及驱动模块加载方法
mount nfs 读写

Mount NFS 读写NFS(Network File System)是一种允许在不同计算机之间共享文件的协议。
通过使用NFS,我们可以将远程文件系统挂载到本地主机,实现对远程文件的读写操作。
本文将介绍如何在Linux系统上进行NFS挂载,并实现读写操作。
1. 安装NFS客户端软件首先,我们需要在本地主机上安装NFS客户端软件。
在大多数Linux发行版上,可以使用以下命令来安装NFS客户端软件:sudo apt-get install nfs-common2. 确定NFS服务器的IP地址和共享目录在进行NFS挂载之前,我们需要知道NFS服务器的IP地址和共享目录。
可以通过与NFS服务器的管理员进行沟通来获取这些信息。
3. 创建本地挂载点在本地主机上,我们需要创建一个目录作为NFS共享目录的挂载点。
可以使用以下命令来创建挂载点:sudo mkdir /mnt/nfs4. 进行NFS挂载现在,我们可以使用mount命令来进行NFS挂载。
假设NFS服务器的IP地址为192.168.1.100,共享目录为/shared,我们可以使用以下命令来进行挂载:sudo mount 192.168.1.100:/shared /mnt/nfs这将把NFS服务器上的/shared目录挂载到本地主机的/mnt/nfs目录下。
5. 验证挂载一旦挂载成功,我们可以使用df -h命令来验证挂载情况。
应该能够看到挂载点/mnt/nfs在输出中。
df -h6. 读写NFS共享目录一旦NFS共享目录成功挂载到本地主机,我们就可以像使用本地文件一样对其进行读写操作。
读取文件要读取NFS共享目录中的文件,可以使用cat命令或其他适当的文件阅读器。
例如,要读取文件example.txt,可以使用以下命令:cat /mnt/nfs/example.txt写入文件要向NFS共享目录中写入文件,可以使用echo命令或其他适当的文本编辑器。
Ubuntu安装NFS_超详细的教程_

概述NFS(Network File System)是一种分布式文件系统,允许网络中的安装不同操作系统的计算机间共享文件和外设,所以它的通讯协定设计与主机及作业系统无关. 它是由SUN公司于1984年推出,使得可以本地机一样的使用另一台联网计算机的文件和外设。
NFS在文件传送或信息传送过程中依赖于RPC协议。
NFS 的当前版本是V4(RFC3010)RPC, 远程过程调用(remote procedure call) 是能使客户端执行其他系统中程序的一种机制。
由于使用RPC 的程序不必了解支持通信的网络协议的情况,因此RPC 提高了程序的互操作性。
常用于分布式客户端/服务器模型,发出请求的程序是客户程序,而提供服务的程序是服务器。
1.安装NFSDebian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:$ sudo apt-get install nfs-kernel-server(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)这样,宿主机就相当于NFS Server。
同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。
如果是Debian/Ubuntu系统,则需要安装nfs-common。
$ sudo apt-get install nfs-commonnfs-common和nfs-kernel-server都依赖于portmap!2.配置NFS配置portmap方法1: 编辑/etc/default/portmap, 将-i 127.0.0.1 去掉.方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.配置/etc/hosts.deny(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:### NFS DAEMONSportmap:ALLlockd:ALLmountd:ALLrquotad:ALLstatd:ALL配置/etc/hosts.allow允许那些你想要的主机和你的NFS服务器建立连接。
linux挂载光盘的常用方法

linux挂载光盘的常用方法
《Linux挂载光盘的常用方法》
在Linux操作系统上,挂载光盘是一个常见且必要的操作,它允许我们访问并使用光盘上的内容。
下面列举了一些常用的方法来挂载光盘。
1. 使用mount命令挂载光盘:
在终端中输入以下命令来挂载光盘:
```
$ sudo mount /dev/cdrom /mnt
```
将光盘设备文件/dev/cdrom挂载到/mnt目录下。
如果/mnt目录不存在,可以使用其他目录,
如/media/cdrom。
2. 使用udisksctl命令挂载光盘:
在终端中输入以下命令来挂载光盘:
```
$ udisksctl mount -b /dev/cdrom
```
这将使用udisksctl工具将光盘挂载到默认的挂载点。
3. 使用gnome-disks工具挂载光盘:
Gnome Disks是一个图形化的磁盘管理工具,在大多数Linux发行版的Gnome桌面环境中都
可以找到。
打开Gnome Disks应用程序,选择光盘,然后点击右上角的"挂载"按钮来挂载光盘。
以上是一些常用的挂载光盘的方法,它们都可以让我们方便地使用光盘上的内容。
在使用完光
盘后,记得要及时卸载光盘,以免发生数据丢失或损坏。
通过运行以下命令来卸载光盘:
```
$ sudo umount /mnt
```
总之,挂载光盘是Linux中常见的操作之一。
通过了解和熟练使用这些常用的挂载光盘的方法,我们可以更有效地管理和使用光盘上的数据。
嵌入式Linux自动挂载U盘

在ARM嵌入式Linux下,要让U盘自动挂载,可以用到mdev方式实现(mdev是busybox 中的一个udev管理程序的一个精简版,它可以实现设备节点的自动创建和设备的自动挂载),下面是实现的步骤:1、确认Busybox做的根文件系统如下选项有选中:Linux System Utilities --->[*] mdev[*] Support /etc/mdev.conf[*] Support command execution at device addition/removal2、由于是利用到Linux内核的hotplug功能,要确定CONFIG_HOTPLUG=y。
3、修改根文件系统里面的etc/init.d/rcS文件,添加如下内容:mount -t tmpfs mdev /devmount -t sysfs sysfs /sysmkdir /dev/ptsmount -t devpts devpts /dev/pts# mdev for /devecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -secho "***************Starting mdev.........[OK]"4、添加对热插拔事件的相应,支持U盘自动挂载:修改根文件系统中的etc/mdev.conf文件,内容如下:sd[a-z][0-9] 0:0 666 @/etc/mdev/udisk_insertsd[a-z] 0:0 666 $/etc/mdev/udisk_remove注:@表示是在插入(创建设备结点)后执行后面的脚本,$表示在拔出(删除设备结点)前执行后面的脚本。
5、添加对应的脚本文件:根文件系统中的etc/mdev/udisk_insert文件内容:#!/bin/shif [ -d /sys/block/*/$MDEV ] ; thenmkdir -p /media/$MDEVmount /dev/$MDEV /media/$MDEV -t vfat -o utf8=1fi根文件系统中的etc/mdev/udisk_remove文件内容:#!/bin/shumount -l /media/$MDEVrm -rf /media/$MDEV至此,就可以实现自动的插拔挂载。
ARM开发板如何挂载NFS开发环境的方法步骤

ARM开发板如何挂载NFS开发环境的方法步骤(mini2440无盘启动)来源: ChinaUnix博客日期:2010.01.03 16:12(共有条评论) 我要评论这个部分还是比较不好弄的。
想象要是不能通过nfs挂载网盘的话,他提出这个方法也就没什么用了。
这样看的话,是比较完美了。
在你实验之前你可以现挂载一下(用busybox生成文件系统后不用编译就可以了)确认没问题在编译下载镜像文件。
还有在作qt文件应用程序的时候很大用这种方法,相信不用考虑编译和裁减的情况下就可以直接运行了。
首先介绍一下我的开发环境:PC环境是ubuntu9。
04,开发板为友善之臂的MINI2440主机IP:192.168.50.72 网关:192.168.50.1 子网掩码:255.255.255.0开发板IP:192.168.50.168 网关:192.168.50.1 子网掩码:255.255.255.0为了能和主机建立起连接我必须得把开发板IP改成和主机一个网段的 .这里首先要说明的是ubuntu的静态IP设置问题:默认安装完成后,右上角的网络配置上wired ..和eth0为灰色。
不能点选。
然后禁用networdmanager启动network以太网设置静态IP的时候,不管怎么设置,子网掩码都和网关一样,比如说:地址:192.168.0.22子网掩码: 192.168.0.1 //不管怎么输入255.255.255.0 ,都不行!网关:192.168.0.1 //这里改了255.255.255.0的话,上面就也成255.255.255.0了。
(auto ethernet是可以联上网的)。
所以就上GG找答案,找解决方法。
进入FC10,执行终端命令(也可以用VI修改)$ su -c ‗gedit /etc/sysconfig/networking/devices/ifcfg-eth0′直接修改文件中的子网掩码信息就可以代码为:# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI ExpressDEVICE=eth0HWADDR=00:16:e6:db:c2:96ONBOOT=yesBOOTPROTO=static //这个应该是―static‖,而不是―dhcp‖或―none‖;USERCTL=yesPEERDNS=yesIPV6INIT=noNM_CONTROLLED=yes//这个应该是―yes‖,如不修改,链接仍是disconnected;TYPE=EthernetNETMASK=255.255.255.0IPADDR=192.168.50.72GATEWAY=192.168.50.1然后重新激活下网卡就可以了.#service network restart设置完成后,右上角的网络配置上System eth0与auto ethernet就可以点选了. 需要说明的是因为我之前没有设置静态IP之前通过NFS 启动系统启动不了.连接主机和开发板我选择了串口线和网线连接起了主机和开发板连接好电源,串口线,网线,打开串口终端配置minicom(在FC10终端输入命令minicom -s)进入到minicom配置界面后选择:Serial port setup然后按照下面的设置下就OK了A – Serial Device : :/dev/ttyS0B – Lockfile Location : /var/lockC – Callin Program :D – Callout Program :E – Bps/Par/Bits : 115200 8N1F – Hardware Flow Control : NoG – Software Flow Control : No建立和配置NFS 服务(1)设置共享目录运行命令#gedit /etc/exports编辑nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)其中:/opt/FriendlyARM/mini2440/root_qtopia 表示nfs 共享目录,它可以作为开发板的根文件系统通过nfs 挂接; * 表示所有的客户机都可以挂接此目录rw 表示挂接此目录的客户机对该目录有读写的权力no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份(2)通过命令启动和停止nfs 服务在命令行下运行:#/etc/init.d/nfs restart这将启动nfs 服务,可以输入以下命令检验nfs 该服务是否启动。
UT-S3C6410 RAM11 Linux下LED灯驱动

UT-S3C6410 ARM11 Linux 下的LED驱动在李人东老师的要求下,让我把基于Linux下ARM的初级驱动开发流程在这里演示一遍,为了不枉费李人东老师的一片心血,和对ARM还没有入门苦苦探索的亲们,给你们开启一扇窗户,少走一些弯路,废话少说,现在开始:一、实验环境操作系统:ubuntu 9.0 或以上交叉编译环境:arm-Linux-gcc 4.2.2或以上,安装在/usr/local/arm/4.2.2/6410板子内核源码路径在:/s3c6410/linux-2.6.28-v1.0/硬件平台:UT-S3C6410开发板(其他类型的开发板也可以注意配置GPIO)注:交叉编译环境一定要装好,一般的开发板给的配套资料中都会有,安装过程也都有详细的过程,如果没有,亲,你只有自己解决了。
也可以联系我(476695721@),泪奔支持你们。
二、实验原理控制LED是最简单的一件事情,就像学C语言时候写的“hello world”程序一样,是一个入门的程序。
首先来了解一下相关的硬件知识:UT-S3C6410LED原理图UT-S3C6410LED外部引脚图从上面的原理图可以得知,LED与CPU引脚的连接方法如下,高电平点亮。
LED1 -GPM0LED2 -GPM1LED3 -GPM2LED4 -GPM3从数据手册可以找到相应的控制方法。
这里我们以LED1为例,介绍一下LED1的操作方法,其他的类似,请大家自行分析。
通过上面可以得知,需要先将GPM0设置为输出方式。
将寄存器GPMCON低四位配置成0001。
然后将GPMDAT寄存器的第0位置1灯亮,置LED0灯亮,开发板上有四个LED所以要对GPMDAT的低四位进行操作,就可以实现对灯的亮灭操作了。
三、实验步骤1、编写驱动程序driver_led.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <asm/uaccess.h> /* copy_to_user,copy_from_user */#include <linux/miscdevice.h>#include <linux/pci.h>#include <mach/map.h>#include <plat/regs-gpio.h>#include <plat/gpio-bank-m.h>#include <plat/gpio-cfg.h>#define LED_MAJOR 240int led_open (struct inode *inode,struct file *filp){unsigned tmp;tmp = readl(S3C64XX_GPMCON);tmp = (tmp & ~(0xffffU))|(0x1111U);writel(tmp, S3C64XX_GPMCON);printk("#########open GPMCON######\n");return 0;}ssize_t led_read (struct file *filp, char __user *buf, size_t count,loff_t *f_pos){printk("#########read######\n");return count;}ssize_t led_write (struct file *filp, const char __user *buf, size_t count,loff_t *f_pos) {char wbuf[10];unsigned tmp;copy_from_user(wbuf,buf,count);switch(wbuf[0]){case 0: //ontmp = readl(S3C64XX_GPMDAT);tmp |= (0xfU);writel(tmp, S3C64XX_GPMDAT);break;case 1: //offtmp = readl(S3C64XX_GPMDAT);tmp &= ~(0xfU);writel(tmp, S3C64XX_GPMDAT);break;default :break;}return count;}int led_release (struct inode *inode, struct file *filp){return 0;}struct file_operations led_fops ={.owner = THIS_MODULE,.open = led_open,.read = led_read,.write = led_write,.release = led_release,};int __init led_init (void){ int rc;printk ("Test led dev\n");rc = register_chrdev(LED_MAJOR,"led",&led_fops);if (rc <0){printk ("register %s char dev error\n","led");return -1;}printk ("ok!\n");return 0;}void __exit led_exit (void){unregister_chrdev(LED_MAJOR,"led");printk ("module exit\n");return ;}module_init(led_init);module_exit(led_exit);Makefile文件Makefileobj-m:=driver_led.oKDIR:=/s3c6410/urbetter-linux2.6.28-v1.0all:make -C $(KDIR) M=$(shell pwd) modules cp driver_led.ko /home/fusq/nfs_share clean:make -C $(KDIR) M=$(shell pwd) clean2、编写测试程序test.c#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main (void){int fd;char buf[10]={0,1};fd = open("/dev/my_led",O_RDWR);if (fd < 0){printf ("Open /dev/my_led file error\n");return -1;}while(1){write(fd,&buf[0],1);sleep(1);write(fd,&buf[1],1);sleep(1);}close (fd);return 0;}3、编译驱动程序与测试程序3.1编译驱动程序#make编译成驱动文件driver_led.ko并自动拷贝到了/home/fusq/nfs_share注:要注意Makefile要符合Linux下的文本格式,如果出现不执行,请在Linux下vi或vim 重新编辑一下。
Linux磁盘的手动挂载和自动挂载实现详解

Linux磁盘的⼿动挂载和⾃动挂载实现详解硬盘分区并格式化好以后,就能在Linux系统上使⽤了,使⽤之前需要挂载到对应的⽬录上⾯去。
⼿动挂载将/dev/sdc1挂载到 /mnt⽬录上⾯去,挂载完成后,使⽤df -h命令查看挂载信息1、⼿动挂载命令sudo mount /dev/sdc1 /mnt2、测试⼀下这个分区是否可以正常使⽤,我们往⾥⾯写⼊⼀个10g的⼤⽂件,然后再使⽤df -h命令查看硬盘的使⽤情况命令:sudo dd if=/dev/zero of=/mnt/testfile bs=100M count=100⾃动挂载⾃动挂载使⽤的是⽂件/etc/fstab,需要修改系统的⾃动挂载⽂件 /etc/fstab。
不过要⼩⼼这个⽂件会影响系统的启动,因为系统就是依赖这个⽂件决定启动时加载的⽂件系统的1、查看⾃动挂载⽂件[root@localhost mytest]# vi /etc/fstab2、添加挂载信息/dev/sdc1 /mnt xfs defaults 0 0格式说明:1)根⽬录/必须载⼊,⽽且要先于其他载⼊点被载⼊2)其他载⼊点必须为已建⽴的⽬录3)若进⾏卸载,必须先将⼯作⽬录移到载⼊点及其⼦⽬录之外3、保存退出,等重启服务器就可以⽣效了sudo reboot这个⽂件共有 6 个字段,第个字段的意思如下:第⼀个字段:分区设备⽂件名或 UUID(硬盘通⽤唯⼀识别码,可以理解为硬盘的 ID)。
第⼆个字段:挂载点。
再强调⼀下,挂载点应该是已经建⽴的空⽬录。
第三个字段:⽂件系统名称,CentOS 6.3 的默认⽂件系统应该是 ext4。
第四个字段:挂载参数,这个参数和 mount 命令的挂载参数⼀致。
第五个字段:指定分区是否被 dump 备份,0 代表不备份,1 代表备份,2 代表不定期备份。
第六个字段:指定分区是否被 fsck 检测,0 代表不检测,其他数字代表检测的优先级,1 的优先级⽐ 2 ⾼。
Linux通过nfs挂载根文件系统失败:VFS:Unabletomountrootfsvi。。。

Linux通过 nfs挂载根文件系统失败: VFS: Unabletomountrootfsvi。 。 。
在网上搜索各种资料均未解决。
最终发现原因是我的Ubuntu版本太新了,不兼容导致。
终于在大神的博客里找到解决方法:
查找资料发现从Ubuntu17.04开始,nfs默认只支持协议3和协议4,而kernel中默认支持协议2,所以才会出现挂载失败的情况,现有两种方 法可以解决该问题:
1. 设置Ubuntu18.04系统中的nfs服务支持协议2,修改nfs配置文件 /etc/default/nfs-kernel-server,在文件末尾加入一句:RPCNFSDOPTS="-nfs-version 2,3,4 --debug --syslog"。
2. 如果kernel版本较高支持nfs协议3的话,可以在Uboot传到Kernel的bootargs参数中加入'nfsvers=3',使kernel使用nfБайду номын сангаас协议3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NFS服务器的配置一、NFS服务器端的配置,即共享发布者(一)需启动的服务和需安装的软件1、NFS服务器必须启动两个daemons服务:rpc.nfsd和rpc.mountdrpc.nfsd:用来管理客户端PC是否可以登录。
类似于windows中的共享权限。
rpc.mountd:用来管理客户端pc能够使用的文件安全权限。
如windows中的共享安全权限。
RPC:因为NFS支持的功能很多,所以NFS的功能对应的端口才无法固定,而是采用小于1024的随机端口。
但客户端需要得知服务器的端口才能联机,此时就需要启用RPC服务。
RPC的功能就是指定每个NFS功能的端口号。
并传信息给客户端,让客户端可以连到正确的端口上。
服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC知道每个NFS 功能对应的端口。
RPC用111端口监听客户端的请求,并应答正确的端口。
启动NFS前,RPC就要先启动了,否则NFS会无法向RPC注册。
2、NFS 服务器需要安装nfs主程序,nfs-utils和rpc主程序portmap(二)exports服务器的方法:1、NFS文件存取权限因为NFS没有验证机制,当客户端用户访问NFS服务器的共享文件夹时会遇到的权限情况:(1)NFS服务器端用户列表中有与客户端用户名相同的用户名时,客户端可以直接存取共享文件夹。
例:客户端用户为khp,而nfs服务器用户列表(/etc/passwd)中也有khp这个用户名,则将拥有KHP权限。
(2)当访问NFS服务器的客户端用户UID与服务器端UID相同,但用户名却不相同时,客户端将拥有与服务器端UID 相同但不同用户的权限。
例:客户端为501UID,用户名为khp的帐号访问NFS服务器。
NFS服务器用户列表中(/etc/passwd)有uid为501 ,但用户名为pla的用户,所以客户端khp用户可以拥有NFS 服务器pla相同权限。
(3)如果客户端用户UID在NFS服务器端用户列表中不存在时,则以匿名用户的权限访问。
即nobody的用户。
(4)如果客户端用户为root用户,因为每台电脑都有root用户,如果不作控制,NFS服务器将会很危险,会被客户端全部控制。
所以默认root用户名的客户端访问NFS服务器,会变为匿名用户,拥有匿名用户权限。
也可不控制。
2、编辑/etc/exports文件,此文件不一定存在,如不存在就手工建立/etc /exports的格式:共享目录允许访问的电脑(选项)共享目录:即nfs服务器准备共享的目录允许访问的电脑:即允许访问这个共享的客户端有哪些。
可用电脑名、IP地址,还可以用通配符。
选项:(1) rw //读写。
客户端拥有读写的权限。
(2) ro //只读客户端只有读的权限。
(3) no_root_squash //root用户可访问,不变成匿名用户,即root用户可以以root用户的权限访问NFS服务器的共享资源。
(4) root_squash //root用户变成匿名用户(5) all_squash //所有用户都变成匿名用户(6) anonuid(7) anongid //所有匿名用户的UID或组ID都变为后面设定的UID或GID的权限。
因为所有在NFS服务器用户列表中没有用户名的都会匿名用户,这里设定这些匿名用户的用户权限。
(8) sync //同步到硬盘(9) async //数据存放到内存而不是直接写到硬盘例:/mnt/export (rw) //这个目录只允许这台电脑读写。
注意,后面(rw)前没有空格。
/mnt/export (rw) // /mnt/export这具目录只允许这台电脑读写,且允许所有其他用户读写权限。
(rw)前面有空格。
/mnt/export *(rw) //允许所有这个域里的电脑读写这个共享文件夹。
3、exportfs命令。
可以更改设置(命令目录/usr/sbin/exportfs)exportfs [-avu][-o option] [director]-a:把exprotfs里的所有路径都共享出去-u:把export出去的路径取消-v:在export时,共享显示到屏幕-o option :即一些选项-r :重新挂载exports里的设置例:exportfs -a ro /tmp/user //即把/tmp/user目录全部exports,但用户只能读取资料。
4、/var/lib/nfs/*tab //存放日志文件.etab记录NFS共享出来的目录完整权限设置。
.xtab记录曾经连接引NFS的客户机数据5、rpcinfo [-p] [ip |电脑名] //查看RPC服务的注册状态6、netstat -ultn 查看开放了哪些端口二、客户端的端设置作为NFS客户端需要先运行nfslock和portmap服务。
/etc/init.d/nsflock start/etc/init.d/portmap start并且有几种挂载方法(一)、命令方式mount 命令挂载1、showmount -e [nfs服务器电脑名| ip地址] //查看nfs服务器的可用共享目录2、mount nfs主机名:nfs共享目录挂载到本机的目录//把nfs服务器共享的目录挂载到本机。
主机名外还可用IP地址例:mount 192.168.9.1:/tmp/export /tmp/export //即把192.168.9.1nfs服务器共享的/tmp/export目录,挂载到本机的/tmp/export目录上。
mount -t nfs -o time=20 /home/khp /tmp/export //把远程nfs服务器的/home/khp 挂载到本机的/tmp/export目录下。
最长响应时间为20秒。
3、unmount 命令中断挂载(二)编辑/etc/fstab文件挂载/etc/fstab文件详解在文件系统管理中有说明1、格式:NFS服务器及共享目录挂载到本地的目录文件格式选项:/home/project /tmp/export ro //把这对口NFS服务器上的/home/project目录挂载到本机的/tmp/export目录上,且为只读。
格式为nfs2、打开文件夹。
此时输入mount /tmp/export 即可以打开挂载的文件(三)autofs来挂载nfs文件系统只在文件系统被访问时才被挂载。
1、在/etc/auto.master中定义挂载点2、再在auto.master中定义的/etc/auto.dirctory 中定义目录的总挂载点。
即在系统文件/etc/auto.master中先定义一个总的总挂载点。
然后依这个文件中定义的总挂载点文件,再设置详细挂载点。
例:vi /etc/auto.master 编辑这个文件:/misc /etc/auto.khp -timeout 60 //即/etc/auto.khp中的文件将挂载到/misc目录下再编辑:vi /etc/auto.khp 这个文件,定义挂载点。
myproject -rw,soft,intr :/home/project //即把NFS服务器:/home/project共享目录,挂载到本机的/misc/myproject目录下。
注意:/misc/myproject目录是动态的,不是实际存在的,只是在访问时这个目录才会产生。
退出就消息。
但/misc目录需存在。
当防火墙开着时,有时就无法访问,可用/etc/rc.d/init.d/iptables stop 停用防火墙,或用iptable命令开放NFS的端口。
学习驱动,首先当然要先搭好环境,当我们把编好的驱动编译到内核或者以模块的方式加载进内核后,我们还要写一个测试应用程序,这个程序是在ARM-LINUX下运行的,与其对应的是PC-LINUX,这就又引出了交叉编译的概念,所谓交叉编译,是指在一个环境下编译程序,而在另一个环境下运行,比如我们在PC-linux下编译一个helloworld程序(就是最简单的helloworld程序)但是我们在编译的时候用arm-linux_-gcc命令,这个命令就是指当前编译的程序就是在arm体系结构下运行的,如果你在PC-linux的环境下执行./helloworld命令则会出现”不能执行未知二进制文件”的错误。
但把它下载到板子上运行的话则正常运行。
当然,我们要把编译好在板子上运行的程序传到板子上的方法有很多,比如通过串口下载,USB下载,FTP上传等等,这些都是板子与PC机的通讯方式。
当然用的最多最方便的我个人认为就是NFS了,NFS即网络文件系统,我个人理解是这样的:如果我启动了nfs系统挂载成功那么我就可以把一些在linux上交叉编译好的程序放到这个linux挂载的目录下然后通过像SecureCRT这样的终端进入这个目录去执行程序,也就省去了把程序下到板子上的麻烦,因为当我们传输的文件过大的时候,用串口USB传送的这种方法就会消耗我们大量的宝贵时间。
这个linux挂载的目录其实就是一个共享目录,即ARM-LINUX把板子的资源都挂载到这个目录下,这样PC-LINUX可以通过这个目录来访问板子的资源,当然我们也可以往这个目录里传输文件程序,可以理解为板子里Linux系统的一个目录.构建NFS系统并非一件容易的事,之前我也是苦熬了两三天查阅了不少资料,也咨询了不少学长,网上挂载失败发帖的一大把,我想把我构建过程中以及后面编译加载驱动遇到和解决问题的方法和大家分享,我个人认为构建过程当中设置这个设置那个并不重要,重要的是为什么这样设置,这样设置的影响是什么,那样设置会怎么样。
因为一般买的开发板带的资料(比如我买的S3C6410)它的确讲解了如何搭建NFS环境,但是发现没几个挂载成功的?为什么因为它只是一步一步讲的些大众化的步骤,告诉你这一步设置这个,那一步设置那个,至于为什么都不谈。
当然,这不是教你学习,公司当然希望越简洁越好,但是,我们作为学习,当然就要刨根问底。
下面我就具体谈谈构建加载过程中我遇到的一些问题。
首先,我们要设置一个共享目录,这个目录就是可以被NFS挂载的那个目录,所以接下来就是要配置NFS配置文件了,即/etc/exports文件,如图在下面一行,我们加上这个新目录,我的目录就是/home/localhost/arm6410,后面分别表示可读写,资料同步写入(即当我们把程序或一些文档放进这个目录时,它也会相应的把这份资料写入ARM板子中,这很好理解,因为这个目录就是挂载的板子资源的目录), 最后一个参数表示登入 NFS 主机使用分享目录的使用者,如果是 root的话,那么对于这个分享的目录来说,他就具有 root 的权限。