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 的。