nfslinux内核
㈠ linux实用工具-nfs
nfs服务器建立
本文介绍Linux环境下nfs服务的搭建过程。
nfs服务的作用是让其他机器可以通过网络把将本地的nfs目录挂载,然后通过访问挂载目录访问本地机器。在嵌入式开发中经常会将运行的开发板上的整个文件系统,做为本地的一个主目录,然后开发板启动的时候通过nfs服务,将本地的这个目录挂载上去,作为根文件系统。
这里分别介绍在Ubuntu和CenterOS上面nfs服务的配置过程。
编辑/etc/exports,在其中增加要共享的目录
如
其中 /home/quietheart/nfs,10.1.14.0/24代表共享给哪个子网,rw是可读写权限
然后
建立好了nfs之后,如果板子里面的内核支持网络和nfs,需要板子和你的机器各有一个网线和网口,两者在同一个网段,配置好了就能互访。也可以把机器和板子用一根网线链接(板子有独立的网口),这样不需要网关,就能使板子挂载机器的nfs系统了,但是机器也不能够上网了。
添加类似如下一行:
在配置NFS之前先查看“rpm -q nfs-utils portmap“两个软件包是否安装,默认都是安装的。
这里,'<your nfs directory>'是你本地的nfs目录,可以随意设置。具体含义参见"info exports".
这一步有时候可以不用做。
具体在:"系统"->"管理"->"安全级别和防火墙"
至此nfs服务搭建完毕.
这里说一下测试nfs是否好用的方法:
在其它机器上运行:
如果成功则完毕。
无。
通过以上可知,在Linux上面配置nfs服务的过程大致一样。
㈡ Linux系统主要做哪些用途
当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!
Linux操作系统被广泛的应用于企业服务器领域,目前市场上的网络设备都是使用linux内核操作系统,一些网络服务器也是使用linux操作系统下面的服务搭建实现的,目前操作系统这块也基本被linux占据,使用linux的iptables功能可以做代理服务器和防火墙;使用samba服务的功能可以做搭建和打印共享服务器。
使用linux下的apache+mysql+php搭建web、linux下的vsftp服务作为FTP文件传输服务器,使用linux下bind服务做域名解析服务器,使用linux下DHCP服务做网络中地址分配服务器,使用linux下open***服务实现×××服务器,使用linux下sendmai和qmail服务搭建邮件服务器,使用linux下的NFS和iSCSI搭建网络存储服务器等,linux在企业应用范围极广。 Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
在的网络设备一般都是linux操作系统,比如:软防火墙、软路由、软监控、云计算等,这些都是使用linux内核开发的。
Linux操作系统安全性和稳定性高,目前android系统、银行系统、企业WEB服务器、虚拟化、等都是使用linux操作系统。
Linux操作系统在市场上得到了广泛的应用,市场上80%的服务器用户在使用Linux操作系统,因此,学好Linux可以有很多就业选择,而且喜爱技术的人员来说,也是一种成就!
㈢ ARM linux内核添加了nfs server support 是否就可以用NFS服务
要安装nfs软件系统才可以~!nfs server support 只是表示arm linux支持nfs而已~!
㈣ 我的友善之臂micro2440开发板,烧写uboot和Linux内核后我想设置nfs网络根文件系统,但是一直有问题。
linux-2.6.35在fs2410开发板启动后,通过nfs挂载文件系统,但是rtc不能用,也会在挂载文件系统之前打印如下提示信息:
TCP cubic registered
NET: Registered protocol family 1
RPC: Registered udp transport mole.
RPC: Registered tcp transport mole.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
IP-Config: Complete:
device=eth0, addr=192.168.20.253, mask=255.255.255.0, gw=192.168.20.1,
host=thomas_fs2410, domain=, nis-domain=(none),
bootserver=192.168.20.192, rootserver=192.168.20.192, rootpath=
Looking up port of RPC 100003/2 on 192.168.20.192
Looking up port of RPC 100005/1 on 192.168.20.192
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 184K
解决方案:
1. 内核配置选项
--- Real Time Clock
[*] Set system time from RTC on startup and resume
(rtc0) RTC used to set the system time
[ ] RTC debug support
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs)
[*] /dev/rtcN (character devices)
[ ] RTC UIE emulation on dev interface
*** on-CPU RTC drivers ***
<*> Samsung S3C series SoC RTC
2. linux kernel 中 已经支持S3C2410的RTC,但是并没有添加到平台设备初始化数组中,所以系统启动时并不会初始化这一部分,需要修改文件mach-smdk.c
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc, //新增代码
};
3. 创建设备节点,在文件系统/dev目录下执行:
sudo mknod rtc c 10 135
4. 重新编译内核,查看启动信息
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
这里说明rtc驱动起来可以正常工作了
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
ALSA device list:
No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
s3c-rtc s3c2410-rtc: hctosys: invalid date/time
以上信息说明当前 RTC 时间invalid , RTC 初始时间为 Wed Dec 31 23:59:59 1969 ;
从内核函数 int rtc_valid_tm(struct rtc_time *tm) ,可以看出,当 year 小于 1970 时,认为是时间 invalid ,函数返回 -EINVAL ;
drivers/rtc/rtc-lib.c
/*
* Does the rtc_time represent a valid date/time?
*/
int rtc_valid_tm(struct rtc_time *tm)
{
if (tm->tm_year < 70
|| ((unsigned)tm->tm_mon) >= 12
|| tm->tm_mday < 1
|| tm->tm_mday > rtc_month_days(tm->tm_mon, tm->tm_year + 1900)
|| ((unsigned)tm->tm_hour) >= 24
|| ((unsigned)tm->tm_min) >= 60
|| ((unsigned)tm->tm_sec) >= 60)
return -EINVAL;
return 0;
}
EXPORT_SYMBOL(rtc_valid_tm);
下面来验证一下这个想法
# hwclock
Wed Dec 31 23:59:59 1969 0.000000 seconds
# date
Thu Jan 1 00:06:58 UTC 1970
系统时间是通过 date 来设置的, RTC 时间是通过 hwclock 来设置的。开机时系统时间首先通过 RTC 来获得,RTC没有设置时,系统时间也会使用Wed Dec 31 23:59:59 1969。
# hwclock --help
BusyBox v1.9.2 (2008-04-01 21:32:34 CST) multi-call binary
Usage: hwclock [-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc] [-f FILE]
Query and set a hardware clock (RTC)
Options:
-r Read hardware clock and print result
-s Set the system time from the hardware clock
-w Set the hardware clock to the system time
-u The hardware clock is kept in coordinated universal time
-l The hardware clock is kept in local time
-f FILE Use the specified clock (e.g. /dev/rtc2)
# hwclock -s
hwclock: settimeofday() failed: Invalid argument
# hwclock -w
s3c2410-rtc s3c2410-rtc: rtc only supports 100 years
hwclock: RTC_SET_TIME: Invalid argument
以上错误信息都是因为 year 设置不当引起的。没有设置 RTC , RTC 也不会启动计时。
下面首先设置正确的系统时间,然后将系统时间传递给 RTC 。
# date 040612282008.20
Sun Apr 6 12:28:20 UTC 2008
# hwclock -w
# hwclock
Sun Apr 6 12:29:01 2008 0.000000 seconds
# hwclock
Sun Apr 6 12:30:15 2008 0.000000 seconds
Ok , RTC 开始工作了!
为了使系统时间和 RTC 时间同步,可以在初始化文件中添加命令
Hwclock –s
使每次开机时读取 RTC 时间,并同步给系统时间。
在 etc/init.d/rcS 中添加
/bin/hwclock -s
时间设置的相关命令(转载)
1. 在虚拟终端中使用date 命令来查看和设置系统时间
查看系统时钟的操作:
# date
设置系统时钟的操作:
# date 091713272003.30
通用的设置格式:
# date 月日时分年. 秒
2. 使用hwclock 或clock 命令查看和设置硬件时钟
查看硬件时钟的操作:
# hwclock --show 或
# clock --show
2003年 09月 17日 星期三 13 时24 分11 秒 -0.482735 seconds
设置硬件时钟的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的设置格式:hwclock/clock --set --date=“ 月/ 日/ 年时:分:秒” 。
3. 同步系统时钟和硬件时钟
Linux 系统( 笔者使用的是Red Hat 8.0 ,其它系统没有做过实验) 默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话( 服务器通常很少重启) ,使用clock 或hwclock 命令来同步系统时钟和硬件时钟。
硬件时钟与系统时钟同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys 表示Hardware Clock to SYStem clock 。
系统时钟和硬件时钟同步:
# hwclock --systohc
或者
# clock --systohc
使用图形化系统设置工具设置时间
参考:http://blogold.chinaunix.net/u2/63560/showart_518707.html
㈤ NFS Client in Linux Kernel - cred
struct auth_cred 记录着uid,gid,是最基本的cred信息。
通过 current_cred() 得到当前进程的 struct auth_cred
用来描述RPC传输时候使用哪种方式鉴权, Linux内核提供了4个unix_auth,null_auth,generic_auth,gss_auth,其中unix_auth是默认使用的。
鉴权方式,mount时候参数sec=xx,默认是sys,对应RPC_AUTH_UNIX。还可以为krb5,krb5i,krb5p等。
Linux Kernel每次通过RPC发送NFS数据的时候,都会走一个状态机。当走到call_refresh状态时候,
每次发RPC命令时候,都会准备类似的message,其中包括了设置cred
不同的NFS请求,cred来自不同的地方。
exchange_id命令是来自
open命令
㈥ 如何配置linux内核具有nfs的功能
1、使用的技术
NFS
2、测试环境
NFS服务器:192.168.255.18
NFS客户端:192.168.255.11
操作系统:REDHAT4
3、NFS服务器配置
(1)配置 /etc/hosts.deny
禁止任何客户端能和你的NFS服务器进行NFS连接:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
(2)配置/etc/hosts.allow
允许那些你想要的客户端和你的NFS服务器建立连接。下列步骤将允许任何IP地址
以192.168.2开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。
### NFS DAEMONS
portmap: 192.168.255.
lockd: 192.168.255.
rquotad: 192.168.255.
mountd: 192.168.255.
statd: 192.168.255.
(3)重启portmap
运行 $ /etc/init.d/portmap restart 重启portmap daemon。
(4)配置/etc/exports
NFS挂载目录及权限由/etc/exports文件定义。比如要将我的/tmp目录让
192.168.255.*的IP共享, 则在该文件末尾添加下列语句:
/tmp 192.168.255.*(rw,sync,no_root_squash)
192.168.255.* 网段内的NFS客户端能够共享NFS服务器/tmp目录内容,且有读,写
权限,并且该用户进入/home/zp/share目录后的身份为root,最好加上sync,否则
$ sudo exportfs -r 时会给出警告, sync是NFS的默认选项。
(5)重启NFS服务
运行 $ /etc/init.d/nfs-kernel-server restart 重启nfs服务)
(6)NFS服务器查看共享是否成功
$ Showmount –e 192.168.255.18
/tmp 192.168.255.*
(6)NFS客户端启动NFS服务
service nfs start
(7)NFS客户端查看服务器共享目录
Showmount –e 192.168.255.18
(8)挂载NFS服务器共享目录
mount –t nfs -o tcp192.168.255.18:/tmp /tmp
4、错误排查
当/etc/exports设置的权限,不符合client端的来源时,则会出现以下错误信息:
mount: hostname:/dir failed, reason given by server: Permission denied
㈦ 2022-05-15--Linux挂载报错:mount.nfs: Protocol not supported
遇到这个问题首先网络,网络得到的答案无非两个:
1.内核不支持NFS,需要配置内核支持.
2.busy box的mount需要支持NFS.
其实还有一个原因是网络不稳定,或网络配置有问题,
我遇到的情况:
[root@software ~]# mount -t nfs -o ro 192.168.30.9:/vx/software /share/software
报错:mount.nfs: Protocol not supported
起正在的原因是:
UUID=02666766-9664-46e4-86d6-6666666666
DEVICE=p2p1
ONBOOT=no
IPADDR="192.168.1.6"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
ONBOOT=no配置错误。 改成yes完美解决。
㈧ Linux的VPS上如何使用NFS麻烦告诉我
解决方案 NFS有两种类型,一种是Kernel space NFS,一种是user space NFS。 Kernel Space的NFS依赖于内核中的CONFIG_NFSD=m参数。当编译内核的时候,需要将NFS支持编译进去。 通常,默认的Linux内核一般都支持Kernel Space,无须单独编译或者安装了。 只要安装操作系统上自带的NFS软件包,即可使用Kernel space方式的NFS。 出于安全方面的原因,vps内不能使用Kernel space NFS,只能使用user space NFS。 User Space的有点是无须任何内核级别的支持。当NFS出现问题的时候,只有NFS进程会卡出或者崩溃 但是内核以及整个Linux系统都不会出现问题。缺点是user-space NFS的速度稍稍慢于Kernel space NFS。 在vps内如果需要运行NFS,一个很好的选择是"The Linux User-Space NFS Server"。 这个程序由Olaf Kirc开发,很多Linux发行版都已经内置他的支持, 例如:Debian Sarge (NFS-user-server),OpenSUSE 10.0 (NFS-server) 其他的一些Linux发行版,需要单独下载rpm安装包并安装。 The Linux User-Space NFS Server提供了NFS v2协议的支持,还有一些其他组件如uNFS3提供了NFS v3的支持 也可以根据需求安装 注意:redhat as/es 系列Linux内置的rpm NFS-lib是Kernel space NFS,不是User Space NFS。 英文资料参考:
㈨ 急求解,在LINUX做完内核用NFS下载到板子启动后,显示到这里就不加载了。求解答。。。
没挂载根目录。
Linux 没有启动一个进程的话,就是 kernel panic 的。