當前位置:首頁 » 編程軟體 » 編譯安裝nfs

編譯安裝nfs

發布時間: 2022-10-06 14:35:16

⑴ 嵌入式ARM linux操作系統中如何構建交叉開發環境

這個問題相當專業了,之前我去周立功那邊了解過的。

按照以下步驟進行安裝:

1) 安裝32位的兼容庫和libncurses5-dev庫

在安裝交叉編譯工具之前需要先安裝32位的兼容庫和libncurses5-dev庫,安裝32兼容庫需要從ubuntu的源庫中下載,所以需要在Linux主機系統聯網的條件下,通過終端使用如下命令安裝:

vmuser@Linux-host ~$sudo apt-get install ia32-libs

若Linux主機系統沒有安裝32位兼容庫,在使用交叉編譯工具的時候可能會出現錯誤:

-bash: ./arm-fsl-linux-gnueabi-gcc: 沒有那個文件或目錄

在終端中使用如下命令則可以安裝libncurses5-dev庫。

vmuser@Linux-host ~$sudo apt-get install libncurses5-dev

如果沒有安裝此庫,在使用make menucofig時出現如下所示的錯誤:

*** Unableto find the ncurses libraries or the

*** required headerfiles.

*** 'makemenuconfig' requires the ncurses libraries.

***

Installncurses (ncurses-devel) and try again.

***

make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1

make: *** [menuconfig] 錯誤 2

2) 安裝交叉編譯工具鏈

將交叉編譯工具「gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2」文件通過U盤的方式拷貝到Linux主機的「/tmp」目錄下,然後執行如下命令進行解壓安裝交叉編譯工具鏈:

vmuser@Linux-host ~$ cd /tmp

vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/

vmuser@Linux-host /tmp$ # 輸入vmuser用戶的密碼「vmuser」

執行完解壓命令後,交叉編譯工具鏈將被安裝到「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0」目錄下。交叉編譯器的具體目錄是「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin」,為了方便使用,還需將該路徑添加到PATH環境變數中,其方法為:修改「/etc/profile」文件,具體操作方法如下:

在終端中輸入如下指令

vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示輸入密碼,則輸入「vmuser」

用vi編輯器打開「/etc/profile」文件後,在文件末尾增加如下一行內容:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

文件修改並保存後,再在終端中輸入如下指令,更新環境變數,使設置生效。

vmuser@Linux-host ~$source /etc/profile

在終端輸入arm-fsl-linux-gnueabi-並按TAB鍵,如果能夠看到很多arm-fsl-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確,如下圖所示。

⑵ 如何將伺服器中文件夾或磁碟映射到多台個人電腦實現共享

映射網路驅動器時,每次重啟電腦需要映射,讓人不厭其煩,後來想到製作一個批處理文件,並設置開機啟動,這樣就解決了這一問題。
批處理文件命令:

Java代碼

  • @echooff

  • netuseZ:\IPshareFile"password"/user:"ftpname"


  • 開機啟動設置:


  • win+R跳出運行對話框;然後輸入regedit調出注冊表編輯器-依次展開HKEY_LOCAL_MACHINE-SOFTWARE-MICROSOFT-WINDOWS-CURRENTVERSION-RUN 在右面新建一個字元串值數據設置為該批處理文件的路徑!關閉就OK!!

  • 詳情如下:


  • 1. 利用批處理文件來自動映射



  • ① 首先製作自動映射網路驅動器批處理文件;



  • ② 利用Net Use命令,其基本格式如下:



  • NET USE



  • [devicename | *] [\computernamesharename[volume] [password | *]]



  • [/USER:[domainname]username]



  • [/USER:[dotted domain name]username]



  • [/USER:[username@dotted domain name]



  • [/SMARTCARD]



  • [/SAVECRED]



  • [[/DELETE] | [/PERSISTENT:{YES | NO}]]



  • 其中,devicename是映射的盤符,自己定義,比如Z:、Y:等,如果為*,則每次創建都選擇一個盤符;computername為所要映射的計算機名稱,用其IP地址也可以;sharename為共享的文件夾;password為連接所需密碼;username是連接該計算機的用戶名;SAVECRED是否保存用戶名和密碼;PERSISTENT是否永久連接,YES或NO,示例如下:



  • @echo off



  • net use z: \Serversharefile "" /user:"guest" /persistent:no



  • 即映射\Serversharefile到Z:盤,用戶名為Guest,密碼為空



  • ③ 製作步驟如下:



  • 首先定義一個txt文件,然後修改其擴展名為bat,比如NetMapping.bat;接著編輯這個批處理文件,寫入如下命令:



  • @echo off



  • net use z: \Serversharefile "" /user:"guest" /persistent:no



  • 根據需要修改要連接的計算機名稱,共享文件名,登陸用戶名和密碼,還有定義的盤符。



  • 再接著有幾種執行方式,最簡單的方式是將這個批處理文件放在「啟動」項里,用戶每次注銷或重啟計算機都會自動映射網路驅動器,但是如果Z:映射的已經存在,則不再創建。

⑶ 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。 英文資料參考:

⑷ 在ubuntu14.04下安裝最後重啟nfs時出現這樣的警告* Not starting: portmapper is not running

用下面的這個命令是可以編譯通過的,但有倆個警告

arm-linux-g++ -o opencv_test.o test.c -I /usr/local/include/opencv -L /usr/local/lib -lopencv_core -lopencv_highgui -lpthread -lrt

運行上面的命令之前,要將 opencv2 這個目錄復制到 opencv下,這倆個目錄都在 /usr/local/include/ 下。

g++ `pkg-config opencv --cflags --libs opencv` -o DisplayImage DisplayImage.cpp -I /usr/local/include/opencv -L /usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_gpu -lopencv_ts -lopencv_video -lopencv_objdetect -lopencv_ml -lpthread
我用這個OK的~

⑸ nfsv4 怎麼配置

官網提供的可執行文件是基於64位Linux的:zynq_linux.tar.gz. 對於32位的系統,需要自己編譯,解決方案如下: 1) 下載代碼:git clone git://git.xilinx.com/qemu-xarm.git 2) 配置工程: cd qemu-xarm ./configure --target-list=arm-softmmu...

⑹ 配置NFS伺服器的過程。

在講NFS SERVER的運作之前先來看一些與NFS SERVER有關的東西:
RPC(Remote Procere Call)
NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議勇士用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER.所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT 的對應。可以這么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
NFS需要啟動的DAEMONS
pc.nfsd:主要復雜登陸許可權檢測等。
rpc.mountd:負責NFS的檔案系統,當CLIENT端通過rpc.nfsd登陸SERVER後,對clinet存取server的文件進行一系列的管理
NFS SERVER在REDHAT LINUX平台下一共需要兩個套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd這兩個NFS DAEMONS的套件
portmap:NFS其實可以被看作是一個RPC SERVER PROGRAM,而要啟動一個RPC SERVER PROGRAM,都要做好PORT的對應工作,而且這樣的任務就是由PORTMAP來完成的。通俗的說PortMap就是用來做PORT的mapping的。
一:伺服器端的設定(以LINUX為例)
伺服器端的設定都是在/etc/exports這個文件中進行設定的,設定格式如下:
欲分享出去的目錄 主機名稱1或者IP1(參數1,參數2) 主機名稱2或者IP2(參數3,參數4)
上面這個格式表示,同一個目錄分享給兩個不同的主機,但提供給這兩台主機的許可權和參數是不同的,所以分別設定兩個主機得到的許可權。
可以設定的參數主要有以下這些:
rw:可讀寫的許可權;
ro:只讀的許可權;
no_root_squash:登入到NFS主機的用戶如果是ROOT用戶,他就擁有ROOT的許可權,此參數很不安全,建議不要使用。
root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那麼這個使用者的許可權將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個身份;
all_squash:不管登陸NFS主機的用戶是什麼都會被重新設定為nobody。
anonuid:將登入NFS主機的用戶都設定成指定的user id,此ID必須存在於/etc/passwd中。
anongid:同 anonuid ,但是變成 group ID 就是了!
sync:資料同步寫入存儲器中。
async:資料會先暫時存放在內存中,不會直接寫入硬碟。
insecure 允許從這台機器過來的非授權訪問
例如可以編輯/etc/exports為:
/tmp*(rw,no_root_squash)
/home/public192.168.0.*(rw) *(ro)
/home/test192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)
設定好後可以使用以下命令啟動NFS:
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默認啟動的)
/etc/rc.d/init.d/nfs start
exportfs命令:
如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs命令來使改動立刻生效,該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root @test root]# exportfs -rv
2、mount nfs目錄的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具體例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可選參數:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT會不斷的嘗試與SERVER的連接(在後台,不會給出任何提示信息,在LINUX下有的版本仍然會給出一些提示),直到MOUNT上。
SOFT:會在前台嘗試與SERVER的連接,是默認的連接方式。當收到錯誤信息後終止mount嘗試,並給出相關信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
對於到底是使用hard還是soft的問題,這主要取決於你訪問什麼信息有關。例如你是想通過NFS來運行X PROGRAM的話,你絕對不會希望由於一些意外的情況(如網路速度一下子變的很慢,插拔了一下網卡插頭等)而使系統輸出大量的錯誤信息,如果此時你用的是HARD方式的話,系統就會等待,直到能夠重新與NFS SERVER建立連接傳輸信息。另外如果是非關鍵數據的話也可以使用SOFT方式,如FTP數據等,這樣在遠程機器暫時連接不上或關閉時就不會掛起你的會話過程。
rsize和wsize:
文件傳輸尺寸設定:V3沒有限定傳輸尺寸,V2最多隻能設定為8k,可以使用-rsize and -wsize 來進行設定。這兩個參數的設定對於NFS的執行效能有較大的影響
bg:在執行mount時如果無法順利mount上時,系統會將mount的操作轉移到後台並繼續嘗試mount,直到mount成功為止。(通常在設定/etc/fstab文件時都應該使用bg,以避免可能的mount不上而影響啟動速度)
fg:和bg正好相反,是默認的參數
nfsvers=n:設定要使用的NFS版本,默認是使用2,這個選項的設定還要取決於server端是否支持NFS VER 3
mountport:設定mount的埠
port:根據server端export出的埠設定,例如如果server使用5555埠輸出NFS,那客戶端就需要使用這個參數進行同樣的設定
timeo=n:設置超時時間,當數據傳輸遇到問題時,會根據這個參數嘗試進行重新傳輸。默認值是7/10妙(0.7秒)。如果網路連接不是很穩定的話就要加大這個數值,並且推薦使用HARD MOUNT方式,同時最好也加上INTR參數,這樣你就可以終止任何掛起的文件訪問。
intr 允許通知中斷一個NFS調用。當伺服器沒有應答需要放棄的時候有用處。
udp:使用udp作為nfs的傳輸協議(NFS V2隻支持UDP)
tcp:使用tcp作為nfs的傳輸協議
namlen=n:設定遠程伺服器所允許的最長文件名。這個值的默認是255
acregmin=n:設定最小的在文件更新之前cache時間,默認是3
acregmax=n:設定最大的在文件更新之前cache時間,默認是60
acdirmin=n:設定最小的在目錄更新之前cache時間,默認是30
acdirmax=n:設定最大的在目錄更新之前cache時間,默認是60
actimeo=n:將acregmin、acregmax、acdirmin、acdirmax設定為同一個數值,默認是沒有啟用。
retry=n:設定當網路傳輸出現故障的時候,嘗試重新連接多少時間後不再嘗試。默認的數值是10000 minutes
noac:關閉cache機制。
同時使用多個參數的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
請注意,NFS客戶機和伺服器的選項並不一定完全相同,而且有的時候會有沖突。比如說伺服器以只讀的方式導出,客戶端卻以可寫的方式mount,雖然可以成功mount上,但嘗試寫入的時候就會發生錯誤。一般伺服器和客戶端配置沖突的時候,會以伺服器的配置為准。
4、/etc/fstab的設定方法
/etc/fstab的格式如下:
fs_specfs_filefs_typefs_optionsfs_mpfs_pass
fs_spec:該欄位定義希望載入的文件系統所在的設備或遠程文件系統,對於nfs這個參數一般設置為這樣:192.168.0.1:/NFS
fs_file:本地的掛載點
fs_type:對於NFS來說這個欄位只要設置成nfs就可以了
fs_options:掛載的參數,可以使用的參數可以參考上面的mount參數。
fs_mp-該選項被"mp"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不需要轉儲就設置該欄位為0
fs_pass-該欄位被fsck命令用來決定在啟動時需要被掃描的文件系統的順序,根文件系統"/"對應該欄位的值應該為1,其他文件系統應該為2。若該文件系統無需在啟動時掃描則設置該欄位為0 。
5、與NFS有關的一些命令介紹
nfsstat:
查看NFS的運行狀態,對於調整NFS的運行有很大幫助
rpcinfo:
查看rpc執行信息,可以用於檢測rpc運行情況的工具。
四、NFS調優
調優的步驟:
1、測量當前網路、伺服器和每個客戶端的執行效率。
2、分析收集來的數據並畫出圖表。查找出特殊情況,例如很高的磁碟和CPU佔用、已經高的磁碟使用時間
3、調整伺服器
4、重復第一到第三步直到達到你渴望的性能
與NFS性能有關的問題有很多,通常可以要考慮的有以下這些選擇:
WSIZE,RSIZE參數來優化NFS的執行效能
WSIZE、RSIZE對於NFS的效能有很大的影響。
wsize和rsize設定了SERVER和CLIENT之間往來數據塊的大小,這兩個參數的合理設定與很多方面有關,不僅是軟體方面也有硬體方面的因素會影響這兩個參數的設定(例如LINUX KERNEL、網卡,交換機等等)。
下面這個命令可以測試NFS的執行效能,讀和寫的效能可以分別測試,分別找到合適的參數。對於要測試分散的大量的數據的讀寫可以通過編寫腳本來進行測試。在每次測試的時候最好能重復的執行一次MOUNT和unmount。
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用於測試的WSIZE,RSIZE最好是1024的倍數,對於NFS V2來說8192是RSIZE和WSIZE的最大數值,如果使用的是NFS V3則可以嘗試的最大數值是32768。
如果設置的值比較大的時候,應該最好在CLIENT上進入mount上的目錄中,進行一些常規操作(LS,VI等等),看看有沒有錯誤信息出現。有可能出現的典型問題有LS的時候文件不能完整的列出或者是出現錯誤信息,不同的操作系統有不同的最佳數值,所以對於不同的操作系統都要進行測試。
設定最佳的NFSD的COPY數目。
linux中的NFSD的COPY數目是在/etc/rc.d/init.d/nfs這個啟動文件中設置的,默認是8個NFSD,對於這個參數的設置一般是要根據可能的CLIENT數目來進行設定的,和WSIZE、RSIZE一樣也是要通過測試來找到最近的數值。
UDP and TCP
可以手動進行設置,也可以自動進行選擇。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有著傳輸速度快,非連接傳輸的便捷特性,但是UDP在傳輸上沒有TCP來的穩定,當網路不穩定或者黑客入侵的時候很容易使NFS的 Performance 大幅降低甚至使網路癱瘓。所以對於不同情況的網路要有針對的選擇傳輸協議。nfs over tcp比較穩定, nfs over udp速度較快。在機器較少網路狀況較好的情況下使用UDP協議能帶來較好的性能,當機器較多,網路情況復雜時推薦使用TCP協議(V2隻支持UDP協議)。在區域網中使用UDP協議較好,因為區域網有比較穩定的網路保證,使用UDP可以帶來更好的性能,在廣域網中推薦使用TCP協議,TCP協議能讓NFS在復雜的網路環境中保持最好的傳輸穩定性。可以參考這篇文章: http: //www.hp.com.tw/ssn/unix/0212/unix021204.asp
版本的選擇
V3作為默認的選擇(RED HAT 8默認使用V2,SOLARIS 8以上默認使用V3),可以通過vers= mount option來進行選擇。
LINUX通過mount option的nfsvers=n進行選擇。
五、NFS故障解決
1、NFSD沒有啟動起來
首先要確認 NFS 輸出列表存在,否則 nfsd 不會啟動。可用 exportfs 命令來檢查,如果 exportfs 命令沒有結果返回或返回不正確,則需要檢查 /etc/exports 文件。
2、mountd 進程沒有啟動
mountd 進程是一個遠程過程調用 (RPC) ,其作用是對客戶端要求安裝(mount)文件系統的申請作出響應。mountd進程通過查找 /etc/xtab文件來獲知哪些文件系統可以被遠程客戶端使用。另外,通過mountd進程,用戶可以知道目前有哪些文件系統已被遠程文件系統裝配,並得知遠程客戶端的列表。查看mountd是否正常啟動起來可以使用命令rpcinfo進行查看,在正常情況下在輸出的列表中應該象這樣的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果沒有起來的話可以檢查是否安裝了PORTMAP組件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系統,重新編譯一下KERNEL就可以解決。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出現這個錯誤信息是由於SEVER端的PORTMAP沒有啟動。
5、mount clntudp_create: RPC: Program not registered
NFS沒有啟動起來,可以用showmout -e host命令來檢查NFS SERVER是否正常啟動起來。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
這個提示是當client要mount nfs server時可能出現的提示,意思是說本機沒有許可權去mount nfs server上的目錄。解決方法當然是去修改NFS SERVER咯。
7、被防火牆阻擋
這個原因很多人都忽視了,在有嚴格要求的網路環境中,我們一般會關閉linux上的所有埠,當需要使用哪個埠的時候才會去打開。而NFS默認是使用111埠,所以我們先要檢測是否打開了這個埠,另外也要檢查TCP_Wrappers的設定。
六、NFS安全
NFS的不安全性主要體現於以下4個方面:
1、新手對NFS的訪問控制機制難於做到得心應手,控制目標的精確性難以實現
2、NFS沒有真正的用戶驗證機制,而只有對RPC/Mount請求的過程驗證機制
3、較早的NFS可以使未授權用戶獲得有效的文件句柄
4、在RPC遠程調用中,一個SUID的程序就具有超級用戶許可權
加強NFS安全的方法:
1、合理的設定/etc/exports中共享出去的目錄,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT僅僅有最小的許可權,最好不要使用root_squash。
2、使用IPTABLE防火牆限制能夠連接到NFS SERVER的機器范圍
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、為了防止可能的Dos攻擊,需要合理設定NFSD 的COPY數目。
4、修改/etc/hosts.allow和/etc/hosts.deny達到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改變默認的NFS 埠
NFS默認使用的是111埠,但同時你也可以使用port參數來改變這個埠,這樣就可以在一定程度上增強安全性。
6、使用Kerberos V5作為登陸驗證系統

⑺ NFS伺服器一個目錄的寫入文件所有人變為root會怎麼樣

、NFS概述
NFS:Network file system,網路文件系統;
由sun公司1984年推出,用來在網路中的多台計算機間實現資源共享(包括象文件或cd-rom);
設計的目的是:實現在不同系統間交互使用,所以它的通信協議採用與主機和操作系統無關的技術;
NFS Server可以看作是File Server,它可以讓你的PC通過網路將遠端得NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使
用NFS的遠端文件就象是在使用本地文件一樣;
NFS協議從誕生到現在有多個版本:NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010);

如何查看nfs當前的版本:
rpm -qi portmap
rpm -qi nfs-utils
NFS伺服器的安裝:
可以由多種安裝方法:
----在安裝linux系統時選擇安裝nfs服務對應的組件;(多數linux發行版本默認安裝)
----安裝nfs的rpm套件包(手動安裝)
rpm -ivh rpm包
需要5個RPM包。
setup-*: 共享NFS目錄在/etc/exports中定義 (linux默認都安裝)
initscripts-*: 包括引導過程中裝載網路目錄的基本腳本 (linux默認都安裝)
nfs-utils-*: 包括基本的NFS命令與監控程序
portmap-*: 支持安全NFS RPC服務的連接
quota-*: 網路上共享的目錄配額,包括rpc.rquotad (這個包不是必須的)
----也可以去下載nfs的源代碼包,進行編譯安裝;

RPC(Remote Procere call)
NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這
些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER.所以只要用到NFS的地方都要啟動RPC
服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS
是一個文件系統,而RPC是負責負責信息的傳輸。

nfs在系統中的後台守護進程:
nfs

nfs服務需要啟動的其他進程:
rpc.nfsd:接收從遠程系統發來的NFS請求,並將這些請求轉化為本地文件系統請求;
rpc.mountd:執行被請求的文件系統的掛接和卸載操作;
rpc.portmapper:將遠程請求映射到正確的NFS守護程序;
rpc.statd:在遠程主機重啟時,提供加鎖服務;
rpc.quotaed:提供硬碟容量的管理能力,磁碟限額;
rpcinfo -p 可以查看所要的守護進程時候正常運行;
ps -ef | grep nfsd
ps -ef | grep mountd
ps -ef | grep protmap
現在我們來查看伺服器上有關NFS伺服器啟動了哪些埠:
# lsof -i|grep rpc
portmap 1931 daemon 3u IPv4 4289 UDP *:sunrpc
portmap 1931 daemon 4u IPv4 4290 TCP *:sunrpc (LISTEN)
rpc.statd 3206 statd 3u IPv4 7081 UDP *:1029
rpc.statd 3206 statd 6u IPv4 7072 UDP *:838
rpc.statd 3206 statd 7u IPv4 7085 TCP *:1031 (LISTEN)
rpc.mount 3483 root 6u IPv4 7934 UDP *:691
rpc.mount 3483 root 7u IPv4 7937 TCP *:694 (LISTEN)
NFS服務的主配置文件:
/etc/exports:
格式:
[共享的目錄] [主機名或IP(參數,參數)]
當將同一目錄共享給多個客戶機,但對每個客戶機提供的許可權不同時,可以這樣:
[共享的目錄] [主機名1或IP1(參數1,參數2)] [主機名2或IP2(參數3,參數4)]

第一列:欲共享出去的目錄,也就是想共享到網路中的文件系統;
第二列:可訪問主機
192.168.152.13 指定IP地址的主機
nfsclient.test.com 指定域名的主機
192.168.1.0/24 指定網段中的所有主機
*.test.com 指定域下的所有主機
* 所有主機
第三列:共享參數
下面是一些NFS共享的常用參數:
下面是一些NFS共享的常用參數:
ro 只讀訪問
rw 讀寫訪問
sync 所有數據在請求時寫入共享
async NFS在寫入數據前可以相應請求
secure NFS通過1024以下的安全TCP/IP埠發送
insecure NFS通過1024以上的埠發送
wdelay 如果多個用戶要寫入NFS目錄,則歸組寫入(默認)
no_wdelay 如果多個用戶要寫入NFS目錄,則立即寫入,當使用async時,無需此設置。
hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(默認)
no_subtree_check 和上面相對,不檢查父目錄許可權
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的所有請求映射成如anonymous用戶一樣的許可權(默認)
no_root_squas root用戶具有根目錄的完全管理訪問許可權
anonuid=xxx 指定NFS伺服器/etc/passwd文件中匿名用戶的UID
例如可以編輯/etc/exports為:
/tmp*(rw,no_root_squash)
/home/public192.168.0.*(rw) *(ro)
/home/test192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)
相關的命令:
1、exportfs命令:
如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs命令來使改動立刻生效,該命
令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount目錄
-v :在export的時候,將詳細的信息輸出到屏幕上。
具體例子:
# exportfs -au 卸載所有共享目錄
# exportfs -rv 重新共享所有目錄並輸出詳細信息
2、啟動NFS
# service portmap start
# service nfs start
檢查NFS的運行級別:
# chkconfig --list portmap
# chkconfig --list nfs
根據需要設置在相應的運行級別自動啟動NFS:
# chkconfig --level 235 portmap on
# chkconfig --level 235 nfs on
nfsstat:
查看NFS的運行狀態,對於調整NFS的運行有很大幫助
rpcinfo:
查看rpc執行信息,可以用於檢測rpc運行情況的工具
另外,還需要查看系統的iptables、/etc/hosts.allow、/etc/hosts.deny是否設置了正確的NFS訪問規則;
3、客戶端操作和配置
1、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
客戶端運行以下命令MOUNT NFS文件系統
#mount -t nfs 192.168.70.50:/opt /mnt/disk1
2、mount nfs目錄的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具體例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
mount nfs的其它可選參數:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT會不斷的嘗試與SERVER的連接(在後台,不會給出任何提示信息,在LINUX下有的版本仍然會給出一些提示),直到MOUNT
上。
SOFT:會在前台嘗試與SERVER的連接,是默認的連接方式。當收到錯誤信息後終止mount嘗試,並給出相關信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
rsize和wsize:
文件傳輸尺寸設定:wsize 來進行設定。這兩個參數的設定對於NFS的執行效能有較大的影響
bg:在執行mount時如果無法順利mount上時,系統會將mount的操作轉移到後台並繼續嘗試mount,直到mount成功為止。(通常在設
定/etc/fstab文件時都應該使用bg,以避免可能的mount不上而影響啟動速度)
fg:和bg正好相反,是默認的參數
nfsvers=n:設定要使用的NFS版本,默認是使用2,這個選項的設定還要取決於server端是否支持NFS VER 3
mountport:設定mount的埠
port:根據server端export出的埠設定,例如如果server使用5555埠輸出NFS,那客戶端就需要使用這個參數進行同樣的設定
timeo=n:設置超時時間,當數據傳輸遇到問題時,會根據這個參數嘗試進行重新傳輸。默認值是7/10妙(0.7秒)。如果網路連接不是很穩
定的話就要加大這個數值,並且推薦使用HARD MOUNT方式,同時最好也加上INTR參數,這樣你就可以終止任何掛起的文件訪問。
intr 允許通知中斷一個NFS調用。當伺服器沒有應答需要放棄的時候有用處。
udp:使用udp作為nfs的傳輸協議(NFS V2隻支持UDP)
tcp:使用tcp作為nfs的傳輸協議
namlen=n:設定遠程伺服器所允許的最長文件名。這個值的默認是255
acregmin=n:設定最小的在文件更新之前cache時間,默認是3
acregmax=n:設定最大的在文件更新之前cache時間,默認是60
acdirmin=n:設定最小的在目錄更新之前cache時間,默認是30
acdirmax=n:設定最大的在目錄更新之前cache時間,默認是60
actimeo=n:將acregmin、acregmax、acdirmin、acdirmax設定為同一個數值,默認是沒有啟用。
retry=n:設定當網路傳輸出現故障的時候,嘗試重新連接多少時間後不再嘗試。默認的數值是10000 minutes
noac:關閉cache機制。
同時使用多個參數的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
請注意,NFS客戶機和伺服器的選項並不一定完全相同,而且有的時候會有沖突。比如說伺服器以只讀的方式導出,客戶端卻以可寫的方式
mount,雖然可以成功mount上,但嘗試寫入的時候就會發生錯誤。一般伺服器和客戶端配置沖突的時候,會以伺服器的配置為准。
3、/etc/fstab的設定方法
/etc/fstab的格式如下:
fs_specfs_filefs_typefs_optionsfs_mpfs_pass
fs_spec:該欄位定義希望載入的文件系統所在的設備或遠程文件系統,對於nfs這個參數一般設置為這樣:192.168.0.1:/NFS
fs_file:本地的掛載點
fs_type:對於NFS來說這個欄位只要設置成nfs就可以了
fs_options:掛載的參數,可以使用的參數可以參考上面的mount參數。
fs_mp-該選項被"mp"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不需要轉儲就設置該欄位為0
fs_pass-該欄位被fsck命令用來決定在啟動時需要被掃描的文件系統的順序,根文件系統"/"對應該欄位的值應該為1,其他文件系統應
該為2。若該文件系統無需在啟動時掃描則設置該欄位為0 。
4、可能出現的問題
rpc超時問題
在伺服器上的hosts文件加上了客戶機的ip地址解析。
5、NFS安全
NFS的不安全性主要體現於以下4個方面:
1、新手對NFS的訪問控制機制難於做到得心應手,控制目標的精確性難以實現
2、NFS沒有真正的用戶驗證機制,而只有對RPC/Mount請求的過程驗證機制
3、較早的NFS可以使未授權用戶獲得有效的文件句柄
4、在RPC遠程調用中,一個SUID的程序就具有超級用戶許可權.
加強NFS安全的方法:
1、合理的設定/etc/exports中共享出去的目錄,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT僅僅有最小的許可權,最好不要
使用root_squash。
2、使用IPTABLE防火牆限制能夠連接到NFS SERVER的機器范圍
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
如果我們的NFS伺服器在防火牆後邊,則需要在防火強策略中加入如下策略:
iptables -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
3、為了防止可能的Dos攻擊,需要合理設定NFSD 的COPY數目。
4、使用 /etc/hosts.allow和/etc/hosts.deny 控制客戶端的訪問
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改變默認的NFS 埠
NFS默認使用的是111埠,但同時你也可以使用port參數來改變這個埠,這樣就可以在一定程度上增強安全性。
6、使用Kerberos V5作為登陸驗證系統

⑻ ubuntu跟ok6410板子網路不通怎麼辦

OK6410 與wmware中ubuntu10.04 通信

開發板:ok6410-A,linux3.0.1

宿主機:VMware Ubuntu 10.04

主要講講我配置時碰到的問題:

1、  一開始不知為什麼開發板和宿主機一直ping 不通,很是納悶,上網查了一下,說可能導致ping不通的原因有:

a)           開發板和宿主機不在同一網段

b)          防火牆沒關

c)           開啟了wifi

d)          不能使用dnw0.6,可以使用超級終端

 

於是將上述可能會導致ping不同的原因一一排除,還是ping不同。後無意之中查看了一樣網路連接,發現自己裝了兩個虛擬機,wmware、virtualbox,想想wifi有影響,那麼vmbox會不會也有影響呢,於是將virtualbox的網路禁用,再測試一下,ping通。

之後再換dnw0.6 測試一下,也OK。所以d)應該是不對的。

2、  關於宿主機安裝nfs

只裝了:apt-get install nfs-kernel-server,OK。

配置,打開:/etc/exports,我的原件是這樣的:

 

修改後:(一開我以為前面都要加「#」,這樣是不對的)

 

 
3、 開發板掛載

注意:這個是在ok6410上操作的。也就是在你超級終端或者dnw上運行,而超級終端(或者dnw)連接的是ok6410。

如果哪邊沒有配置好,輸入:

mount –t nfs –o nolock 121.248.202.163:/armnfs /mnt

會有提示掛載失敗,掛載成功則無提示。

 

掛載成功,直接進入/mnt,輸入ls,顯示:(什麼也沒有)

 

因為你還該文件夾下還沒有文件。

此時,進入宿主機的「/armnfs」文件夾下創建一個hello.c的文件:

 

(其中gedit是一個文件編輯器,也就是創建了一個hello.c的文件,然後保存)

 

再查看開發板的/mnt文件夾下的內容:

 

 
好了,有了,這樣就實現了將宿主機上的文件直接共享給了開發板,而不用在麻煩的使用SD等工具進行文件的傳輸了。

//*****************************************************************************

*以下是摘抄的,我的也主要是參考下面的來進行操作的,原文地址:

http://www.cnblogs.com/emouse/archive/2012/03/26/2418496.html

*****************************************************************************//

昨天拿到了OK6410的開發板,板子還是不錯的,就是資料有點亂,今天通過SD卡和DNW燒寫了光碟里給的3.0的Linux系統,晚上打算運行一個簡單的交叉編譯小程序。

我的開發環境:

開發板:OK6410,Linux 3.0.1

宿主機:VMware Ubuntu 11.10

先說一下NFS
      直接說我的個人理解,NFS就是網路文件系統,用NFS可以實現把宿主機的目錄掛載到開發板上,這樣用宿主機進行交叉編譯時就不用用USB或者SD卡將編譯好的文件拷貝到開發板上運行了,調試程序非常方便。常用的NFS有兩種,一種是做NFS根文件系統,及Linux的根文件系統就是網路上的NFS,也就是說開發板的啟動文件全部是通過NFS從宿主機讀取的,沒有網路系統都啟動不起來,目前網上找了很多都是這一種。這一種需要在U-boot中設置好同事還需要在內核中進行相應的配置。

      第二種是將宿主機的某個目錄映射到開發板的某個目錄,這個操作是在linux系統中配置的,比較之下先用第二種,本文就介紹這一種。

IP設置
由於nfs是基於網路的,因此ip設置是首要的。首先是主機,虛擬機運行的linux要把網路改為橋接的方式。如圖所示。

 

 
然後通過ifconfig查看地址。

開發板進入linux系統後連接網路通過ifconfig查看地址。如果不和主機在一網段內需要設置

ifconfig eth0 121.248.202.168 netmask 255.255.255.0 up

或者可以通過DHCP自動分配

超級終端裡面輸入:
udhcpc –i eth0 

 
命令,用來動態獲取IP 地址,-i 參數用來指定網卡名稱。
板子默認的配置適合連接路由使用,剛開始也納悶是不是必須使用路由,實際上只要是一個網段內的都可以。

設置好之後互相ping一下。

開發板ping宿主機,如圖所示。按ctrl+C結束,如圖所示,表示ping通。

 

 
主機ping開發板也一樣。

互相能夠ping通是前提,這一步搞不通一是查看網路,是不是防火牆啥的,為了確定不是虛擬機的問題,可以用虛擬機ping同一網段其他電腦試試,來排除虛擬機的問題。

如果這個不同就看看板子的內核和網卡設置。

宿主機nfs配置
     ubuntu中默認是沒有安裝nfs的,安裝非常簡單,聯網情況下運行

apt-get install nfs-kernel-server

如果安裝不成功在試試安裝nfs-common和portmap,我是裝這一個就可以了。

接下來需要編輯一下配置文件:

修改/etc/exports,在末尾添加:/armnfs  *(rw,sync,no_root_squash)可以使用vi修改,vi怎麼使用這里就不說了自己網路一下。

/armnfs 表示我需要設置的宿主機共享目錄

* 和前面中間有個空格,*表示任意ip均可連接,同理可以設置成某一個ip段,如192.168.0.*

rw 表示可讀可寫

no_root_squash允許客戶機享有主機root身份

保存後在根目錄下對應新建armnfs文件夾

mkdir armnfs

修改目錄許可權

chmod 777 -R /armnfs

好了,啟動nfs

service nfs-kernel-server start

開發板掛載
開發板上掛載nfs

mount –t nfs –o nolock 121.248.202.163:/armnfs /mnt

含義為宿主機IP:宿主機nfs目錄 開發板掛載目錄

掛載之後在宿主機上的目錄下新建個文件看看是否在開發板中能夠看到。

 

下面可以在宿主機上利用交叉編譯工具鏈編譯個小程序在板子上跑了。

⑼ 如何從NFS啟動Linux及原理

首先我們要明確我們所指的程序,是放在有目錄級結構的文件系統里,為了尋找到所需要操作系統來運行的程序,我們必須告訴它,文件在哪個文件系統。一 般來說,PC機的文件就存儲在硬碟上;對於Live CD而言,文件系統就藏在光碟上面。也就是說,只要操作系統能找到並正確地認識了文件系統,就可以執行裡面的程序了!
設置目標機器上的NFS啟動
看完了第一節,明白啟動的過程了嗎? 簡單地說,就是內核載入 ,內核找到一個文件系統 ,內 核執行文件系統里的一個程序 。無論是從NFS啟動,還是從硬碟啟動,都是上述過程。只是NFS啟動,其文件系統是放在網路上的。只要我 們告訴內核,具體放在什麼地方,在網路的另一端我們設置好共享,自然可以從NFS啟動。
讓內核識別NFS並可從NFS啟動
編譯內核
在內核源代碼目錄樹下,配置內核:
$make menuconfig
依次進入 File Systems -> Network File System中選擇 NFS client support 以及 Root file system on NFS。如果找不到Root file system on NFS 選項,要打開第一級菜單下的Networking support -> Networking options -> TCP/IP networking -> IP: kernel level autoconfiguration。如果NFS要使用DHCP,還得選上 IP: DHCP support。
保存配置並重新編譯即可。
配置內核參數
進入ARM開發板的設置 linux_cmd_line的地方(mini2440則為開機按 s,輸入linux_cmd_line,並帶著引號輸入參數),或者進入PC的GRUB,設置類似參數
root=/dev/nfs rw nfsroot=192.168.1.1:/linux ip=192.168.1.5:::255.255.255.0:linux::off
該配置為靜態IP設置。各參數意義如下:
root=/dev/nfs :指定根文件系統為 /dev/nfs,即NFS 。這與/dev這個目錄並沒有什麼關系,在此僅為一個名字。
rw :根文件系統掛載為可讀寫。還可以有 ro 即只讀的選項。
nfsroot=192.168.1.1:/linux :指明掛載哪一個NFS上的哪一個目錄。這里指的是掛載IP 為192.168.1.1的電腦上導出的/linux目錄。
ip=192.168.1.5:::255.255.255.0:linux::off :設置本機的IP。此舉是為了 連接剛才設置的IP。這里是一個靜態的配置,配置的格式為 ip=本機的IP地址::網關地址:網路掩碼:本機的主機名:網路介面名:off 。一般情況下網關、網路介面名都不需要設置。如果是DHCP獲取IP,那很簡單,直接 ip=dhcp 即可。
設置NFS伺服器
Ubuntu下看鏈接:http://blog.mcuol.com/User/xiaoxiaopig/article/37324_1.htm
NFS伺服器可以是任意操作系統,只要能提供NFS服務即可(WINDOWS可以使用 WSU —— Windows Services for Unix來實現,具體請參考接下來本站要發表的文章)。在這里以Fedora為例,希望別的發行版的用戶觸類旁通。
對於Fedora來說,有圖形界面的工具進行設置,在管理-》伺服器設置-》NFS中添加一個共享即可。
更通用的作法,就是修改 /etc/exports文件,之後再啟動NFS伺服器。
/etc/exports文件格式如下
導出的文件夾 導出的網段(對該導出的網段的選項)
所謂導出的網段就是只向哪個網段導出,保證安全性。一個例子為:
/linux 192.168.1.0/24(rw,sync,no_root_squash)
就是將 /linux 導出到網段為192.168.1.0,子網掩碼為255.255.255.0 (即24)的網路。其中可用的選項為(翻譯自man文檔):
secure和insecure : secure選項下,所有連接的埠均小於1024。默認打開。
rw和ro : Read/Write和Read Only
async和sync async將使用非同步數據存取,數據並非馬上寫入伺服器的。sync則相反。使用async需要注意伺服器不能隨意不正常地關閉,否則可能導致數據丟失。
no_wdelay :不使用延遲寫入。NFS伺服器會將寫入寫入請求緩沖起來,可以提高性能。如果async已經打開那麼該選項無效。
no_subtree_check :不進行子樹檢查(使用該選項易引起安全問題)
root_squash和no_root_squash、all_squash :root_squash選項使得客戶端以root許可權訪問 文件系統時,轉換為伺服器端的匿名用戶。這選項打開一定要設置好伺服器的許可權。
之後再重新啟動NFS服務。Fedora下使用 /etc/init.d/nfs restart
使用 exports查看導出的文件。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371