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

編譯nfs

發布時間: 2024-05-03 11:30:40

㈠ 如何從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查看導出的文件。

㈡ 使用hane NFS和Ubuntu交叉編譯,成功了,但是在編譯安裝源碼時出現: 遺漏分隔符 。 停止等錯誤。

Windows下的日誌文件格式是NTFS,而linux下日誌文件格式大多是ext4,通過掛載NTFS格式在ext4下,然後在NTFS下編譯文件,一般並不推薦這樣做。

本來兩者處理文件的方式方法就不盡相同,平時通過ntfs-3g 掛載下文件還可以,具體編譯軟體的話中間會涉及到比較多次的NTFS和ext4文件的轉化問題。所以不建議掛載在NTFS格式下編譯軟體。
一般編譯的話有個比較好的習慣是源碼包到/tmp或者直接cd 到 /tmp下wget源碼包編譯。tmpfs(也就是/tmp)的一個主要的好處是它閃電般的速度。tmpfs 文件系統會完全駐留在內存中,讀寫幾乎可以是瞬間的。(重啟後文件消失,所以只能放臨時文件)

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

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

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:映射的已經存在,則不再創建。

㈣ 配置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作為登陸驗證系統

㈤ linux沒有辦法與windows實現文件的共享判斷

我們知道,在Windows系統之間,可以通過共享目錄的方式,讓遠程系統直接訪問。其實這里是Windows提供一種遠程文件系統機制,NAS協議的一種——CIFS協議。如果是Linux系統呢,同樣有另外一種NAS協議——NFS協議來實現遠程訪問。那麼這兩種NAS協議能否互通呢?答案是否定的。雖然二者不能互通,但是,在Linux系統上面已經有了CIFS協議的服務端和客戶端的實現,這樣,無論是Linux給Windows共享還是Windows給Linux共享都可以藉助這些已有的實現來做到了。
相反的,Windows上面有沒有NFS的客戶端或者服務端呢?也有,但是不常用,這里就不詳細介紹了。
這里主要圍繞著Linux上面使用CIFS協議來闡述如何實現兩個系統之間的跨文件系統,跨操作系統共享。按照上面的描述,有兩種方式來實現共享。Linux分別作為CIFS的服務端和客戶端。下面分別就這兩種方式來說明操作步驟和簡單的原理介紹:
一、Samba軟體實現共享Linux文件系統給Windows用戶
Samba軟體被譽為10大最有價值的開源軟體之第五位。其獲取方式非常容易,配置使用也非常簡單。下面以fedora系統為例,先看一下本地是否已經安裝好samba,如果/etc/init.d/smb 文件存在,則說明已經安裝好了samba軟體,否則使用如下命令安裝:
復制內容到剪貼板
yum install samba
安裝完成後,修改配置文件,打開:/etc/samba/smb.conf,在文件末尾加上如下配置:
復制內容到剪貼板
[root]
comment = root
path = /
creat mask = 64
writeable = yes
browseable = yes
valid users = root
這個配置的意思是,創建一個名為root的共享,將根文件目錄「/」共享給用戶。允許登錄的用戶名是root。
然後給samba系統添加root用戶,使用如下命令:
復制內容到剪貼板
smbpasswd -a root
按照提示設置root用戶的密碼。
重新啟動samba服務。
復制內容到剪貼板
service smb restart
檢查smb進程是否已經運行:
復制內容到剪貼板
root 1787 0.0 0.4 33068 4784 ? Ss 21:51 0:00 smbd
root 1788 0.0 0.2 33068 2580 ? S 21:51 0:00 \_ smbd
在需要訪問該Linux系統的Windows客戶機上面,打開Windows的資源管理器,在地址欄輸入:\\192.168.1.110
會發現,提示有一個共享root,雙擊訪問時,提示輸入用戶名和密碼,輸入此前配置的root用戶和密碼即可訪問。這里就是Samba軟體實現了CIFS的服務端,Windows資源管理作為客戶端訪問遠程的共享文件系統。為了更為方便的使用該文件系統,還可以將該共享映射成一個本地的盤符,讓Windows上面的各種工具像使用本地磁碟一樣使用該目錄。所有在Windows上面對該共享做的操作都會實時同步到Linux系統上面。
二、Linux訪問Windows的共享
上面的藉助於Samba的方式是大家常用的。還有一種,Windows系統天然就是一個CIFS的服務端和客戶端,既然Windows系統可以給Windows系統共享目錄,那麼Linux系統能否訪問這些共享呢?答案是肯定的,由於有強大的VFS支撐,Linux支持掛載和訪問各種文件系統。mount工具支持掛在CIFS甚至NTFS的文件系統。如果是Windows本機上面的Linux虛擬機,那麼可以直接通過虛擬機管理軟體,如Vmware直接共享本地的磁碟分區給Linux系統,Linux系統根據Windows的磁碟分區的文件系統類型掛載即可。這里不詳述該方案。
進入本段的正題,首先我們需要共享一個Windows的目錄:

下面以Windows XP為例,Windows 7未做驗證,應該類似。在共享之前,首先需要確保Windows系統的server服務處於啟動狀態,如下圖:

選擇需要共享的目錄,右鍵,屬性,選擇「共享」頁,如下圖:
配置共享
選擇在網路上共享這個文件夾,並指定共享名。根據需要選擇是否允許遠程用戶修改該文件夾。這樣這個文件夾就被共享給遠程訪問了。

在Linux系統下掛載該共享:
復制內容到剪貼板
[root@f2 ~]# mount -t cifs -o username="Test" //192.168.1.100/sourcecode /root/sourcecode
Password for Test@//192.168.1.100/sourcecode:
按照要求輸入指定用戶的密碼即可。
此時,Windows的共享sourcecode目錄就已經掛載到Linux系統上面了,Linux系統可以像訪問本地目錄一樣訪問該目錄了。
這種方法應該是更好的訪問方式,因為一般而言,我們操作的文件和工作空間都是在Windows上面的,只有少數時候,需要在Linux上面進行編譯,調試。但是用起來稍顯麻煩。注意,此前曾遇到過Windows系統與虛擬出來的Linux系統之間無法傳輸數據的問題,原因是Windows系統的防火牆未開啟。
通過以上兩種方法解決如何實現Windows與Linux文件系統互訪的問題,希望能幫到大家,謝謝閱讀。

㈥ 我的友善之臂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

㈦ 鎶婇┍鍔ㄧ▼搴忔斁鍦ㄦ枃浠剁郴緇熶腑錛屽湪闇瑕佺敤鐨勬椂鍊欏啀insmod鍒発ernel涓鍘伙紝榪欎釜鏂囦歡緋葷粺鏄鎸囨牴鏂囦歡緋葷粺鍚楋紵

椹卞姩紼嬪簭鏈変袱縐嶅姞杞芥柟寮忥紝涓縐嶆槸鍔ㄦ佸姞杞斤紝涓縐嶆槸闈欐佸姞杞姐
鍔ㄦ佸姞杞藉氨鏄鎸囨妸椹卞姩紼嬪簭鏀懼湪鏂囦歡緋葷粺鐨勪換浣曚綅緗錛屽伐紼嬪笀鑷宸插畾錛岀劧鍚庝嬌鐢ㄧ殑鏃跺欐妸瀹僫nsmod鍒扮郴緇熶腑鍘匯
闈欐佸姞杞藉氨鏄鎸囨妸椹卞姩紼嬪簭闈欐佺紪璇戝埌緋葷粺鍐呮牳涓鍘伙紝涓嶇$敤鐨勭潃鐢ㄤ笉鐫錛屽畠灝卞湪鍐呮牳涓瀛樺湪錛屾垚涓轟簡鍐呮牳鐨勪竴閮ㄥ垎銆
鍡錛岀劧鍚--
鏂囦歡緋葷粺鏈夊氱嶏紝rfs,nfs,榪欎簺甯告槸鏂囦歡緋葷粺鐨勫彨娉曪紝root fs 灝辮綆縐板仛浜唕fs錛宯etwork fs灝辮綆縐板仛浜唍fs錛屽畠浠閮戒笉鏄鏂囦歡緋葷粺鐨勬牸寮忥紝鏂囦歡緋葷粺鐨勬牸寮忎篃鏈夊緢澶氱嶏紝鏈塅AT16,FAT32,NTFS,YAFFS,CRAMFS,JFFS2 絳夌瓑錛岃繖閲屽垪鍑鴻繖鍑犵嶉兘鏄姣旇緝甯哥敤鐨勩
宓屽叆寮弆inux閲囩敤鐨勬枃浠剁郴緇熼氬父鏈塁RAMFS鍜孻AFFS鍜孞FFS2錛岄夌敤鍝涓縐嶆枃浠舵牸寮忥紝鍙栧喅浜庣郴緇熻捐℃椂鐨勭‖浠訛紝涓昏佹槸鍙栧喅浜庣敤鐨勪粈涔堝瓨鍌ㄥ櫒錛岄拡瀵逛笉鍚岀殑瀛樺偍鍣ㄩ夌敤涓嶅悓鐨勬枃浠舵牸寮忋

熱點內容
鎖機軟體反編譯 發布:2024-11-27 14:36:02 瀏覽:147
欣才php培訓中心 發布:2024-11-27 14:35:57 瀏覽:937
RDB演算法 發布:2024-11-27 14:26:57 瀏覽:136
悟空數學的原始密碼是多少 發布:2024-11-27 14:26:54 瀏覽:75
php資料庫查詢json 發布:2024-11-27 14:26:06 瀏覽:796
可編程式控制制器課後答案 發布:2024-11-27 14:22:16 瀏覽:737
60頁文件夾 發布:2024-11-27 13:52:59 瀏覽:884
vivo安卓手機看電影軟體哪個最好 發布:2024-11-27 13:52:23 瀏覽:963
新建的ad域伺服器可以修改ip 發布:2024-11-27 13:45:39 瀏覽:948
銀行存錢的密碼是多少 發布:2024-11-27 13:40:13 瀏覽:212