在嵌入式 Linux 开发中,最理想的网络环境是“双网卡架构”:
网卡 1 (NAT 模式):用于 Ubuntu 上网(下载软件、源码),以及与 Windows 主机进行 SSH/VSCode 通信。
网卡 2 (桥接模式):专线连接开发板,模拟真实的物理局域网,用于 TFTP/NFS 挂载调试。
我的环境参数(示例):
Windows 主机 NAT 网段 (VMnet8):
192.168.72.xWindows 有线网口网段:
192.168.1.xUbuntu: 16.04 (VMware Workstation)
核心配置步骤
1. VMware 虚拟网络编辑器设置
必须手动指定物理网卡
打开“虚拟网络编辑器”。
点击 VMnet0 (桥接模式)。
关键点:将“已桥接至”从“自动”改为你的有线网卡名称(如 Realtek PCIe GBE...)。
避坑理由:“自动”模式经常会错误地桥接到 WiFi 网卡,导致开发板 Ping 不通虚拟机。
2. 虚拟机网络适配器设置
在虚拟机设置中添加两个网络适配器,注意顺序:
网络适配器 1 (对应 ens33):选择 NAT 模式。
网络适配器 2 (对应 ens37):选择 桥接模式。
关键检查:确保两个适配器的 “已连接” 和 “启动时连接” 均已勾选。
3. Ubuntu 内部 IP 配置
编辑配置文件:sudo nano /etc/network/interfaces
以下代码均为自己的配置,大家可以分别在Ubuntu和windows使用ifconfig和ipconfig命令查看。
auto lo iface lo inet loopback # --- 网卡1:ens33 (NAT上网 & SSH) --- # 必须与 Windows 的 VMnet8 在同一网段 (例如 72 网段) auto ens33 iface ens33 inet static address 192.168.72.100 netmask 255.255.255.0 gateway 192.168.72.2 dns-nameservers 114.114.114.114 8.8.8.8 # --- 网卡2:ens37 (桥接连开发板) --- # 必须与 Windows 有线网口在同一网段 (例如 1 网段) auto ens37 iface ens37 inet static address 192.168.1.66 netmask 255.255.255.0 # 关键点:这里千万不要写 gateway,防止路由冲突!开发板 U-Boot 联网配置 (NFS/TFTP)
开发板必须通过 桥接网卡 (ens37) 与 Ubuntu 通信。
# 1. 必须处于同一网段 (1.x) setenv ipaddr 192.168.1.50 # 开发板 IP setenv serverip 192.168.1.66 # Ubuntu 桥接 IP (ens37) setenv gatewayip 192.168.1.1 # 物理网关 # 2. bootargs 配置 (NFS挂载) # 重点:root=/dev/nfs,且 nfsroot 和 ip 参数里的 IP 必须全是 1.x 网段 setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.66:/home/alientek/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off' # 3. 保存 saveenv遇到的经典“大坑”与解决方案
1. 坑:代码全对,就是 Ping 不通
现象:配置文件没问题,但 Ping 网关或主机全是
Destination Host Unreachable。原因 A:网卡顺序反了。(这是我搞了一下午终于排查出来的问题)
排查:VMware 设置里适配器 1 是桥接,但 Ubuntu 代码里把 ens33 当作 NAT 配。
解决:调整 VMware 设置,保证 适配器 1 = NAT,适配器 2 = 桥接。
原因 B:Windows 防火墙拦截。
解决:关闭 Windows 专用和公用网络防火墙,或卸载杀毒软件。
原因 C:网段没对上。
排查:Windows 的 NAT 网段变了(比如重置过网络),从 100 变到了 72,但 Ubuntu 里还写着 100。
解决:先在 Windows 查
ipconfig,以 Windows 为准修改 Ubuntu。
原因D:Windows下VMware服务启动失败
- 打开应用程序以及服务重启VMware相关的service
2. 坑:VSCode 连不上虚拟机
现象:IP 变了后 VSCode 报错,或者提示
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED。解决:
修改 SSH Config 中的
HostName为新 IP。删除 Windows 下
C:\Users\用户名\.ssh\known_hosts文件(清除旧指纹)。进阶:配置 SSH 公钥认证(
ssh-keygen+authorized_keys),实现免密登录。
3. 坑:SD 卡无法连接到虚拟机
现象:插入读卡器,VMware 弹窗点连接,但
ls /dev/sd*看不到sdb,Windows 总是抢占设备。解决(终极方案):
不要用 USB 连接模式。
在虚拟机设置里添加硬件 ->硬盘->使用物理磁盘-> 选择对应 SD 卡的 PhysicalDrive。
注意:需要以管理员身份运行 VMware。