3. 虚拟机软件安装与配置:VMware Workstation / VirtualBox 安装、网络模式选择(NAT/桥接)

做嵌入式驱动开发,绕不开虚拟机。说白了,我们得在 Windows 上跑 Linux,或者反过来。我见过不少新手,直接在物理机上装双系统,来回切换麻烦不说,一不小心还把引导搞坏了。所以,虚拟机是首选。

这一章,我们就来搞定虚拟机环境。我会把 VMware Workstation 和 VirtualBox 都讲一遍,再重点聊聊网络模式——这个坑,我当年可没少踩。

3.1 为什么需要虚拟机?

你想想看,驱动开发要编译内核、调试硬件、烧写固件。这些操作如果在主力机上直接搞,一旦系统崩了,工作全废。虚拟机的好处就是:

  • 隔离性:虚拟机里的系统随便折腾,宿主机不受影响
  • 快照功能:搞砸了,一键恢复。我习惯在装好工具链后打个快照
  • 跨平台:Windows 上跑 Linux,macOS 上跑 Windows,都行
我的习惯:每完成一个关键步骤(比如装好交叉编译链、配好 NFS),就拍一张快照。这样后面出问题,回退成本几乎为零。

3.2 VMware Workstation 安装

VMware Workstation Pro 是收费的,但功能确实强。个人学习可以用 Player 版,免费。我工作中一直用 Pro 版,因为它的快照管理和网络配置更顺手。

安装步骤

  1. 去 VMware 官网下载安装包(Windows 或 Linux 版本)
  2. 双击运行,一路 Next。注意勾选「增强型键盘驱动程序」——这个对调试有用
  3. 输入许可证密钥(Pro 版需要),或者选「试用 30 天」
  4. 安装完成后,重启电脑
注意:安装时如果提示需要开启 CPU 虚拟化技术(VT-x/AMD-V),请进 BIOS 开启。我曾经在一台老笔记本上折腾了半天,才发现 BIOS 里虚拟化是关着的。

3.3 VirtualBox 安装

VirtualBox 是 Oracle 开源的,完全免费。功能上比 VMware 弱一些,但胜在轻量、跨平台。我个人在个人项目里常用它。

安装步骤

  1. 从 VirtualBox 官网下载对应平台的安装包
  2. 安装时,会提示安装网络驱动——这个必须装,否则后面 NAT 和桥接用不了
  3. 安装完成后,建议再下载「Oracle VM VirtualBox Extension Pack」,它支持 USB 3.0、磁盘加密等高级功能

VMware vs VirtualBox 怎么选?

对比项 VMware Workstation VirtualBox
价格 收费(Pro)/ 免费(Player) 完全免费
性能 更优,3D 加速好 一般,轻量级
快照管理 强大,支持树状快照 基础,线性快照
网络模式 NAT、桥接、仅主机、自定义 NAT、桥接、仅主机、内部网络
适合场景 生产环境、复杂网络调试 个人学习、轻量开发

3.4 网络模式选择:NAT vs 桥接

这是虚拟机配置里最容易让人迷糊的地方。我刚开始做驱动开发时,选了 NAT 模式,结果板子死活连不上虚拟机。后来才搞明白——网络模式没选对。

我们先看一张图,把两种模式的结构理清楚。

虚拟机网络模式对比:NAT vs 桥接 虚拟机网络模式对比:NAT vs 桥接 NAT 模式 宿主机 (Windows) 虚拟机 (Linux) NAT 网关 外部网络 NAT 特点 • 虚拟机通过宿主机 IP 访问外网 • 外部设备无法直接访问虚拟机 • 适合仅需上网、不需外部连接 桥接模式 宿主机 (Windows) 虚拟机 (Linux) 虚拟交换机 外部网络 桥接特点 • 虚拟机与宿主机在同一网段 • 外部设备可直接访问虚拟机 • 适合 NFS、TFTP、SSH 调试

NAT 模式

NAT 模式下,虚拟机通过宿主机共享上网。宿主机相当于一个路由器,虚拟机在它后面。外部设备看不到虚拟机,虚拟机也暴露不了自己。

适用场景:

  • 虚拟机只需要上网下载软件包、更新系统
  • 不需要外部设备(如开发板)直接连接虚拟机
  • 公司网络环境复杂,不方便申请独立 IP
我的经验:刚开始学驱动时,我习惯用 NAT。因为只需要在虚拟机里编译代码,然后通过 U 盘拷到板子上。简单,省事。

桥接模式

桥接模式下,虚拟机直接连接到物理网络。它和宿主机是平级的,都有自己的 IP 地址。外部设备(比如开发板)可以直接 ping 通虚拟机。

适用场景:

  • 需要通过 NFS 挂载根文件系统到开发板
  • 用 TFTP 下载内核镜像到板子
  • 通过 SSH 从开发板登录虚拟机进行调试
我曾经踩过的坑:有次在公司用桥接模式,虚拟机 IP 和公司内网冲突了,导致整个部门断网。后来我学乖了——桥接模式下,最好手动设置静态 IP,避免 DHCP 分配冲突。

3.5 如何选择?一张表说清楚

需求 推荐模式 原因
仅上网、下载软件 NAT 配置简单,不占用局域网 IP
开发板通过 NFS 挂载虚拟机 桥接 需要同网段直连
用 TFTP 从虚拟机下载内核 桥接 开发板需要直接访问虚拟机
公司网络限制严格 NAT 避免网络策略冲突
多台虚拟机互相通信 桥接或仅主机 同网段方便互访

3.6 配置实战:以 VMware 为例

我以 VMware Workstation 为例,演示一下网络配置。VirtualBox 的操作类似,只是菜单名称略有不同。

NAT 模式配置

  1. 选中虚拟机,右键 -> 设置
  2. 选择「网络适配器」
  3. 在「网络连接」中,选择「NAT 模式」
  4. 启动虚拟机,用 ip a 查看,应该能看到一个 192.168.x.x 的地址

桥接模式配置

  1. 同样进入虚拟机设置
  2. 选择「桥接模式」,并指定要桥接到的物理网卡(有线还是无线)
  3. 启动虚拟机,用 dhclient 获取 IP,或者手动设置静态 IP

桥接模式静态 IP 配置示例(Ubuntu 20.04+)

# 编辑 /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

# 应用配置
sudo netplan apply

3.7 仅主机模式与内部网络

除了 NAT 和桥接,还有两种模式偶尔会用:

  • 仅主机模式:虚拟机只能和宿主机通信,不能访问外网。适合安全测试
  • 内部网络:虚拟机之间可以通信,但宿主机也访问不了。适合模拟隔离环境

这两种模式在驱动开发中不常用,但如果你做网络安全相关的驱动,可能会用到。知道有这么回事就行。

3.8 本章小结

虚拟机软件安装不难,关键是网络模式选对。记住一句话:只要开发板需要直接访问虚拟机,就用桥接;否则,NAT 更省心。

我个人的工作流是这样的:

  • 前期学习、编译内核 -> NAT 模式
  • 后期调试、挂载文件系统 -> 桥接模式

这样既避免了网络冲突,又能在需要时灵活切换。嗯,你按这个路子来,基本不会出大问题。