[嵌入式Linux] 配置Ubuntu24.04 NFS兼容正点原子IMX6ULL

嵌入式开发往往会通过NFS直接挂载WSL中的根文件系统,避免反复多次的程序烧录。

而WSL2目前能够安装的Ubuntu发行版最低为Ubuntu18.04。默认是不支持正点原子开发板上的NFS verson2的。

本文主要介绍WSL2镜像网络模式的配置及Ubuntu24.04中如何修改NFS以支持开发版的挂载。

系统:Win11 23H2

WSL2: Ubuntu24.04

开发板:正点原子 imx6ull

一、配置WSL2 镜像网络模式,实现与Windows共用IP

wsl默认的联网模式为NAT(网络地址转换), 这种方式无法直接与开发板连通。可通过桥接或镜像的方式,实现WSL与开发板的连接。桥接的方式配置起来我嫌麻烦,这里选择更简单的镜像网络的方式。

1. 在C:\Users\xxx目录下新建.wslconfig文件(xxx根据自己的用户名确定)写入:

# Settings apply across all Linux distros running on WSL 2
[wsl2]
networkingMode=mirrored     # 开启镜像网络
dnsTunneling=true           # 开启 DNS Tunneling
firewall=true               # 开启 Windows 防火墙
autoProxy=true              # 开启自动同步代理

[experimental]
hostAddressLoopback=true

2. 使用管理员权限在 PowerShell 窗口中运行以下命令,以配置 Hyper-V 防火墙设置,从而允许入站连接:

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

3. 最好将电脑的IP配置为静态IP,方便日后开发板的挂载。

  

配置好IP后重启WSL

wsl --shutdown
wsl

在Ubuntu中通过ifconfig命令,可以看到我们的IP已经与Windows的IP一致,并且可以ping通开发板的IP地址。

二、配置nfs以实现开发板的nfs挂载

1. 准备工作

  在Ubuntu中安装nfs-kernel-serverrpcbind,安装前更新最新的包信息索引列表。

sudo apt update
sudo apt-get install nfs-kernel-server rpcbind

2. 创建共享文件

  在用户目录下创建nfs文件夹,用于共享,修改 /etc/exports文件, 配置nfs共享规则

cd ~/
mkdir nfs
sudo vim /etc/exports

  /etc/exports文件中添加如下内容:

/home/ethan/nfs *(insecure,rw,sync,no_subtree_check,no_root_squash)
  • /home/ethan/nfs 为共享文件夹目录(ethan是我的用户名)
  • * 代表所有IP都可访问 也可配置为192.168.*来筛选连接的IP
  • insecure 选项可以允许客户端使用高于1024的端口进行NFS连接
  • rw 配置为允许读写
  • sync 配置为同步写入
  • no_subtree_check 若输出为一个子目录时,不检查父目录,以提高效率
  • no_root_squash 客户端以root登录时,赋予其本地root权限

  修改后保存退出,并键入如下命令重新加载exportfs文件

sudo exportfs -ar

3. 解决兼容问题

  服务器所用的系统为ubuntu24.04, 默认不支持version2, 可通过cat versions查看支持的版本。

sudo cat /proc/fs/nfsd/versions

  

  可以看到当前服务器对 version2 是不支持的。我们通过修改/etc/default/nfs-kernel-server配置文件实现对v2版本的兼容

sudo vim /etc/default/nfs-kernel-server
RPCNFSDCOUNT="-V 2 8"
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS="-V 2 --manage-gids"
NEED_SVCGSSD=""
RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"

  修改内容如上文所示,加入--debug --syslog,以便于连接时出现问题查看打印的日志信息。保存并退出后,重启nfs服务,再次查看版本兼容性,验证是否支持version2。

sudo service nfs-kernel-server restart
sudo cat /proc/fs/nfsd/versions

  

  此时nfs服务器已经支持version2 了。

4. 解决网络问题

  检查nfs对应端口,键入如下命令

netstat -a | grep nfs

  

  若如上图所示,tcpheudp的连接都存在则可直接跳过此步。若只有tcp端口没有udp端口,需修改nfs的配置文件 使其支持udp及version2。

sudo vim /etc/nfs.conf
udp=y
vers2=y

  配置文件的修改如上文所示,修改后保存退出,并重启nfs服务

sudo service nfs-kernel-server restart

5. 验证

  在本地验证,键入如下命令,可以看到本地的nfs共享文件已经可以获取得到

showmount -e 127.0.0.1

  

  在客户端验证,在开发板中键入如下命令

showmount -e <服务器ip>

  

  若可以看到服务器共享的nfs的文件,即成功一大半,挂载时注意配置版本兼容 -o vers=3

mount -t nfs -o vers=3 <server-ip>:<shared-directory> <mount-point>

  

至此,nfs的配置已完成。

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值