1. 项目概述
作为一名嵌入式开发工程师,我最近在使用LubanCat 2开发板进行项目开发时遇到了一个典型的工作场景:由于工位与路由器距离较远,只能通过网线将开发板连接到笔记本电脑。这带来了三个关键需求:开发板需要联网下载软件、需要与主机和虚拟机进行网络通信、还需要通过NFS共享文件夹提高开发效率。
经过多次实践和调试,我总结出一套完整的解决方案,从烧录新镜像开始,逐步完成整个开发环境的搭建。这套方案不仅适用于LubanCat 2开发板,对于其他基于Linux的嵌入式开发板也有参考价值。
2. 环境准备与网络共享配置
2.1 硬件连接与初始检查
在开始配置前,我们需要确保以下硬件连接正确:
- 开发板通过网线连接到笔记本电脑的以太网口
- 笔记本电脑通过WiFi连接到互联网
- 开发板通过串口线连接到电脑(用于初始配置)
提示:建议使用质量较好的网线,避免因线材问题导致网络不稳定。我曾遇到过因使用劣质网线导致网络时断时续的问题,排查了很久才发现是硬件问题。
2.2 Windows主机网络共享配置
Windows系统的Internet连接共享(ICS)功能可以让开发板通过主机的WiFi连接上网。具体配置步骤如下:
- 按下Win+R,输入
ncpa.cpl打开网络连接窗口 - 找到当前连接的WiFi适配器(通常显示为"WLAN")
- 右键选择"属性",切换到"共享"选项卡
- 勾选"允许其他网络用户通过此计算机的Internet连接来连接"
- 在下拉菜单中选择连接开发板的以太网口
- 点击"确定"保存设置
配置完成后,Windows会自动将被共享的以太网口的IP地址设置为192.168.137.1。这个地址非常重要,后续开发板和虚拟机的网络配置都将基于这个网段。
注意事项:如果之前修改过以太网口的IP地址,共享功能可能会失败。建议先重置以太网口设置为自动获取IP,再开启共享功能。
2.3 验证网络共享
配置完成后,可以通过以下方法验证是否成功:
- 在命令提示符中输入
ipconfig,查看被共享的以太网口是否获得了192.168.137.1的IP地址 - 尝试ping这个地址,确保网络接口正常工作
3. 虚拟机网络配置
3.1 虚拟机网络模式选择
在虚拟机软件(如VMware或VirtualBox)中,我们需要将虚拟机的网络适配器设置为桥接模式。桥接模式允许虚拟机直接连接到物理网络,获得与主机同网段的IP地址。
配置步骤:
- 打开虚拟机设置
- 选择网络适配器
- 将连接方式改为"桥接模式"
- 确保桥接到正确的物理网卡(通常是WiFi网卡)
3.2 静态IP配置
为了使网络环境更加稳定,建议为虚拟机配置静态IP地址。基于之前的网络共享设置,我们使用192.168.137.0/24网段:
- 打开虚拟机中的网络设置
- 选择IPv4配置
- 设置为手动模式
- 输入以下信息:
- IP地址:192.168.137.20
- 子网掩码:255.255.255.0
- 网关:192.168.137.1
- DNS:可以设置为8.8.8.8或114.114.114.114
配置完成后,使用ifconfig命令检查IP地址是否生效。
3.3 网络连通性测试
在虚拟机中执行以下测试:
- ping主机(192.168.137.1)
- ping外部网站(如www.baidu.com)
如果都能ping通,说明虚拟机网络配置正确。
4. 开发板网络配置
4.1 串口连接与登录
由于开发板初始状态网络未配置,我们需要通过串口进行初始设置:
- 使用串口工具(如Putty、MobaXterm等)连接开发板
- 设置正确的串口号和波特率(LubanCat 2通常为1500000)
- 使用root账户登录(用户名root,密码root)
注意事项:高波特率串口连接需要终端软件和驱动支持。如果连接不稳定,可以尝试降低波特率到115200。
4.2 网络接口配置
LubanCat 2使用NetworkManager管理网络,我们可以使用nmtui工具进行配置:
- 在终端输入
nmtui命令 - 选择"Edit a connection"
- 找到以太网连接(通常为eth0或Wired connection 1)
- 配置静态IP:
- IPv4配置:Manual
- Addresses: 192.168.137.100/24
- Gateway: 192.168.137.1
- DNS servers: 8.8.8.8
配置完成后,使用ip addr show eth0命令检查配置是否生效。
4.3 网络测试
在开发板上执行以下测试:
- ping主机(192.168.137.1)
- ping虚拟机(192.168.137.20)
- ping外部网站(如www.baidu.com)
如果都能ping通,说明开发板网络配置正确。
5. SSH远程登录配置
5.1 开发板SSH服务检查
大多数Linux开发板默认已安装SSH服务,可以通过以下命令检查:
bash复制systemctl status sshd
如果服务未运行,可以使用systemctl start sshd启动服务。
5.2 从主机SSH连接开发板
在主机上使用SSH客户端连接开发板:
bash复制ssh root@192.168.137.100
首次连接时需要接受密钥指纹,之后就可以远程操作开发板了。
安全建议:生产环境中不建议直接使用root账户远程登录,应该创建普通用户并配置sudo权限。
6. NFS共享配置
6.1 虚拟机NFS服务器配置
在虚拟机上安装和配置NFS服务器:
- 安装NFS服务器软件:
bash复制sudo apt-get update
sudo apt-get install nfs-kernel-server
- 创建共享目录并设置权限:
bash复制mkdir -p /home/username/nfs_share
chmod 777 /home/username/nfs_share
- 编辑/etc/exports文件,添加共享配置:
bash复制/home/username/nfs_share *(rw,sync,no_subtree_check,no_root_squash)
- 重启NFS服务:
bash复制sudo systemctl restart nfs-kernel-server
6.2 开发板NFS客户端配置
在开发板上安装NFS客户端并挂载共享目录:
- 安装NFS客户端软件:
bash复制sudo apt-get update
sudo apt-get install nfs-common
- 创建本地挂载点:
bash复制mkdir -p /mnt/nfs
- 手动挂载NFS共享:
bash复制sudo mount -t nfs -o nolock 192.168.137.20:/home/username/nfs_share /mnt/nfs
- 配置开机自动挂载,编辑/etc/fstab文件,添加:
bash复制192.168.137.20:/home/username/nfs_share /mnt/nfs nfs defaults,nolock,_netdev,nofail 0 0
6.3 NFS共享测试
在开发板上执行:
bash复制touch /mnt/nfs/testfile
然后在虚拟机的共享目录中检查是否出现了testfile文件,验证NFS共享是否正常工作。
7. 常见问题与解决方案
7.1 网络共享失败
问题现象:开发板无法ping通主机或外网
可能原因:
- Windows防火墙阻止了共享连接
- 网络适配器驱动问题
- IP地址冲突
解决方案:
- 检查Windows防火墙设置,确保"文件和打印机共享"被允许
- 更新网络适配器驱动
- 检查IP地址是否冲突,尝试更换IP地址
7.2 NFS挂载失败
问题现象:mount命令执行后无报错,但无法访问共享文件
可能原因:
- 虚拟机防火墙阻止了NFS端口
- NFS服务器配置错误
- 权限问题
解决方案:
- 检查虚拟机防火墙设置,开放NFS相关端口(2049等)
- 检查/etc/exports文件配置是否正确
- 确保共享目录权限设置为777
7.3 SSH连接超时
问题现象:SSH连接时出现"Connection timed out"
可能原因:
- 开发板SSH服务未运行
- 网络配置错误
- 防火墙阻止了SSH端口
解决方案:
- 检查sshd服务状态:
systemctl status sshd - 检查开发板网络连接是否正常
- 检查防火墙设置,开放22端口
8. 性能优化建议
8.1 网络性能优化
- 使用千兆网卡和网线,确保物理连接速度
- 在虚拟机设置中,选择"虚拟化IOMMU"选项可以提高网络性能
- 调整TCP窗口大小,优化大文件传输性能
8.2 NFS性能优化
- 在/etc/exports中添加async选项可以提高写入性能(但可能增加数据丢失风险)
- 调整rsize和wsize参数,通常设置为8192或16384可以获得较好性能
- 对于大量小文件操作,可以启用noac选项禁用属性缓存
8.3 开发环境优化
- 在开发板上安装tmux或screen,方便会话管理
- 配置SSH密钥认证,避免频繁输入密码
- 设置开发板时钟同步,避免文件时间戳混乱
这套开发环境搭建方案经过多次实践验证,能够满足大多数嵌入式开发需求。在实际使用中,可以根据具体项目需求进行适当调整。