【軟件】在Windows和Ubuntu上使用TFTP和NFS

在Windows和Ubuntu上使用TFTP和NFS

零、介紹

最近在玩Linux開發板,在開發的過程中發現需要用到tftp和nfs來幫助傳輸文件,故此記錄如何使用這兩種軟件。
TFTP(Trivial File Transfer Protocol) :是一種簡化的文件傳輸協議,設計用于在客戶端和服務器之間快速傳輸文件。輕量級、協議簡單、代碼量小,適合嵌入式系統、路由器等,基于 UDP 協議,數據明文傳輸,僅支持基本的文件上傳和下載。
NFS(Network File System):是一種分布式文件系統協議,允許不同計算機通過網絡共享文件,如同訪問本地磁盤。允許用戶直接讀寫遠程文件而無需顯式下載或上傳,通常使用 TCP協議,具備權限管理功能,可在 Linux、Unix、Windows 等系統間共享文件。

壹、Ubuntu上的TFTP

1. 安裝

sudo apt-get install tftpd-hpa tftp-hpa

其中,tftpd-hpa為服務器,tftp-hpa為客戶端。

(可選)要是可以,順便安裝網絡工具,方便檢查程序使用情況:

sudo apt install net-tools

2. TFTP服務器

2.1 配置TFTP服務器

編輯

sudo vi /etc/default/tftpd-hpa

文件路徑:/etc/default/tftpd-hpa

# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
# TFTP_DIRECTORY="/srv/tftp"
TFTP_DIRECTORY="/home/yu/share/tftp"
TFTP_ADDRESS="0.0.0.0:69"
# TFTP_OPTIONS="--secure"
TFTP_OPTIONS="-c -s -l"  #  -l監聽模式,-c允許創建文件,-s指定根目錄

其中,#開頭的為注釋,TFTP_DIRECTORY為TFTP服務器的共享目錄,我的已設置為/home/yu/share/tftp,此目錄建議設置開放的權限避免讀寫權限問題,TFTP_ADDRESS為TFTP服務器監聽的IP和端口,TFTP_OPTIONS為TFTP的配置參數,建議設置為"-c -s -l"

共享目錄建議配置為開放權限

sudo mkdir /home/yu/share/tftp		    # 創建目錄
sudo chmod 777 /home/yu/share/tftp      # 配置開放權限
2.2 重啟TFTP服務器

編輯配置文件之后需要重啟TFTP服務器以使配置生效

sudo systemctl restart tftpd-hpa
2.3 檢查TFTP服務器

要是報錯,很有可能是端口號被占用了,可以在配置文件中修改端口號,或者可以使用如下命令查看端口占用情況,此條命令也可以檢查TFTP服務器是否在運行

sudo netstat -a | grep tftp

正常的結果

yu@Yubuntu:~$ sudo netstat -a | grep tftp
udp        0      0 0.0.0.0:tftp            0.0.0.0:*
2.4 配置TFTP服務器開機啟動

要是想讓TFTP服務器開機自啟,可以使用如下命令

sudo systemctl enable tftpd-hpa

3. TFTP客戶端

使用TFTP客戶端連接TFTP服務器進行文件傳輸

3.1 試驗環境

建議在一個有文件的目錄下執行此試驗 ~
我的目錄

yu@Yubuntu:~/test$ ls -l
總計 4
-rw-rw-r-- 1 yu yu 11  326 12:02 1.txt
3.2 使用TFPT連接到服務器

服務器在本機,故IP為127.0.0.1

tftp 127.0.0.1

運行結果

yu@Yubuntu:~$ tftp 127.0.0.1
tftp>
3.2 使用TFPT上傳文件

命令

put 文件名

舉例

yu@Yubuntu:~/test$ tftp 127.0.0.1
tftp> put 1.txt
tftp>

查看服務器上的共享目錄

yu@Yubuntu:~/share/tftp$ ls -l
總計 4
-rw-rw-rw- 1 tftp tftp 11  326 15:36 1.txt

上傳成功

3.3 使用TFPT下載文件

我們在TFTP服務器上的共享目錄中創建一個文件

yu@Yubuntu:~/share/tftp$ vi 2.txt
yu@Yubuntu:~/share/tftp$ cat 2.txt
Hello Yumizie
yu@Yubuntu:~/share/tftp$

從服務器上下載文件
命令

get 文件名

舉例

yu@Yubuntu:~/test$ tftp 127.0.0.1
tftp> get 2.txt
tftp> q
yu@Yubuntu:~/test$ cat 2.txt
Hello Yumizie
yu@Yubuntu:~/test$

成功,使用q命令退出TFTP客戶端

貳、Ubuntu上的NFS

1. 安裝

sudo apt-get install nfs-kernel-server

2. NFS服務器

2.1 配置NFS服務器

NFS 的配置文件是/etc/exports,每一行定義一個共享目錄及其訪問權限。
編輯:

sudo vi /etc/exports

在末尾追加如下配置行:

/home/yu/share/nfs *(rw,sync,no_subtree_check,no_root_squash)

其中:
/home/yu/share/nfs為共享目錄位置,可以根據自己的需要進行更改;
*表示允許所有 IP/主機名 訪問;
rw表示允許客戶端對共享目錄進行 讀寫操作(只讀ro);
sync表示要求所有寫入操作同步到磁盤,確保數據一致性,但會降低性能(異步模式使用async,速度更快但存在數據丟失風險);
no_subtree_check表示禁用子樹檢查,子樹檢查會驗證共享目錄的父目錄是否存在,若父目錄被刪除,子目錄訪問會被拒絕,禁用后可提升性能(需要父目錄穩定);
no_root_squash表示不禁用root權限映射,一般NFS會把客戶端的root用戶映射為服務器的nobody用戶,來增強安全性,此設置允許客戶端的root用戶以真實root 權限訪問共享目錄,可能有安全風險。

創建共享目錄并分配權限

sudo mkdir -p /home/yu/share/nfs        # 創建目錄
sudo chmod -R 777 /home/yu/share/nfs    # 分配權限
2.2 重啟NFS服務器

重啟NFS服務器,以使配置生效

sudo systemctl restart nfs-kernel-server

-> 以后若是遇到問題,重啟NFS服務能解決大部分問題

2.3 檢查NFS服務器

可以使用如下命令查看端口占用情況,檢查NFS是否在運行

netstat -a | grep nfs

或者使用服務管理器檢查

systemctl status nfs-server

顯示active (exited)即可

2.4 設置開機自動啟動NFS服務器

rpcbind負責將 RPC(遠程過程調用)程序號映射到網絡端口,是 NFS 服務的基礎,故我們需要讓它跟NFS服務同時啟動。

sudo systemctl start rpcbind        # 啟動rpcbind服務
sudo systemctl enable rpcbind       # 設置rpcbind服務開機自啟
sudo systemctl start nfs-server     # 啟動NFS服務器
sudo systemctl enable nfs-server    # 設置NFS服務器開機自啟

檢查設置狀態

sudo systemctl is-enabled rpcbind       # 打印enabled
sudo systemctl is-enabled nfs-server    # 打印enabled
2.5 NFS服務器的其他說明

Ubuntu 17.10 之后的版本,NFS 服務默認僅支持協議 3協議 4。,若要使用協議 2,需要在/etc/default/nfs-kernel-server文件末尾加一句如下內容:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

然后重啟NFS服務器即可。

3. NFS客戶端

3.1 試驗環境

在使用客戶端之前,為了方便測試,我們先在NFS服務器共享目錄中添加一點東西

yu@Yubuntu:~/share/nfs$ vi 1.txt
yu@Yubuntu:~/share/nfs$ cat 1.txt
Hello NFS
yu@Yubuntu:~/share/nfs$
3.2 列出NFS服務器

可以列出服務器上共享的目錄:

showmount -e <服務器IP地址>

示例:

yu@Yubuntu:~$ showmount -e 127.0.0.1
Export list for 127.0.0.1:
/home/yu/share/nfs *
yu@Yubuntu:~$
3.3 掛載NFS服務器

使用如下命令掛載NFS服務器的工作目錄到/mnt(/mnt 一般是用來做臨時掛載的目錄)

sudo mount -t nfs 127.0.0.1:/home/yu/share/nfs /mnt

其中
mount 為Linux系統中用于掛載文件系統的核心命令。
-t nfs表示指定掛載的文件系統類型為NFS。
127.0.0.1:/home/yu/share/nfs為NFS服務器的地址和要共享的目錄路徑。
/mnt為本地掛載點,掛載后遠程文件系統會在此路徑下被共享。

3.4 檢查掛載情況

檢查目錄中的文件是否與NFS服務器工作目錄中的一致

yu@Yubuntu:~$ ls /mnt/
1.txt
yu@Yubuntu:~$ cat /mnt/1.txt
Hello NFS
yu@Yubuntu:~$

說明掛載成功!

3.5 取消掛載
sudo umount /mnt

叁、Windows上的TFTP

1. 軟件的下載和安裝

軟件:tftpd64
網站地址:https://pjo2.github.io/tftpd64/

1.1 下載

下載地址:https://bitbucket.org/phjounin/tftpd64/downloads/
點擊tftpd64.464.zip即可開始下載
下載

1.2 解壓運行

解壓得到的文件,運行tftpd64.exe
tftpd64主界面

2. 軟件的使用

在主界面中,Current Directory 為當前的工作目錄,文件的上傳、下載和共享都在這個目錄中,Server interfaces為TFTP服務器監聽的IP,要共享給哪個設備即選擇與共享設備所在網段一致的IP。
軟件打開即啟動了TFTP服務器,我們可以在Ubuntu上試一試。

2.1 試驗環境準備

在我的當前的工作目錄D:\y17mm\Desktop\Ubuntu\tftpd中創建一個文本文件,寫入內容:

D:\y17mm\Desktop\Ubuntu\tftpd>tree /f
卷 井中月 的文件夾 PATH 列表
卷序列號為 FE8F-1AB3
D:.tftpd32.initftpd64.exeTFTPWindows.txt沒有子文件夾D:\y17mm\Desktop\Ubuntu\tftpd>type TFTPWindows.txt
Hello
Windows
2.2 作為TFTP服務器使用

打開tftpd64主界面后即開啟了TFTP服務器,我們到Ubuntu中使用TFTP客戶端上傳和下載文件:

2.2.1 Ubuntu客戶端
yu@Yubuntu:~/test$ cat 1.txt
Hello TFTP
yu@Yubuntu:~/test$ tftp 192.168.146.1
tftp> put 1.txt
tftp> get TFTPWindows.txt
tftp> q
yu@Yubuntu:~/test$ cat TFTPWindows.txt
Hello
Windowsyu@Yubuntu:~/test$

上傳下載都沒問題的。

2.2.2 Windows服務器

查看上傳的文件
服務器這邊已收到來自客戶端的文件,而且也是可以正常查看上傳到服務器的文件的。

2.3 作為TFTP客戶端使用

開啟Ubuntu上的TFTP服務器,目前服務器上只有兩個文件:

yu@Yubuntu:~/share/tftp$ ls
1.txt  2.txt
yu@Yubuntu:~/share/tftp$ cat 2.txt
Hello Yumizie
yu@Yubuntu:~/share/tftp$ sudo systemctl restart tftpd-hpa
[sudo] yu 的密碼:
yu@Yubuntu:~/share/tftp$ sudo netstat -a | grep tftp
udp        0      0 0.0.0.0:tftp            0.0.0.0:*
yu@Yubuntu:~/share/tftp$
2.3.1 從Ubuntu的TFTP服務器上下載文件

點擊“Tftp Client”選項卡,輸入好TFTP服務器IP地址和端口號(端口號默認為 69),“Local File”為保存到本機的位置,“Remote File”為服務器上的文件名,點擊“Get”開始下載。
文件下載結果

下載完成后,會彈出下載結果,同時把下載好的文件保存在“Local File”指定的位置,我們雙擊打開可以看到文件內容與服務器上的一致。

2.3.2 把文件上傳到Ubuntu的TFTP服務器上

與文件下載一樣,設置好服務器IP和端口,“Local File”為將要上傳的本機文件,“Remote File”為上傳到服務器上的文件名,點擊“Put”開始上傳。

上傳結果

上傳完成后,檢查服務器上的文件:

yu@Yubuntu:~/share/tftp$ ls -l
總計 12
-rw-rw-rw- 1 tftp tftp 11  326 15:36 1.txt
-rw-rw-r-- 1 yu   yu   14  326 15:39 2.txt
-rw-rw-rw- 1 tftp tftp 14  327 12:05 TFTPWindows.txt
yu@Yubuntu:~/share/tftp$ cat TFTPWindows.txt
Hello
Windowsyu@Yubuntu:~/share/tftp$

可以看到,服務器上多出了一個文件“TFTPWindows.txt”,上傳成功~

肆、Windows上的NFS

NFS服務器: Windows Server 2016 及以上原生支持 NFS 服務器角色,可通過 “文件和存儲服務” 中的 “NFS 服務器” 進行安裝。Windows 10/11 家庭版和專業版默認不支持 NFS 服務器角色。這些版本需要使用第三方工具(如 haneWIN NFS Server 或 Vagrant WinNFSd)來部署 NFS 服務器。
NFS客戶端: Windows Server 2008 R2 及更高版本原生支持 NFS 客戶端,需通過 “添加角色和功能” 手動安裝。Windows 10/11 專業版、企業版支持 NFS 客戶端,但家庭版不包含此功能。
總之,Windows上有幾款NFS相關的軟件,有的是系統自帶的,有的是第三方的,各個支持情況不一……

1. Windows上自帶的NFS軟件

1.1 Windows(桌面版)NFS客戶端安裝

我的Windows11專業版,在“設置”->“系統”->“可選功能”->“更多Windows功能”->“NFS服務”中有自帶的NFS客戶端和管理工具,若要啟用,勾選后點確定即可。Windows 客戶端默認支持 NFSv3,不支持 NFSv4。
Windows自帶NFS客戶端
其中,NFS客戶端提供基礎的NFS客戶端功能,管理工具提供圖形化的管理界面方便我們配置。

1.2 Windows NFS客戶端的使用
1.2.1 查看遠程電腦NFS共享的目錄

這條命令的用法與Linux上的用法一致,列出服務器上共享的所有目錄:

showmount -e 遠程電腦的IP

示例

C:\Users\y17mm>showmount -e 192.168.146.131
導出列表在 192.168.146.131:
/home/yu/share/nfs                 *C:\Users\y17mm>
1.2.2 掛載NFS服務器

命令行方式
命令格式:

mount -o anon \\<服務器IP>\<共享目錄> <盤符>:

-o anon:匿名訪問,即無需身份驗證,Windows 客戶端默認不發送匿名請求,需顯式指定此選項以通過身份驗證。

示例:

C:\Users\y17mm>mount -o anon \\192.168.146.131\home\yu\share\nfs Z:
Z: 現已成功連接到 \\192.168.146.131\home\yu\share\nfs命令已成功完成。C:\Users\y17mm>

圖形化方式
打開“此電腦”,在工具欄中點擊“…”,選擇“映射網絡驅動器”,在彈出的窗口中輸入\\服務器\共享路徑,點擊完成即可。
添加網絡驅動器
這邊我掛載的是我Ubuntu系統中的NFS服務器共享的目錄,掛載成功后會自動打開:
自動掛載結果

1.2.3 檢查掛載

執行上面的命令行掛載或圖形化掛載的操作之后,打開“此電腦”:
已看到NFS位置
可以在“此電腦”中看到對應的網絡位置。
文件能直接讀取和寫入
打開后,里面的文件就像本地文件一樣,可以很方便的讀寫。

1.2.4 取消掛載

命令行方式(推薦)
格式

umount <盤符>:

示例

C:\Users\y17mm>umount z:正在斷開連接            Z:      \\192.168.146.131\home\yu\share\nfs
命令已成功完成。C:\Users\y17mm>

圖形化方式
取消掛載
在需要取消掛載的磁盤上“右鍵”,選擇“斷開連接”即可。

1.3 Windows Server NFS服務器和NFS客戶端安裝

命令行方式
命令:

Import-Module ServerManager
Add-WindowsFeature FS-NFS-Service
Import-Module NFS

圖形化方式
Windows Server 自帶的NFS服務器和NFS客戶端
打開“服務器管理器”,點擊“添加角色和功能”,點擊“基于角色的安裝”,點擊“文件和存儲服務”,選擇“NFS 服務器”。
安裝的內容
跟Windows(桌面版)一樣的,管理工具提供圖形化的管理界面方便我們配置,NFS服務器、NFS客戶端提供基礎的NFS能力。

1.4 Windows Server NFS服務器的使用
1.4.1 創建NFS服務器共享目錄

環境
在我的Windows Server 2025上,在C盤有兩個共享文件夾,內容如下:
NFS服務器環境1
NFS服務器環境2

圖形化方式
在“服務器管理器”中,找到左邊的“文件和存儲服務”,找到“共享”,點擊“若要創建文件共享,請啟動新加共享向導。”,在彈出的窗口中選擇“NFS 共享 - 快速”,下一步,選擇“鍵入自定義路徑”,輸入我的第一個文件夾路徑C:\nfs
新建NFS服務器
共享名稱保持默認就好,當然,也可以更改成你喜歡的。
身份驗證我們依然選擇比較開放的方式,勾選“無服務器身份驗證”,勾選“啟用未映射的用戶訪問”。
配置NFS服務器

共享權限這邊我們需要先點個“添加”,在彈出的面板中選擇對所有機器生效的“All Machines”,權限設置為“讀/寫”權限,點“添加”完成設置。
這樣做的好處是快速上手NFS,后面有需要再改。但是注意別在不信任的網絡上這樣操作(比如公網)。
創建成功
創建NFS服務器共享目錄完成~

命令行方式
格式

New-NfsShare -Name <共享名稱> -Path <共享目錄> -Permission <權限> -AllowRootAccess <布爾值-是否允許以root權限訪問> -EnableUnmappedAccess <布爾值-是否未映射的用戶訪問>

示例

PS C:\Users\Administrator> New-NfsShare -Name "win_nfs_share" -Path "c:\ymm" -Permission "readwrite" -AllowRootAccess $true -EnableUnmappedAccess $true
警告: 共享上已啟用未映射的 Unix 用戶訪問或匿名訪問,但是 AUTH_SYS 身份驗證協議已禁用。服務器已在共享上自動啟用
AUTH_SYS。Name          Availability             Path
----          ------------             ----
win_nfs_share Standard (not clustered) c:\ymmPS C:\Users\Administrator>
1.4.2 驗證NFS服務器共享目錄是否設置成功

命令格式

Get-NfsShare -Name <共享名稱>

示例

PS C:\Users\Administrator> Get-NfsShare -Name "nfs"Name Availability             Path
---- ------------             ----
nfs  Standard (not clustered) C:\nfsPS C:\Users\Administrator> Get-NfsShare -Name "win_nfs_share"Name          Availability             Path
----          ------------             ----
win_nfs_share Standard (not clustered) c:\ymmPS C:\Users\Administrator>
1.4.3 使用Ubuntu掛載Windows NFS服務器

準備掛載

yu@Yubuntu:~$ showmount -e 192.168.146.136  # 顯示Windows NFS服務器上所有的共享目錄
Export list for 192.168.146.136:
/nfs           (everyone)
/win_nfs_share (everyone)
yu@Yubuntu:~$ sudo mkdir /mnt/windows1 /mnt/windows2  # 創建掛載目錄,待會兒掛到這兩個文件夾上
[sudo] yu 的密碼:
yu@Yubuntu:~$

掛載第一個目錄

yu@Yubuntu:~$ sudo mount -t nfs 192.168.146.136:/nfs /mnt/windows1  # 掛載第一個共享目錄
yu@Yubuntu:~$ cd /mnt/windows1
bash: cd: /mnt/windows1: 權限不夠
yu@Yubuntu:~$ su
密碼:
root@Yubuntu:/home/yu# cd /mnt/windows1
root@Yubuntu:/mnt/windows1# ls
windows_nfs_server.txt
root@Yubuntu:/mnt/windows1# cat windows_nfs_server.txt
Windows Server 2025
root@Yubuntu:/mnt/windows1#

成功~

掛載第二個目錄

yu@Yubuntu:~$ sudo mount -t nfs 192.168.146.136:/win_nfs_share /mnt/windows2  # 掛載第二個共享目錄
[sudo] yu 的密碼:
yu@Yubuntu:~$ cd /mnt/windows2
-bash: cd: /mnt/windows2: 權限不夠
yu@Yubuntu:~$ su
密碼:
root@Yubuntu:/home/yu# cd /mnt/windows2
root@Yubuntu:/mnt/windows2# ls
yu.txt
root@Yubuntu:/mnt/windows2# cat yu.txt
yu nfs windows
root@Yubuntu:/mnt/windows2#

成功~

取消掛載

yu@Yubuntu:~$ sudo umount /mnt/windows1
yu@Yubuntu:~$ sudo umount /mnt/windows2
1.4.4 使用Windows NFS客戶端掛載Windows NFS服務器

掛載NFS服務器
與上文的“1.2.2 掛載NFS服務器”部分步驟一致,不一樣的是這里可能會彈出“輸入網絡憑據”的認證窗口,需要輸入一下Windows Server的賬號和密碼,例如我這里需要輸入賬號:Administrator,密碼:Qwe123++。
掛載成功
掛載后能正常訪問~

2. Windows上的第三方NFS軟件

客戶端在非服務器版本上有的,若是家庭版,可以改個激活碼轉換成專業版,這里就不介紹了,這里主要介紹NFS服務器軟件。

2.1 haneWIN
2.1.1 下載安裝

haneWIN 網站地址:https://www.hanewin.net/nfs-e.htm
不太喜歡安裝的,這里需要下載兩個文件,一個是程序包,一個語言包。
下載haneWIN
下載后得到這兩個文件:
haneWIN
其中,“nfs1268.zip”為程序包,“nfs-languages.zip”為語言包,解壓“nfs1268.zip”到當前目錄,會得到一個“nfsd”。
解壓haneWIN
先使用壓縮軟件打開另外一個文件“nfs-languages.zip”,然后進入解壓得到的“nfsd”,進入到里面的“languages”文件夾內,把“nfs-languages.zip”中的“Simplified_Chinese.ini”拖入。
漢化過程
然后我們返回上一層,找到nfsd文件夾下的“nfssrv-64.exe”,啟動!
漢化設置
點擊“Edit”,選擇“Preferences”,切換到“Language”選項卡,點擊“簡體中文”,點擊“確定”,這樣界面就變成中文的了~

2.1.2 配置服務器

創建共享文件夾
我在C盤下創建了個文件夾“nfs_hane”。
共享目錄
配置共享文件夾
回到haneWIN,點擊“編輯”,選擇“首選項”,切換到“導出”面板,點擊“編輯輸出文件”,開始編輯共享目錄條目。
配置haneWIN
編輯框中的每一行代表一個共享目錄,“#”開頭的為注釋,可以不用管它,我們把原來的一些共享目錄條目全部刪去,寫入如下條目:

c:\nfs_hane -public -name:nfs_hw

其中,c:\nfs_hane為共享的文件夾路徑,我的就剛剛創建的在C盤的文件夾“nfs_hane”,-public表示為公共權限,-name:nfs_hw為設置共享名稱為“nfs_hw”。
大家根據自己的需要進行更改,更改完成后點“保存”,點“確定”關掉“首選項”窗口。
重啟haneWIN
點“文件”,選擇“退出”,再重新雙擊“nfssrv-64.exe”,啟動!
重啟haneWIN

2.1.3 檢查NFS服務器

haneWIN重啟后,設置生效,我們到Ubuntu下驗證一下。

yu@Yubuntu:~$ showmount -e 192.168.146.128
Export list for 192.168.146.128:
/nfs_hw -public
yu@Yubuntu:~$ sudo mount -t nfs -o nolock 192.168.146.128:/nfs_hw /mnt
yu@Yubuntu:~$ cd /mnt/
yu@Yubuntu:/mnt$ ls
hw.txt
yu@Yubuntu:/mnt$ cat hw.txt
hw_nfs
yu@Yubuntu:/mnt$

能正常訪問NFS服務器上的共享目錄,成功~

2.2 WinNFSd

支持NFS V3,Windows掛載測試成功,Ubuntu掛載測試提示“clnt_create: RPC: Can’t decode result”和“輸入/輸出錯誤”。

2.2.1 下載

開源地址:https://github.com/winnfsd/winnfsd/releases
點擊“WinNFSd.exe”即可開始下載。
WinNFSd.exe下載

2.2.2 配置

把“WinNFSd.exe”放到一個文件夾中,在此文件夾中新建文本文件改文件名和后綴為“start.bat”,寫入如下內容:
WinNFSd.exe配置

WinNFSd.exe -addr 0.0.0.0 %cd% /nfs

其中,-addr 0.0.0.0為在所有的網卡上啟用監聽,%cd%表示當前目錄,/nfs為共享名稱。

2.2.3 運行

雙擊“start.bat”啟動NFS服務器。
啟動WinNFSd.exe

2.2.4 測試掛載服務器(Windows)

命令:

mount -o anon \\127.0.0.1\nfs Z:

測試掛載WinNFSd.exe

2.2.5 關閉服務器

在所有客戶端取消掛載后,在由“start.bat”打開的小黑窗中輸入quit退出NFS服務器。
退出WinNFSd.exe
若是還有掛載的NFS客戶端,它會要求你確認的。

2.3 FreeNFS

官網:https://freenfs.sourceforge.net/
開源地址:https://github.com/digitalarch/FreeNFS
開源免費,支持 NFS v2/v3,已停止維護(最后版本 2012 年),不建議用于生產環境。

2.3.1 下載和運行

下載頁鏈接:http://sourceforge.net/projects/freenfs/files/latest/download
下載后得到一個文件“FreeNFS.exe”,雙擊后運行,運行后無窗口,需要點開任務欄才能看到。
運行FreeNFS

2.3.2 掛載測試

Windows 掛載失敗

C:\Users\y17mm>showmount -e 192.168.146.137
RPC: 程序不可用RPC: 端口映射器故障 - RPC: 已超時。
C:\Users\y17mm>mount -o anon \\192.168.146.137\ Z:
網絡錯誤 - 53有關詳細信息,請鍵入“NET HELPMSG 53”。C:\Users\y17mm>

Ubuntu掛載失敗

yu@Yubuntu:~$ showmount -e 192.168.146.137
rpc mount export: RPC: Procedure unavailable
yu@Yubuntu:~$ sudo mount -v -t nfs -o vers=3,proto=tcp,sec=none,timeo=20,soft,intr 192.168.146.137:/ /mnt
[sudo] yu 的密碼:
mount.nfs: timeout set for Sat Mar 29 02:07:33 2025
mount.nfs: trying text-based options 'vers=3,proto=tcp,sec=none,timeo=20,soft,intr,addr=192.168.146.137'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.146.137 prog 100003 vers 3 prot TCP port 2049
mount.nfs: portmap query failed: RPC: Authentication error
mount.nfs: access denied by server while mounting 192.168.146.137:/
yu@Yubuntu:~$
2.3.4 其他版本

FreeNFS還有個專門為嵌入式做的版本,叫“FreeNFSE”
下載地址:https://sourceforge.net/projects/freenfs/files/Current%20Version/Embedded%20System%20Version/
下載完成后得到一個壓縮包“FreeNFSE Release 12-12-12.rar”,解壓后找到“FreeNFSE.exe”運行,一樣的是在狀態欄。
運行FreeNFSE
再次嘗試使用Windows和Ubuntu去鏈接,一樣的結果,仍然不可用,可能是版本不對或者其他原因,歡迎討論。

伍、參考資料

  1. 創建 NFS 共享(NFS)| Microsoft Learn — New-NfsShare (NFS) | Microsoft Learn:https://learn.microsoft.com/en-us/powershell/module/nfs/new-nfsshare?view=windowsserver2025-ps
  2. 部署網絡文件系統:https://learn.microsoft.com/zh-cn/windows-server/storage/nfs/deploy-nfs
  3. Tftpd64:https://pjo2.github.io/tftpd64/
  4. windows上搭建NFS服務器–haneWIN:https://blog.csdn.net/paladinzh/article/details/96162270
  5. WinNFSd:https://github.com/winnfsd/winnfsd
  6. 歡迎來到 FreeNFS!:https://freenfs.sourceforge.net/
  7. FreeNFS:https://sourceforge.net/projects/freenfs/
  8. 11.文件系統 - NFS - 《RT-Thread編程手冊》 - 書棧網 · BookStack:https://www.bookstack.cn/read/rtthread-manual-doc/11.7.md

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75266.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JS判斷變量是否為空的方法

在 JavaScript 中&#xff0c;判斷變量是否為空需要根據不同的數據類型和具體需求來處理。以下是常見場景的解決方案&#xff1a; 1. 基礎判斷&#xff1a;null 或 undefined javascript if (value null || value undefined) {// 變量為空 } 或簡寫為&#xff1a; javasc…

Linux更換掛載nfs遷移數據流程

當前&#xff1a;原nfs&#xff08;10.16.2.1:/myData&#xff09;掛載在/myData&#xff0c;新的nfs&#xff08;10.16.2.2:/myData&#xff09;未掛載 目標&#xff1a;把舊nfs的數據遷移到新的nfs上&#xff0c;并把新nfs掛載到/myData 步驟&#xff1a; 1、新nfs掛載到一…

深入解析音頻:格式、同步及封裝容器

物理音頻和數字音頻 物理音頻 定義&#xff1a;物理音頻就是聲音在自然界中的物理表現形式&#xff0c;本質上是一種機械波&#xff0c;通過空氣或其他介質傳播。例如&#xff0c;當我們說話、樂器演奏或物體碰撞時&#xff0c;都會產生振動&#xff0c;這些振動會引起周圍介…

AI與.NET技術實操系列(四):使用 Semantic Kernel 和 DeepSeek 構建AI應用

1. 引言 在人工智能技術飛速發展的今天&#xff0c;大型語言模型&#xff08;Large Language Models, LLMs&#xff09;已成為智能應用開發的核心驅動力。從智能客服到自動化內容生成&#xff0c;LLMs的應用正在深刻改變我們的工作和生活方式。 對于.NET開發者而言&#xff0c;…

導出cad實體所有信息到txt并打開(生成唯一文件名) ——c#cad二次開發

效果如下: 建議在保存時指定編碼為UTF-8&#xff1a; using (StreamWriter sw new StreamWriter(filePath, false, Encoding.UTF8)) { // 寫入內容 } 最終 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD…

Redis 源碼硬核解析系列專題 - 第一篇:Redis源碼入門與整體架構

1. 引言 Redis作為一個高性能的內存鍵值數據庫,其源碼以簡潔高效著稱。通過解析Redis源碼,我們可以深入理解其單線程模型、事件驅動機制以及模塊化設計的精髓。本篇將從Redis的源碼目錄結構入手,剖析其整體架構,并聚焦啟動流程和事件循環的核心實現。 2. Redis源碼目錄結構…

異步加載+內存分析

異步加載 Resources和AB包的同步加載與異步加載對比代碼&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class AsyncLoad : MonoBehaviour {// Start is called before the first frame updatev…

將視頻m4s文件轉換為mp4格式

將視頻m4s文件轉換為mp4格式 一般情況&#xff1a;偏大的文件為視頻&#xff0c;偏小的文件為音頻。 環境要求&#xff1a;下載并安裝ffmpeg&#xff0c;并配置好環境變量&#xff0c;如下圖&#xff1a; 轉換代碼&#xff1a; import subprocessdef merge_m4s_to_mp4(vide…

EXCEL報錯:無法共享此工作薄,因表包含excel表或xml映射的解決方法

在分享工作薄是&#xff0c;如果出現了“無法共享此工作薄&#xff0c;因表包含excel表或xml映射”的報錯&#xff0c;那么有兩個原因&#xff1a; 1.包含Excel表格&#xff0c;這個也是相對比較常見的原因。 首先選中表格。如果你不知道表的位置在哪&#xff0c;那么在Excel左…

w2ui 水平滾動移動 虛擬列 數據丟失

https://w2ui.com/web/docs/1.5/w2grid.disableCVS https://github.com/vitmalina/w2ui/issues/1398 解決方案來源 問題現象: 窗口縮小 導致多列 出現水平滾動,滾動時觸發本地樣式重繪,導致record undefined,從而引發多列報錯 解決方案: 使用 disableCVS : true 一次加載到d…

在ensp進行OSPF+RIP+靜態網絡架構配置

一、實驗目的 1.Ospf與RIP的雙向引入路由消息 2.Ospf引入靜態路由信息 二、實驗要求 需求&#xff1a; 路由器可以互相ping通 實驗設備&#xff1a; 路由器router7臺 使用ensp搭建實驗壞境&#xff0c;結構如圖所示 三、實驗內容 1.配置R1、R2、R3路由器使用Ospf動態路由…

基于mediapipe深度學習和限定半徑最近鄰分類樹算法的人體摔倒檢測系統python源碼

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 Mediapipe人體姿態檢測原理 4.2 限定半徑最近鄰分類樹算法原理 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 2.算法運行軟件版本 人工智能算法python程序運行環…

deep-sync開源程序插件導出您的 DeepSeek 與 public 聊天

一、軟件介紹 文末提供下載 deep-sync開源程序插件導出您的 DeepSeek 與 public 聊天&#xff0c;這是一個瀏覽器擴展&#xff0c;它允許用戶公開、私下分享他們的聊天對話&#xff0c;并使用密碼或過期鏈接來增強 Deepseek Web UI。該擴展程序在 Deepseek 界面中添加了一個 “…

蘋果簽名是否一定安全呢?

蘋果簽名是一種數字簽名技術&#xff0c;用于驗證應用程序的來源和完整性。當開發者將應用程序提交到蘋果應用商店時&#xff0c;蘋果會對應用進行簽名&#xff0c;這個簽名包含了開發者的身份信息以及應用的相關數據。用戶安裝應用時&#xff0c;設備會驗證簽名的有效性&#…

Outlook客戶端無法連接到服務器,添加賬戶顯示“無網絡連接,請檢查你的網絡設置,然后重試。[2603]”

1、先切換一下到手機熱點或者其他網絡&#xff0c;判斷是不是現在所連接的網絡的問題。如果有VPN代理軟件&#xff0c;網銀軟件&#xff0c;加密軟件在后臺運行&#xff0c;麻煩退出一下。 2、打開電腦上的 控制面板——網絡和Internet——Internet選項——高級——先點擊還原…

Laravel 中使用 JWT 作用戶登錄,身份認證

什么是JWT&#xff1a; JWT 全名 JSON Web Token&#xff0c;是一種開放標準 (RFC 7519)。 用于在網絡應用環境間安全地傳輸信息作為 JSON 對象。 它是一種輕量級的認證和授權機制&#xff0c;特別適合分布式系統的身份驗證。 核心特點 緊湊格式&#xff1a;體積小&#x…

51. “閑轉易”交易平臺小程序(基于springbootvue)

目錄 1.系統的受眾說明 2 關鍵技術介紹 2.1 SSM框架 2.2 Java技術及架構介紹 2.3 MYSQL數據庫 2.4微信小程序框架 2.5 B/S架構 3 需求分析與可行性分析 3.1功能需求分析 3.2 性能需求分析 3.3系統設計規則與運行環境 3.4系統流程分析 3.5 可行性分析 4 系統設計 …

【STM32】GPIO輸入(按鍵)

目錄 一、如何分辨GPIO輸入使用什么電頻二、輸入抖動問題如何消抖三、示例代碼 一、如何分辨GPIO輸入使用什么電頻 先看原理圖 即可知道他的初始輸入狀態需要高電平 判斷可知使用上拉輸入 二、輸入抖動問題如何消抖 電路圖中, 按鍵輸入有額外的電容電阻, 是為了消抖 消抖方…

【Android Studio】配置教程以及解決過程中的問題(詳細版本)

目錄 前言 一、下載安裝 二、配置 三、簡單使用 新建項目 創建默認項目 四、解決過程中的問題 前言 如果你目前不是第一次安裝&#xff0c;那需要完全卸載它。 因為一般電腦卸載 Android Studio 時容易落下一堆配置文件沒刪&#xff0c;卸載不干凈導致無用文件占用空間…

EtherNet/IP轉ProfiNet協議轉換網關驅動西門子PLC與流量計的毫秒級壓力同步控制

一、案例背景 汽車涂裝線的靜電噴涂工藝對壓縮空氣流量穩定性要求極高。原系統中Alicat流量計與西門子PLC因協議差異無法聯動&#xff0c;導致涂料浪費率高達8%。通過JM-EIPM-PN網關實現供氣系統與PLC的深度集成。從而實現了EtherNet/IP轉ProfiNet的通訊。 二、設備連接與配置…