[嵌入式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的配置已完成。

### 如何在 Ubuntu 24.04配置和使用 NFS #### 安装必要的软件包 为了使NFS功能正常工作,在Ubuntu 24.04上需先安装`nfs-kernel-server`以及`rpcbind`这两个组件。这可以通过执行命令来完成: ```bash sudo apt update sudo apt-get install nfs-kernel-server rpcbind ``` 上述操作会确保系统拥有最新版本的软件包信息,并安装必需的服务程序[^2]。 #### 创建共享目录 通常情况下,建议创建专门用于NFS共享的目录结构。例如,可以在根目录下建立一个新的文件夹作为共享点: ```bash sudo mkdir -p /srv/nfs/share sudo chown nobody:nogroup /srv/nfs/share sudo chmod 755 /srv/nfs/share ``` 这里选择了`/srv/nfs/share`路径作为示例;实际部署时可根据需求调整位置与权限设置[^3]。 #### 编辑导出表 编辑`/etc/exports`文件以定义哪些目录应该被共享出去及其对应的访问控制策略。对于上面提到的例子来说,可以这样添加一行到该文件中: ```plaintext /srv/nfs/share *(rw,sync,no_subtree_check) ``` 此行意味着任何客户端都可以对该共享目录具有读写权限(`rw`),并且每次更改都会立即同步至磁盘(`sync`)。同时禁用了子树检查(`no_subtree_check`)以提高性能。 #### 应用新的配置 保存对`/etc/exports`所做的修改之后,需要通知NFS守护进程重新加载配置才能生效: ```bash sudo systemctl restart nfs-kernel-server ``` 或者也可以采用更简单的方式来进行即时更新而无需重启整个服务: ```bash sudo exportfs -ra ``` 此时,其他机器便能够连接上来并挂载指定的共享资源了。 #### 测试NFS共享 假设有一台名为client-machine的客户机想要测试刚刚设置好的NFS分享,则可在其终端输入如下指令尝试挂载远程文件夹: ```bash sudo mount -t nfs server-ip:/srv/nfs/share /mnt/local-mount-point ``` 其中server-ip代表运行着NFS服务器的实际IP地址,而/mnt/local-mount-point则是本地上用来映射远端数据的位置[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值