嵌入式开发必备:VirtualBox+Ubuntu双网卡配置全攻略
嵌入式开发起步VirtualBox Ubuntu 20.04 环境搭建从镜像选择到网络配置一次说清写在前面我准备从零再建一遍虚拟机把踩过的坑一次性写清楚。目标不是“装个 Linux 看看”而是搭一套能用于嵌入式 Linux 开发的环境能上网、能被宿主机 SSH、IP 稳定后续方便安装交叉编译工具链、NFS、TFTP、GDB 和 QEMU。目录一、为什么要选 Ubuntu 20.04 VirtualBox二、镜像怎么选三、VirtualBox 虚拟机创建四、网络配置这篇最核心五、嵌入式开发推荐方案双网卡六、安装 Ubuntu 时的关键点七、进入系统后确认网卡名八、配置 NAT 网卡上网九、配置 Host-Only 网卡固定 IP 给 SSH 用十、验证网络十一、开 SSH嵌入式开发基本操作十二、常见坑我帮你先踩了十三、最终结构十四、小结一、为什么要选 Ubuntu 20.04 VirtualBox嵌入式开发中我们常常需要在 Linux 环境编译 U-Boot、Kernel、Buildroot 或 Yocto用 NFS 给开发板挂载根文件系统用 TFTP 烧写镜像用 SSH 或 VS Code Remote-SSH 远程连接虚拟机写代码Windows 直接做这些有时并不顺手WSL 在某些场景下也不完全像一台开发板旁边的 Linux 服务器。因此可以考虑VirtualBox免费、轻量支持 Windows、macOS 和 LinuxUbuntu 20.04 LTS许多既有 SDK 和工具链以它作为测试或兼容环境软件包管理使用 APT⚠️维护状态提醒Ubuntu 20.04 LTS 的标准维护已于 2025 年结束。后续安全维护需要 Ubuntu Pro 的 ESM 等适用方案。新项目应优先评估仍处于标准维护期的 Ubuntu 版本本文适用于有版本兼容要求或维护旧环境的场景。选择 20.04 的原因通常是特定 SDK、交叉工具链或项目环境要求它不能据此认为所有嵌入式工具链在 20.04 上都兼容性最好。若使用 22.04 或更新版本操作思路相近但软件版本、包名和网络配置细节可能不同。二、镜像怎么选常见安装介质主要有 Server 和 Desktop镜像类型大小约适合谁Server1.4 GB✅嵌入式开发首选通常不安装桌面环境Desktop4 GB 以上需要图形桌面的场景Ubuntu Server 安装介质包含安装程序不等同于“网络安装 Mini ISO”。文件大小会随发行点版本变化。推荐下载可以从 Ubuntu 官方下载页或可信镜像站获取 Ubuntu 20.04 Server amd64 镜像。https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-live-server-amd64.iso下载后应核对官方发布的校验和。镜像可下载不代表该版本仍处于标准安全维护期。 嵌入式开发通常不需要桌面环境。Server 版占用较少后续可以按需使用apt install安装软件。三、VirtualBox 虚拟机创建新建虚拟机配置项推荐值说明名称ubuntu-embed可自定义类型Linux版本Ubuntu (64-bit)内存4096 MB最少 2048 MB编译内核建议 4 GB 或更多CPU4 核2 核起步硬盘类型VDI分配方式动态分配硬盘大小30 GB 起步Yocto 和 Buildroot 构建较占空间按项目需要增加❌ 不建议只分配 8 GB后续编译内核或根文件系统时很容易空间不足。VirtualBox 新建 Ubuntu 虚拟机的配置摘要显示内存 4096 MB、4 个处理器、30 GB 虚拟硬盘并启用了跳过无人值守安装。四、网络配置这篇最核心很多人在 VirtualBox 装完 Ubuntu 后会遇到能上网但宿主机连不上宿主机能连但换 Wi-Fi 后连接方式失效重启后 IP 变化SSH 配置需要跟着调整VirtualBox 三种网络模式NAT默认虚拟机可以访问外网宿主机通常不能直接通过 NAT 地址 SSH 进入虚拟机也可另行配置端口转发适合临时联网和安装软件包桥接Bridged虚拟机和宿主机处于同一局域网虚拟机通常由路由器分配独立 IP更换 Wi-Fi 或网线后IP 可能变化公司网络可能禁止桥接Host-Only仅主机虚拟机和宿主机可以通过专用网络通信默认不能通过该网卡访问外网可用于宿主机稳定连接虚拟机五、嵌入式开发推荐方案双网卡网卡 1NAT用于访问外网网卡 2Host-Only用于宿主机 SSH 连接这是适合多数本地开发场景的双网卡方案兼顾联网与稳定连接。虚拟机设置 → 网络网卡 1☑ 启用网络连接连接方式NAT网卡 2☑ 启用网络连接连接方式仅主机Host-Only网络界面名称选择 VirtualBox 创建的 Host-Only 网卡例如VirtualBox Host-Only Ethernet AdapterHost-Only 默认网段通常类似网段192.168.56.0/24 宿主机192.168.56.1 虚拟机192.168.56.100具体地址以 VirtualBox 的全局设定 → 网络 → Host-Only Networks中显示的配置为准。若启用了 Host-Only DHCP静态地址应避开 DHCP 地址池。使用 NAT Host-only 双网卡让虚拟机同时联网并接受宿主机连接。VirtualBox Host-Only 网络管理页面会显示宿主机网卡的地址与子网掩码。通过确认 Host-Only 网段可以为虚拟机预留一个不冲突的静态地址。网卡名称VirtualBox Host-Only Ethernet Adapter IPv4 地址192.168.56.1示例请以实际为准 子网掩码255.255.255.0六、安装 Ubuntu 时的关键点启动 Ubuntu Server 安装介质后使用文本向导选择语言服务器环境常选 English减少终端和路径本地化带来的差异键盘布局使用默认值或按实际键盘选择网络配置enp0s3通常是 NAT确认已通过 DHCP 获取地址enp0s8通常是 Host-Only安装时也可能通过 DHCP 获取地址可先使用该地址安装后如需固定 SSH 地址再配置静态 IP代理按需填写没有代理时留空镜像源使用安装程序提供的默认源或按需改为可信镜像站磁盘分区可选择Guided - use entire disk设置用户名和密码例如用户embed安装 OpenSSH Server建议勾选Install OpenSSH server其他软件包可先跳过后续手动安装等待安装完成并重启⚠️ 如果安装过程中卡在下载或更新步骤先确认 NAT 网卡已联网也可以跳过安装器中的更新进入系统后再检查软件源并运行sudo apt update。安装器已识别双网卡NAT 与 Host-only 均获取到地址Host-only 固定 IP 可在安装后配置。Ubuntu Server 存储配置界面。这里选择 VirtualBox 创建的 30 GB 虚拟硬盘作为安装目标并启用 LVM未开启磁盘加密。需要说明的是这里的“使用整个磁盘”仅针对虚拟机的虚拟硬盘不会影响宿主机的真实硬盘。安装 Ubuntu 时勾选 Install OpenSSH server登录用户则在安装过程中另行创建。七、进入系统后确认网卡名ipaddr你会看到类似网卡名称lo enp0s3 # 通常对应 NAT enp0s8 # 通常对应 Host-OnlyUbuntu Server 20.04 通常使用 Netplan 管理网络配置文件位于/etc/netplan/。请以实际网卡名和现有配置为准。八、配置 NAT 网卡上网如果 Ubuntu Server 安装时 NAT 网卡已联网安装器通常已经创建 DHCP 配置。查看现有文件ls-l/etc/netplan/sudocat/etc/netplan/*.yaml双网卡都使用 DHCP 时配置内容可能类似network:version:2ethernets:enp0s3:dhcp4:trueenp0s8:dhcp4:true如果安装后看到enp0s8为dhcp4: true表示 Host-only 网卡已经通过 DHCP 获得地址例如192.168.56.104网络可直接使用。此地址可能变化若接受当前地址可以保留 DHCP不必再配置静态地址。不要为了配置第二块网卡而覆盖整份安装器生成的文件。九、配置 Host-Only 网卡固定 IP 给 SSH 用如果希望 SSH 始终使用同一个地址可以将 Host-only 网卡改成静态 IP。先查看配置文件名并确认 VirtualBox 的 DHCP 地址池不包含准备使用的地址ls/etc/netplan/编辑其中包含enp0s8配置的现有 YAML 文件。下面以/etc/netplan/00-installer-config.yaml为例实际文件名以ls输出为准sudonano/etc/netplan/00-installer-config.yaml只将enp0s8的 DHCP 配置改为静态地址保留enp0s3的 DHCP 设置确保 NAT 仍负责外网访问。双网卡配置示例network:version:2ethernets:enp0s3:dhcp4:trueenp0s8:dhcp4:falseaddresses:-192.168.56.100/24请保留现有文件中其他必要配置不要整份照抄覆盖。Host-only 网卡不需要配置默认网关或 DNSNAT 网卡通常通过 DHCP 获取默认路由和 DNS。静态 IP 必须与 VirtualBox Host-only 网段一致且不在 DHCP 地址池内也不能与其他设备冲突。若当前地址是 DHCP 分配的192.168.56.104切换后应使用配置的静态地址192.168.56.100。先检查配置再应用sudonetplan generatesudonetplan try按提示确认配置后再检查地址ipaddr show enp0s8执行后应能看到192.168.56.100/24已绑定到enp0s8说明静态地址配置成功。若netplan try回滚请检查 YAML 缩进、文件权限、网卡名和地址配置是否正确。十、验证网络虚拟机内验证外网检查 NAT 网卡地址和默认路由ipaddr show enp0s3iproute分别测试外网 IP 连通和域名解析ping-c4www.baidu.com截图中可以看到域名解析成功并收到 4 次 ping 回复说明 DNS 解析和外网连通正常。如果域名无法解析检查 NAT 网卡通过 DHCP 获取的 DNS 和系统解析状态。Host-Only 网卡不应被当作外网 DNS 或默认路由通道。宿主机验证连通性在宿主机执行。若保留 DHCP请将地址替换为虚拟机当前获得的 Host-only 地址若已配置静态 IP则使用配置的地址本例为192.168.56.100ping 192.168.56.100能通表示 Host-Only 网络基本连通。若 ping 不通检查 VirtualBox Host-Only 网卡、虚拟机第二块网卡、IP 和子网掩码以及宿主机防火墙策略。某些防火墙会屏蔽 ICMP也可以直接测试 SSH 连接。在 Windows 宿主机 ping 通 Ubuntu 虚拟机的 Host-only 地址4 次请求均收到回复说明宿主机与虚拟机之间的 Host-Only 网络连通正常。十一、开 SSH嵌入式开发基本操作安装时勾选 OpenSSH Server 后服务通常已安装。检查状态sudosystemctl statusssh如果没有安装sudoaptupdatesudoaptinstall-yopenssh-serversudosystemctlenable--nowsshUbuntu 默认可使用 UFW 管理防火墙。建议只放行 SSH 服务不要直接关闭防火墙sudoufw allow OpenSSHsudoufwenablesudoufw status 在远程启用防火墙前先确认已放行 SSH并根据实际网络策略限制 SSH 来源。生产环境还应考虑密钥认证等措施。之后可以使用PuTTY、 Xshell、Terminal 或 VS Code Remote-SSH 连接地址192.168.56.100 端口22 用户embed或安装时创建的用户通过 PuTTY 登录 Ubuntu并确认 Host-only 网卡的静态地址。登录成功后可在终端执行ip addr show enp0s8确认地址为192.168.56.100/24以验证 SSH 连接和静态 IP 配置均正常。十二、常见坑我帮你先踩了问题常见原因排查方向装完没网NAT 网卡没获取到地址或默认路由异常检查 VirtualBox 网卡 1、ip addr和ip route宿主机 ping 不通Host-Only 网卡未配置或不在同一网段检查 VirtualBox 设置、Netplan 配置和防火墙也可测试 SSHSSH 连不上ssh服务未安装或未启动或防火墙未放行检查sudo systemctl status ssh和sudo ufw statussudo: command not found安装时创建的用户没有管理员配置或系统安装不完整使用可用管理员账户修复避免默认以 root 远程登录apt update慢或失败网络、DNS、镜像源或 ESM 配置问题先检查网络和源确认 20.04 的维护及订阅状态换 Wi-Fi 后连接失效使用桥接或局域网地址发生变化本机开发可使用 NAT Host-OnlyNetplan 配置后没生效YAML 缩进错误、网卡名不对或文件冲突使用空格缩进检查sudo netplan generate输出十三、最终结构宿主机 Windows / macOS └── VirtualBox └── Ubuntu 20.04 Server ├── enp0s3 : NAT → 外网地址由 DHCP 分配 └── enp0s8 : Host-Only → 宿主机 SSH示例192.168.56.100后续建议目录规划路径用途/home/embed/nfs_rootNFS 根文件系统/tftpbootTFTP 镜像目录/opt/toolchain交叉编译工具链~/linuxLinux 内核源码~/u-bootU-Boot 源码~/buildrootBuildroot 源码十四、小结如果你是嵌入式开发起步记住这 5 条就够了✅ 按项目兼容要求选择 Ubuntu 20.04 Server并留意其维护状态✅ VirtualBox 使用NAT Host-Only 双网卡✅ NAT 负责外网访问Host-Only 负责宿主机稳定连接✅ 桥接模式可用于特定网络环境不必作为默认方案✅ 安装后启用 SSH并按需安装基础开发工具下一篇预告《Ubuntu 20.04 上搭建嵌入式开发环境NFS TFTP 交叉编译工具链》如果这篇对你有帮助欢迎点赞收藏我们下篇见。

相关新闻

门店企微会话存档怎么做?红鹰工作手机平衡客保与过程管理

门店企微会话存档怎么做?红鹰工作手机平衡客保与过程管理

从第三方测评视角看,企业微信会话存档的选型难点,并不在于“能否存档”,而在于存档范围是否完整、管理动作是否可落地、合规边界是否清晰。尤其对线下获客、微信承接的门店型团队而言,客户资源往往沉淀在个人微信和工作微信中&…

2026/10/11 7:40:57 阅读更多 →
JMeter压测高频问题全解析:环境配置、脚本调试与报告生成实战指南

JMeter压测高频问题全解析:环境配置、脚本调试与报告生成实战指南

做性能压测两年多,JMeter 是我最常用的工具,几乎天天跟它打交道。刚入行那会儿踩坑踩到怀疑人生,环境变量配置不对启动报错、脚本跑完结果数据和自己想的不一样、断言写了半天就是不生效,这些问题看起来都不大,但每一项…

2026/10/11 7:40:57 阅读更多 →
600+ 个仓库怎么逛?我给 M-Robots 社区整理了一份“按用途找仓库“清单

600+ 个仓库怎么逛?我给 M-Robots 社区整理了一份“按用途找仓库“清单

先说一条这周的新动态:10 月 14 至 16 日,2026 人工智能产业大会将在济南开幕,开源鸿蒙(山东)数字科技有限公司会在这次大会上首发 M-Robots OS 3.0 Beta。也就是说,继 8 月华东分社区技术交流会之后&#…

2026/10/11 7:40:57 阅读更多 →

最新新闻

从代码规范到质量门禁:用impeccable标准打造可落地的工程检查体系

从代码规范到质量门禁:用impeccable标准打造可落地的工程检查体系

1. 一个词撑起一个项目:为什么“impeccable”值得单独拿出来做第一次看到有人拿“impeccable”当项目名,我脑子里蹦出来的不是词典释义,而是一个很具体的场景:代码评审时,有人提了一句“这个模块的边界处理不够 impecc…

2026/10/11 9:57:55 阅读更多 →
DeepSeek-R1本地部署实战:RTX 3060跑32B量化模型全链路指南

DeepSeek-R1本地部署实战:RTX 3060跑32B量化模型全链路指南

简介:本资源是一份面向开发者与AI技术爱好者的DeepSeek大模型本地化实践指南,聚焦低门槛部署、跨设备适配与生产级性能优化。内容覆盖从硬件选型(7B至32B模型在GTX 1060/RTX 4090等消费级显卡的实测配置)、Ollama极简部署&#xf…

2026/10/11 9:57:55 阅读更多 →
测试面试复盘:5年经验为何败给底层原理

测试面试复盘:5年经验为何败给底层原理

先说结论:5年测试经验,不代表面试能答得上技术问题。被裁后重新求职,我自以为手握几年项目经历,多少有点底气,结果第一次技术面就差点被问得当场红眼眶。不是面试官故意为难,而是那些问题全部戳在“我每天在…

2026/10/11 9:57:55 阅读更多 →
IEEE 802.16e移动WiMAX中LDPC编译码实现与标准合规验证

IEEE 802.16e移动WiMAX中LDPC编译码实现与标准合规验证

简介:本资源是一份面向通信工程专业高年级本科生及FPGA开发工程师的LDPC编码实践资料,聚焦IEEE 802.16e标准中LDPC码的硬件高效实现问题,解决传统编码方案预处理复杂、逻辑资源消耗大、实时性不足等关键瓶颈。资料以1个446KB的PDF文件呈现&am…

2026/10/11 9:57:55 阅读更多 →
Python汽车销售数据分析大屏:Pandas清洗+Flask+ECharts可视化系统

Python汽车销售数据分析大屏:Pandas清洗+Flask+ECharts可视化系统

简介:这是一套面向计算机及相关专业学生的Python汽车数据分析大屏可视化实战项目,专为期末大作业、课程设计及毕业设计场景打造,兼顾教学规范性与工程可运行性。资源包含完整可执行源码、详细文档说明及多阶段过程材料,经导师指导…

2026/10/11 9:57:55 阅读更多 →
Apache Beam Calcite SQL 标量函数完全指南:从比较运算到日期/字符串处理的完整参考

Apache Beam Calcite SQL 标量函数完全指南:从比较运算到日期/字符串处理的完整参考

【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam18/beam 点击查看 免费下载 Apache Beam 的 Calcite SQL 方言(Beam Calcite SQL&#xff…

2026/10/11 9:56:54 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →