ubuntu 20.04和linux開發板配置nfs服務器
1、ubuntu配置nfs服務器
1.1 安裝nfs服務器
sudo apt-get install nfs-kernel-server
1.2 配置nfs
-
打開配置文件:
sudo vim /etc/exports
-
修改配置如下:
/home/nfs_test *(rw,sync,no_root_squash,no_subtree_check)
說明:/home/arkinux/nfs_test - 要掛載的目錄,這里請修改為自己的目錄。 * - 指定可訪問 NFS 服務的客戶端 IP 地址,這里 “*” 表示所有可以 ping 該主機的用戶都可以訪問。 rw - 讀/寫權限,只讀權限的參數為 ro。 sync - 數據同步寫入內存和硬盤,也可以使用 async,此時數據會先暫存於內存中,而不立即寫入硬盤。 no_root_squash - NFS 服務器共享目錄用戶的屬性,如果用戶是 root,那么對於這個共享目錄來說就具有 root 的權限。 no_subtree_check - 不檢查父目錄的權限
-
修改完成之后,保存並退出。輸入以下命令使配置文件生效:
sudo exportfs -r
-
重啟 NFS 服務:
sudo /etc/init.d/nfs-kernel-server restart [ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
2、開發板打開nfs客戶端
2.1 開發板打開nfs客戶端掛載
一些開發板的kernel會默認沒打開nfs客戶端,需要在編譯kernel的時候執行make menuconfig里面配置下。配置項如下:
配置完保存然后編譯、燒錄即可。
- 開發板nfs客戶端掛載ubuntu20.04服務端的共享文件夾
mount -t nfs -o nolock 192.168.31.75:/home/nfs_test /mnt
說明192.168.31.75 //是我的ubuntu20.04系統的ip地址 /home/nfs_test //是nfs服務器的共享文件夾 /mnt //是開發板掛載的文件夾
- 如果開發板通過
ifconfig
查看ip地址和ubuntu系統ip不在同一個網段,可以通過以下指令修改開發板ip地址:
ifconfig eth0 192.168.31.20
2.2 開發板打開nfs客戶端取消掛載
umount /mnt
2.3 查看共享文件夾
showmount -e
2.4查詢nfs服務器運行狀態
sudo /etc/init.d/nfs-kernel-server status
3、nfs常見問題
3.1開發板掛載時提示協議不支持,具體錯誤如下:
mount: mounting 192.168.31.75:/home/why/SSD202_Project on /mnt failed: Protocol not supported
解決方法:由於ubuntu 20.04 nfs默認支持協議3和協議4,但是開發板uboot默認啟動的是協議2,若想要求 nfs 支持協議2。需要在ubuntu系統
- 打開文件
vim /etc/default/nfs-kernel-server
- 在文件中末尾增加內容
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
- 保存重啟下nfs,重啟指令
sudo /etc/init.d/nfs-kernel-server restart
3.2 開發板掛載時提示超時:
rpcbind: server localhost not responding, timed out
解決辦法:加上“-o nolock”參數
mount -t nfs -o nolock 192.168.31.75:/home/nfs_test /mnt
3.3 如果nfs服務器是window端,開發板掛載時提示連接超時:
切記看一下是否關閉了window的防火牆。需要全部關閉才行
3.4 如果nfs服務器是ubuntu端,開發板掛載時提示連接超時:
同樣需要關閉ubuntu的防火牆
- 查看防火牆狀態
sudo ufw status
- 關閉防火牆
sudo ufw disable