ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

虚拟机创建与网络配置全攻略:从VMware到VirtualBox的实操指南

虚拟机创建与网络配置全攻略:从VMware到VirtualBox的实操指南 很多朋友问过我虚拟机怎么创建我一直没正儿八经写过。今天索性把完整的创建流程、网络配置还有我这些年踩过的坑全部摊开聊一次。先说明白一件事虚拟机不是“模拟器”不是装个软件玩玩就扔的东西。它本质上是在你的物理电脑宿主机里面通过 Hypervisor 层把 CPU、内存、磁盘、网卡这些硬件资源虚拟化出来跑一套完整独立的“客户机”操作系统。你可以在同一台机器上同时运行 Windows、Linux甚至可以跑老旧的 XP、Win7彼此互不干扰。开发环境隔离、测试有风险的软件、临时搭建实验网络、给客户演示产品它都能干而且干得很稳。这篇文章我会从“你到底要不要虚拟机”开始讲再到 VMware Workstation 和 VirtualBox 的完整建机流程然后专门花篇幅讲网络模式和多站点域名配置——这是本地开发和调试最容易卡住的地方。最后是常见问题速查表基本都是我实操中真实遇到过的你可以直接对照着排查。我建议你收藏这篇文章因为创建虚拟机只是第一步后面所有环节我都按时间线排好了跟着走不需要到处再去翻教程。1. 动手之前先搞懂虚拟化原理再决定用哪条路线1.1 虚拟化的核心逻辑宿主机、客户机与 Hypervisor虚拟化的概念听起来玄乎用一个生活化的类比就能讲明白。想象你有一套独栋别墅物理机那里面有客厅、卧室、厨房。虚拟机要做的事情就是在别墅内部用隔断墙划出几个独立套间每个套间有自己独立的门牌号、独立的厨卫设备和独立的装修风格。住进套间的人感觉自己是住在一套完整房子里但实际上大家共享的是同一栋别墅的水电和承重墙。这套“隔断体系”就是虚拟化层专业术语叫 Hypervisor。VMware Workstation、VirtualBox、Hyper-V、KVM 都属于 Hypervisor 的具体实现。虚拟出来的“套间”就是虚拟机VM也叫客户机真正提供硬件的这台电脑叫宿主机。理解这个结构很重要因为后面你遇到绝大多数的性能问题、兼容性问题往上追溯基本都是“资源争抢”或者“硬件抽象层不兼容”导致。比如你给虚拟机分配了 4 个 CPU 核心但宿主机实际只有 4 核那么虚拟机满载时宿主机自己就卡到没法用再比如你在 ARM 架构的 Mac mini M4 上去装 x86 驱动的 Windows 镜像装不上就是装不上这不是软件 bug是芯片指令集根本对不上。1.2 选型之前问自己三个问题不要上来就下载软件先花两分钟想清楚这三个问题能帮你省掉后面一半的折腾第一个问题你要跑的系统是 Linux 还是 Windows如果是跑 Linux 搞开发、搭服务器环境VirtualBox 完全够用免费、跨平台、没有授权压力。如果是跑 Windows 并且需要较高图形性能或者要跑一些依赖完整 DirectX 的软件VMware Workstation Pro 的优化更好兼容性也更出色。第二个问题你的宿主机配置有多少余量宿主机的内存最好不低于 16GB至少也得 8GB。给客户机分内存有个红线我个人习惯是你物理内存的一半以内比如 32GB 内存给虚拟机分 8GB 到 16GB再多就容易出现宿主机内存交换到磁盘整体卡顿指数直线上升。第三个问题这台虚拟机是一次性的还是长期要用的一次性的测试环境随便建用完直接删。长期要用的则要考虑磁盘位置、快照策略、网络固定 IP这些我下面都会讲到。1.3 主流虚拟机方案怎么选对比一下最常见的几个方案心里有个谱方案适用场景许可证类型优缺点VMware Workstation Pro本地开发、多系统测试、Windows 客户机商业授权个人学习可申请非商业免费版性能与兼容性表现好虚拟网络功能强大磁盘格式转换方便Oracle VirtualBox轻量使用、Linux 客户机、跨平台开源免费轻量、免费、安装包小3D 性能相对弱USB 透传偶尔要装扩展包Hyper-VWindows 专业版/企业版自带Windows 内置功能与 Windows 集成度高不适合普通桌面用户入门配置链路复杂KVMQEMULinux 物理机上的虚拟化开源免费性能接近原生主要在服务器环境有上手门槛如果你是第一次接触虚拟机我建议直接从 VMware Workstation 开始因为它的向导式创建流程把很多复杂参数封装得很好出错概率低。等你把虚拟机的磁盘、网络这些底层概念都摸熟了再切到 VirtualBox 或者 KVM会非常顺。2. VMware Workstation 创建虚拟机的完整实操流程2.1 安装前的环境检查BIOS 虚拟化、内存和镜像先说最容易翻车的一步。很多人把 VMware 装好了点“新建虚拟机”却发现无法启动或者在安装系统时直接蓝屏、卡死在开机 logo。十有八九就是因为宿主机 BIOS/UEFI 里的虚拟化开关没打开也就是常说的 VT-x/AMD-V。检查方法很简单。在 Windows 的任务管理器里切到“性能”标签页下方有个“虚拟化”状态如果显示“已启用”说明 CPU 虚拟化已经打开如果显示“已禁用”就需要重启电脑进入 BIOS 设置在 CPU Configuration 或 Advanced 菜单里找 Intel Virtualization Technology或 AMD SVM Mode设为 Enabled 后保存退出。这个开关不打开虚拟机就只能做极其缓慢的纯软件模拟Windows 客户机基本没法用。所以我每次帮同事排查虚拟机问题第一个动作就是让 Ta 看这个开关十次里面有三四次就是这个原因。另外两个检查项确认你下载的系统镜像ISO 文件是完整可用的。我建议用官方渠道下载不要用那些来路不明的精简版镜像尤其是 Windows 镜像精简版常常会删掉一些关键的驱动组件装完以后各种奇奇怪怪的问题接踵而来。再一个就是磁盘剩余空间默认如果装在 C 盘建议至少预留 40GB 给后续虚拟磁盘文件增长。2.2 新建虚拟机向导里的关键决策点安装完 VMware Workstation 后点击“新建虚拟机”选择“典型推荐”如果你是第一次操作不要碰“自定义”等看完我这篇文章再去碰它。下面是每个关键决策点我要划的重点选择客户机操作系统。向导会让你选“安装程序光盘映像文件ISO”或者“稍后安装操作系统”。我的建议是选“稍后安装操作系统”然后手动指定镜像理由后面说。在系统类型下拉菜单里要根据你下载的镜像来选择比如 Ubuntu 就选“Ubuntu 64 位”Windows 11 就选“Windows 11 x64”选错位数会导致系统无法安装。虚拟机名称和位置。名称随便取但位置不要放在默认的 C 盘。虚拟机磁盘文件.vmdk动辄几十 GB而且会随着使用增长放在系统盘会拖慢整个电脑。我习惯单独建一个目录比如 D:\VMs\UbuntuDev方便以后统一管理、备份和清理。固件类型。这里有个很容易被忽略的地方。如果你要装 Windows 11宿主机的 Windows 安装器会强制要求 UEFI 和安全启动而 Linux 发行版大部分情况下用 BIOS 或 UEFI 都能装。我通常会直接选 UEFI因为以后如果要调 Secure Boot、TPM 等特性UEFI 更符合现代系统要求。不过如果勾选了 UEFI 后引导失败可以退出新建流程把固件改成 BIOS 再试一次某些老旧 ISO 对 UEFI 支持不好。磁盘容量和拆分方式。建议容量至少 40GB如果你要跑数据库、编译大型项目或者搭建开发环境建议直接给到 100GB。关键在于“将虚拟磁盘存储为单个文件”还是“拆分成多个文件”。我推荐“单个文件”因为连续的大文件在宿主机上的 I/O 性能更好。拆分的唯一优势是方便你在 FAT32 文件系统上存放但对于现代 PC 来说这个场景基本上不存在。硬件配置调整。在向导中点击“自定义硬件”核心是内存、CPU 核数和网络适配器。内存我前面说了物理内存的一半以内处理器核心数给宿主机逻辑核心数的一半左右就够比如 8 核 16 线程就给 4 核网络模式暂时全选默认 NAT后面我专门讲。对于显卡除非你要在虚拟机里跑图形渲染或 3D 应用否则默认就够。2.3 为什么我建议“稍后安装操作系统”这里解释一下我的个人习惯。如果让向导直接加载 ISOVMware 会进入“简易安装”模式它会自动帮你执行安装流程减少交互。听起来很好但这个模式有几个问题它可能会强制接管系统语言、用户名和密码的设定导致你装完以后不知道它到底给你建了什么账号而且它默认会安装 VMware Tools 之外的一些额外工具拉长安装时间中途可能因为网络问题卡住。选择“稍后安装操作系统”以后你会在引导时看到虚拟机从光驱启动然后进入正常的手动安装过程。这样你能完全控制磁盘分区、用户名、时区等细节装出来的系统干干净净也更符合“以后要长期用”的定位。安装系统时的关键步骤我快速过一遍在 Ubuntu 安装界面选择中文简体作为安装语言。分区方案选“清除整个磁盘并安装 Ubuntu”这是虚拟机磁盘不需要担心物理数据损坏。创建用户时建议不要设置过于复杂的密码不然每次 sudo 和登录都够你烦心的。安装完成后重启正常会直接进入桌面。如果是装 Windows 10/11进入安装界面后选择“自定义仅安装 Windows高级”然后在磁盘选择页直接点击“新建”并应用系统会自动创建必要分区。如果遇到“Windows 无法安装到这个磁盘。选中的磁盘具有 MBR 分区表”说明虚拟磁盘还是 BIOSMBR 格式最好退回虚拟机设置关闭安全启动或者改用 UEFI 固件重新走一遍流程。装完之后的第一件事就是安装 VMware Tools。在 VMware 菜单栏“虚拟机”里点击“安装 VMware Tools”Ubuntu 桌面上会自动弹出一个虚拟光驱里面有一个 .tar.gz 包解压后执行安装脚本。VMware Tools 承担了两件事改善虚拟机显示分辨率的自动适配、宿主机与客户机之间的剪贴板共享和文件拖拽。不装它虚拟机就只是一个行动迟缓的远程桌面体验差一大截。3. VirtualBox 免费方案的创建细节3.1 VirtualBox 的适用范围与安装VirtualBox 是我给预算有限、或者只是临时跑个 Linux 环境的人推荐得最多的方案。它免费、开源支持 Windows、macOS、Linux 宿主机安装包不到 100MB。Oracle 家的这个软件虽然简单但可靠性经过了大量生产环境验证不是那种玩具级工具。下载时注意几点尽量从 VirtualBox 官网下载正式版不要用第三方打包的“绿色版”那种版本常会被杀软误报而且无法安装扩展包。下载完主程序后记得下载对应版本的“Oracle VM VirtualBox Extension Pack”。这个扩展包提供了 USB 2.0/3.0 设备透传、RDP 远程显示、主机网络摄像头透传等功能。安装方式是文件 - 全局设定 - 扩展 - 添加新包。在 Windows 上安装时安装向导会弹出一个警告说安装过程中网络适配器会短暂断开属正常现象直接点是继续别因为这个中断安装。3.2 创建 Ubuntu 虚拟机从新机到安装增强功能VirtualBox 新建虚拟机的入口很好找点击主界面“新建”会弹出向导。关键设置如下名称和类型。名称随意比如 UbuntuDev。类型选 Linux版本选 Ubuntu (64-bit)。如果你要装其他发行版就按实际发行版选VirtualBox 内置了很多预设参数比如 CentOS、Debian、Arch Linux 等。内存大小。这里的建议值和 VMware 类似但这个向导会给一个推荐范围并根据你的宿主机内存动态标注绿色、黄色、红色。我建议不要超过宿主机内存的一半默认如果低于 2048MB手动改到 4096MB编译和跑开发服务器会更宽裕。硬盘设计。选“现在创建虚拟硬盘”文件类型用 VDIVirtualBox 默认然后选“动态分配”还是“固定大小”。动态分配的意思是磁盘文件会随着使用逐步增长优点是省空间缺点是连续写入时可能产生碎片性能略差固定大小则是一开始就把磁盘空间足额占用性能更好、更稳定。我个人的取舍标准是如果你只是安装系统加跑几个服务选动态如果要做数据库实验或者跑 Docker磁盘写入频繁直接固定大小100GB 一了百了。设置里的网络。默认是 NAT这个模式装完系统就能上网适合大多数场景。后面我会详细讲网络模式先记住默认 NAT 就行。安装系统。在设置里的“存储”选项卡选中“控制器: IDE”下的“空”光驱在右侧分配“光盘”按钮展开后选“选择一个磁盘文件”加载 Ubuntu 的 ISO然后点击工具栏的“启动”。启动后正常进入安装界面。装完系统重启你还需要安装“增强功能”Guest Additions它对应 VMware 的 VMware Tools。在 VirtualBox 菜单栏的“设备”里点击“安装增强功能”Ubuntu 桌面上会出现一个挂载的光盘打开终端执行以下命令cd /media/$USER/VBox_GAs_* sudo sh ./VBoxLinuxAdditions.run如果提示缺少依赖先执行下面这条命令装齐编译工具链再跑sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r)安装完成并重启后你会发现两个明显变化虚拟机窗口可以随意拉伸分辨率自动适配宿主机和客户机之间的剪贴板可以互通了需要在虚拟机菜单栏的“设备 - 共享剪贴板”里选“双向”。这一步是很多人容易漏掉的漏掉以后就会反复来问我“为什么我的虚拟机不能复制粘贴”。4. 网络配置NAT、桥接、仅主机到底怎么选4.1 三种网络模式的原理一句话总结虚拟机创建好以后接下来几乎所有人都会遇到网络相关问题怎么让虚拟机上网怎么让宿主机访问虚拟机里的网站怎么给虚拟机设置固定 IP这三个问题其实都指向同一个核心——网络模式选型。VMware 和 VirtualBox 都提供三种基本网络模式NAT、桥接Bridged、仅主机Host-Only。NAT网络地址转换。虚拟机被放在一个由虚拟软件自己构建的局域网里通过宿主机共享 IP 地址上网。宿主机可以访问虚拟机虚拟机可以访问外网但外部网络无法直接访问虚拟机。它的类比是你家宿主机作为一个出口客厅里的客人虚拟机用你家的门牌号收发快递外面的人不知道家里住了几个客人。好处是配置最简单开机就能上网坏处是宿主机之外的其他设备无法访问虚拟机。桥接Bridged。虚拟机的虚拟网卡被直接“接到”宿主机所在的物理网络上相当于这台虚拟机就是网络中的一台独立电脑有自己的 IP 地址和宿主机平级。外部设备可以直接访问虚拟机虚拟机和宿主机也能互相访问。类比是客人有自己的身份证和门牌号直接和外界通信。适合做服务器调试、局域网联机测试。仅主机Host-Only。虚拟机和宿主机之间组建一个封闭网络虚拟机不能访问外网。适合做内网安全实验、隔离环境测试。4.2 宿主机访问虚拟机网站的具体配置开发中最常见的场景是你在虚拟机里用 Nginx 跑了一个网站想在宿主机浏览器里打开它调试。如果你用的是 NAT 模式宿主机可以通过虚拟机的 IP 来访问。问题来了虚拟机 IP 在哪看在虚拟机里执行ip addr show找到类似192.168.x.x或10.0.x.x的地址就是虚拟机的 IP。在宿主机浏览器地址栏直接输入这个 IP加端口就行比如http://192.168.56.101:8080。如果你发现宿主机访问不了先检查虚拟机防火墙sudo ufw status如果状态是 active执行sudo ufw allow 8080放行对应端口。然后是 Nginx 是否监听正确sudo ss -tlnp | grep nginx看到0.0.0.0:8080或*:8080才说明监听正常。如果是127.0.0.1:8080那就只能本机访问你需要修改 Nginx 配置中的listen地址。4.3 修改虚拟机的 IP 地址从 DHCP 到固定 IP虚拟机默认从虚拟软件的 DHCP 服务获取动态 IP重启后可能发生变化这对开发环境是个灾难。你写死了配置文件里的 IP第二天它变了服务全部都连不上。所以建好虚拟机后我建议第一时间把 IP 改成固定。在 Ubuntu Server 或 Ubuntu 桌面上网络配置现在都走 Netplan。配置文件一般在/etc/netplan/目录下文件名可能是00-installer-config.yaml。用编辑器打开sudo nano /etc/netplan/00-installer-config.yaml原本的内容大概是这样的network: ethernets: enp0s3: dhcp4: true version: 2改成固定 IP 时注意要选对网卡名enp0s3在不同虚拟化软件中可能显示为ens33、eth0等通过ip addr确认。修改后内容为network: ethernets: enp0s3: dhcp4: false addresses: - 192.168.56.102/24 routes: - to: default via: 192.168.56.1 nameservers: addresses: - 192.168.56.1 - 8.8.8.8 version: 2这里有个关键点要搞清楚192.168.56.1通常是 VMware/VirtualBox 仅主机或 NAT 网络里宿主机的虚拟网关地址。如果是 NAT 模式默认网关一般也是虚拟网卡的网关比如 VMware 的192.168.x.1X 取决于 NAT 网段VirtualBox 的 NAT 网关通常是10.0.2.2。你可以在宿主机上执行vmnetcfgVMware 命令行工具或查看虚拟网络编辑器确认网段也可以在虚拟机里先看一眼ip route显示的default via地址照着填就不会错。修改保存后执行sudo netplan apply执行完再跑ip addr确认地址生效然后从宿主机ping一下这个 IP能通就说明固定 IP 配好了。4.4 本地 虚拟机多端口 Nginx 多站点自定义域名配置这个场景我实际用得很多。有时候你本地要在同一台开发机上跑好几个前后端项目每个项目想要一个独立的域名端口还不一样总记端口号很痛苦。我的做法是宿主机 hosts 文件里做域名映射虚拟机里 Nginx 按域名和端口分发。先编辑宿主机的 hosts 文件。Windows 路径是C:\Windows\System32\drivers\etc\hostsLinux/macOS 是/etc/hosts用管理员权限打开追加几行192.168.56.102 dev.blog.com 192.168.56.102 dev.api.com 192.168.56.102 dev.app.com这里的192.168.56.102是上一节配好的虚拟机固定 IP。改完 hosts 以后浏览器访问dev.blog.com:8080就会请求到虚拟机。然后在虚拟机 Nginx 里创建多个站点配置。以 Ubuntu 上安装的 Nginx 为例新建配置文件sudo nano /etc/nginx/sites-available/dev.blog.com.conf内容如下server { listen 8080; server_name dev.blog.com; root /var/www/blog; index index.html index.php; location / { try_files $uri $uri/ 404; } }对应的 API 站点监听另一个端口比如 8081server { listen 8081; server_name dev.api.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }配置文件的启用方式是建立软链接把配置文件放入sites-enabledsudo ln -s /etc/nginx/sites-available/dev.blog.com.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/dev.api.com.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxnginx -t用来校验语法如果配置有问题它会明确告诉你错在哪一行这是我最常用的命令之一每次改完配置先跑一遍再 reload能避免服务直接挂掉的尴尬。完成以上步骤后宿主机的浏览器里输入dev.blog.com:8080和dev.api.com:8081就能分别访问到不同的站点。如果你想让域名不带端口也生效可以保守一点就在 Nginx 配置里listen 80;然后用不同域名区分80 端口完全可以共用。80 端口共用多个域名的前提是server_name不一样Nginx 会根据请求里的 Host 头来分发这也是 Server Name 这个概念的用处所在。5. 创建后的必修课快照、克隆、磁盘扩容与性能优化5.1 快照你的后悔药快照是虚拟机最打动我的功能没有之一。它可以把虚拟机的当前状态完整保存下来包括系统文件、软件配置、数据内容。出问题了随时回滚到任意一个快照状态。使用场景太多了。比如我要在虚拟机里测试一个来路不明的软件包害怕它把系统搞坏先创建一个快照比如升级系统到新版本之前创建一个快照升级出问题直接回滚再比如给客户演示完一个环境后恢复快照让系统回到初始状态。VMware 里右键虚拟机 - 快照 - 拍摄快照输入快照名称和描述点确定。VirtualBox 里在管理器界面选中虚拟机 - 备份 - 生成备份。注意点快照不是无限免费的它会占用宿主机磁盘空间。尤其是频繁写操作的虚拟机比如数据库虚拟机每做一个快照磁盘差异文件会越滚越大到后面可能多出几十 GB 空间占用。建议快照数量保持在一个之内用完了就清理掉旧的。5.2 克隆批量交付环境的利器克隆是从一个现有虚拟机复制出一个或多个完全相同的新虚拟机。如果你是做课程培训、批量测试环境搭建克隆能极大节约时间。VMware 提供两种克隆方式“创建链接克隆”和“创建完整克隆”。链接克隆只保存和原始虚拟机的差异部分创建速度快占用空间小但原虚拟机或快照如果被删除克隆的虚拟机就失效了。完整克隆是真正独立的副本和原虚拟机毫无关联自由使用不受限。我的建议永远是选择完整克隆虽然耗时可能长一点但可靠性更重要。VirtualBox 中克隆也很方便右键要克隆的虚拟机 - 复制向导里有“初始化 MAC 地址”的选项如果你的克隆环境要参与网络测试一定要勾选它因为 MAC 地址一样会导致网络冲突。5.3 磁盘扩容小磁盘不够用怎么破磁盘空间不够是虚拟机最常被吐槽的点。其实解决方法很简单扩充虚拟磁盘容量 操作系统内分区扩容两块配合着来。VMware 中虚拟机设置 - 硬盘 - 工具磁盘工具- 扩充输入目标容量大小。VirtualBox 中则是在设置 - 存储 - 选中硬盘 - 右侧属性里输入新大小。注意扩充操作要在虚拟机关机状态下进行。扩充虚拟磁盘以后操作系统内部并不会自动识别到新空间。你需要在客户机里对分区做扩容。以 Ubuntu 为例先查看分区情况sudo lsblk sudo growpart /dev/sda 1 sudo resize2fs /dev/sda1如果提示没有 growpart 命令先安装 cloud-guest-utilssudo apt install cloud-guest-utils扩容完成后用df -h看一眼文件系统使用情况确认新容量已经生效。这里有个关键点如果你用的磁盘分区不是 LVM 而是传统的 ext4 普通分区resize2fs命令一般能直接处理如果是 LVM那还要走pvresize、lvextend那些命令逻辑稍复杂遇到再单独处理。Windows 虚拟机扩容会简单很多在虚拟机里右键“此电脑” - 管理 - 磁盘管理找到未分配的新空间右键要扩展的分区选“扩展卷”一路下一步就行。5.4 性能优化的几个实用技巧预分配内存。在 VMware 中把“内存”设置为“预分配所有虚拟机内存到物理内存”这样虚拟机运行时内存不会与宿主机虚拟内存交换能显著减少卡顿。缺点是虚拟机吃多少宿主机的物理内存就得一直占用多少。关闭客户机不必要的服务。Ubuntu 虚拟机如果只是做开发服务器可以关闭桌面环境用sudo systemctl set-default multi-user.target设置成命令模式启动内存占用能降一截Windows 虚拟机则关闭 Windows Defender 的实时保护可能不推荐但可以关闭视觉效果。虚拟磁盘选择 SCSI 而非 IDE。VMware 和 VirtualBox 都支持多种控制器接口尽量选 SCSI/SATA 而不是 IDE。IDE 是旧时代的接口协议在传输效率上有明显瓶颈尤其是大文件拷贝时能感觉到差距。考虑使用 SSD 宿主机。虚拟机的磁盘 I/O 完全依赖宿主机的物理磁盘性能HDD 上跑虚拟机体验很难好SSD/NVMe 能让你少很多耐心消耗。5.5 把虚拟机迁移到 U 盘或移动硬盘有些场景下你希望能把做好的虚拟机随身携带插到另一台电脑上直接启动这就是热词里“虚拟机转 U 盘”这类需求的由来。但我先泼一盆冷水虚拟机文件直接拷到 U 盘插别的电脑未必能直接跑因为虚拟硬件配置CPU 指令集、硬盘控制器等不一定兼容。如果你想做的是“把 U 盘作为虚拟机的启动介质”可以在 VMware 中使用“工具 - 映射虚拟磁盘”把 vmdk 磁盘文件映射成一个宿主机盘符然后用 DiskGenius 这类磁盘工具把分区内容克隆到 U 盘。操作流程大致是先映射虚拟磁盘再用 DiskGenius 的“克隆分区”功能把虚拟磁盘里的系统分区克隆到 U 盘完成后删除映射。注意U 盘做系统启动盘之前它的原有数据都会被清空务必先备份。不过这个操作有一个前提克隆后的 U 盘只能在物理机上启动它脱离虚拟机环境严格来说已经不是“虚拟机迁移”了而是“把虚拟机的系统搬进真实硬件”。如果你的目的是在另一台电脑的虚拟机软件里继续用不如直接把整个虚拟机目录拷过去用软件里的“打开”功能加载 vmx/vbox 文件这个操作才是正路。6. 常见问题与排查实录6.1 虚拟机安装系统蓝屏、开机蓝屏蓝屏是对新手打击最大的一个问题但其实很容易分类排查。“安装 Ubuntu 时蓝屏”这个问题有点特殊很多时候不是硬件问题而是 ISO 镜像下载不完整或者虚拟机内存分配不足。我建议先把虚拟机的内存调到 4GB 以上显示显存调到 128MB 或以上。另外有些发行版在安装时默认加载了显卡驱动在虚拟机环境里会冲突可以尝试在 GRUB 引导菜单里按 E 进入编辑在quiet splash后面加一行nomodeset然后按 CtrlX 引导系统等系统装完再安装显卡驱动。“VMware 启动虚拟机蓝屏”通常出现在 Windows 宿主机上原因是 VMware 的虚拟化驱动和 Windows 的安全机制或旧版其他虚拟机软件冲突。我把能直接解决问题的套路列一下更新 VMware 到最新版本。关闭 Windows 的“基于虚拟化的安全VBS”功能方法设置 - 隐私和安全性 - Windows 安全中心 - 设备安全性 - 内核隔离关闭内存完整性。检查 BIOS 里 Hyper-V 相关设置如果 Windows 自带 Hyper-V 和容器功能处于开启状态需要到“启用或关闭 Windows 功能”里取消 Hyper-V 和 Windows 虚拟机监控程序平台再重启。6.2 VMware 无法连接到虚拟机和创建虚拟机闪退“VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录、以及访问该程序使用的所有临时文件。”这条报错信息我在多个版本的 VMware 里都遇到过尤其常见于双击虚拟机文件但 VMware 主程序没启动、或权限设置为非管理员用户时。典型解决路径关闭所有 VMware 窗口打开任务管理器确认 vmware.exe 和 vmware-vmx.exe 都没残留如果有结束进程。右键 VMware Workstation 图标选择“以管理员身份运行”很多权限类问题直接就消失了。检查虚拟机的目录权限虚拟机所在的整个顶层目录要为“完全控制”尤其是当你把虚拟机放在 D 盘自定义目录时默认用户权限可能不足。如果还不行进入“服务”WinR 输入 services.msc找到 VMware 相关的几个服务如 VMware Authorization Service确认它们处于“正在运行”状态。没运行的话右键启动并设为自动。清理临时目录删除C:\Users\你的用户名\AppData\Local\Temp下的 VMware-* 文件。创建虚拟机过程中闪退的问题排序一下原因大概率是新版本 VMware 的 UI 问题尝试更新显卡驱动或者关掉 VMware 菜单栏“编辑 - 首选项 - 设备 - 已连接的 USB 设备自动连接”的选项再有一个常见原因是你下载的镜像文件路径中带中文或带空格双叠加权限问题最后就是把虚拟机的硬件兼容性调低一档右键虚拟机 - 管理 - 更改硬件兼容性选择 Workstation 16.x。6.3 无法启用虚拟机平台这个报错通常出现在 Windows 上当你尝试在安装第三方虚拟机软件后或在 Windows 沙盒/WSL2 功能需要“虚拟机平台”时。控制面板 - 程序和功能 - 启用或关闭 Windows 功能 - 勾选“虚拟机平台”和“适用于 Linux 的 Windows 子系统”重启即可。如果勾选后重启报代码 0x800F说明你的 Windows 更新服务有问题先用 Windows 更新把系统补丁更新完整。值得注意的是如果你同时安装了 Hyper-V 和 VMware/VirtualBox两者会互相干扰。Hyper-V 一旦启用它会霸占 CPU 的虚拟化指令VMware 会退回到相对低效的模拟模式虚拟机的性能会大幅下降。解决办法就是二选一或者把 Hyper-V 功能关闭才能恢复 VMware 的性能。6.4 VNC Viewer 鼠标变成小点无响应这个问题我在跑一些服务器版 Linux 虚拟机时遇到过。启动 VNC Viewer 连接后鼠标指针变成一个小点点击没有反应。原因基本是 VNC 服务端和客户端的编码格式不兼容尤其在虚拟机的 VirtualBox 增强功能没有正确安装时特别明显。排查顺序确认增强功能已经安装重启虚拟机。如果增强功能装不上可以去 VNC 客户端的“选项 - 编码”里把“自动选择”关掉手动选择“Raw”或“Tight”编码。如果鼠标消失但系统还能响应可以切换到宿主机终端重启 VNC 服务比如sudo systemctl restart vncserver。这个问题更多是“能用但不好用”的级别不影响数据但如果要长期用 VNC 远程操作我还是建议优先修好增强功能或换成 SSH X11 转发来操作图形程序。6.5 主机和虚拟机不能复制粘贴剪贴板不通是安装完系统后第一个能感知到的体验落差。如果是 VMware先确认 VMware Tools 安装成功然后在“虚拟机 - 设置 - 选项 - 客户机隔离”里勾选“启用拖放”和“启用复制粘贴”。如果是 VirtualBox则是在“设备 - 共享剪贴板”里选择“双向”。两个软件都确认装好对应的增强组件以后如果还不通就很可能是客户机系统的桌面环境和剪贴板进程冲突。Ubuntu 上可以尝试在终端里重启wl-paste或xclip相关会话有时候切换一下窗口焦点就能恢复。我自己的习惯是重启客户机系统一次80% 的情况能解决。6.6 CentOS 宿主机内容不能复制到虚拟机里面这个问题单独提出来因为它跟上面的场景反过来了。宿主机是 CentOS/物理 Linux 机器。如果你想从 CentOS 宿主机复制文件到 VMware 虚拟机最稳妥的方式是配置共享文件夹VMware 虚拟机设置 - 选项 - 共享文件夹 - 添加宿主机目录然后在客户机里挂载。Ubuntu 客户机中的挂载路径通常在/mnt/hgfs下如果没有显示需要执行sudo apt install open-vm-tools open-vm-tools-desktop sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other如果是 VirtualBox 客户机则是在设置 - 共享文件夹里添加宿主机的目录然后执行mount -t vboxsf 共享名 /mnt/共享名。更通用、更省事的办法其实是直接用 SSH/SCP。在宿主机上执行scp 文件 用户名虚拟机IP:/目录只要你开着 SSH 服务怎么都能传过来完全绕开图形拖拽的兼容性问题。6.7 Linux 物理机如何挂载虚拟机磁盘如果你直接在 Linux 物理机上跑 KVM/QEMU或者你想在宿主机直接读取一个虚拟磁盘里的文件而不是启动它可以通过guestfish或qemu-nbd这类工具挂载。以vmdk磁盘为例先确认宿主机的 nbd 模块已加载sudo modprobe nbd max_part16 sudo qemu-nbd -c /dev/nbd0 /path/to/disk.vmdk sudo fdisk -l /dev/nbd0 sudo mount /dev/nbd0p1 /mnt/vmdisk其中/dev/nbd0p1是虚拟磁盘的第一个分区要根据fdisk -l看到的实际分区号来定。用完之后记得先卸载再断开连接sudo umount /mnt/vmdisk sudo qemu-nbd -d /dev/nbd0这套方法在做故障排查或抢救虚拟机数据时非常有价值而且不用启动虚拟机本身就能直接读写里面的文件效率极高。聊到最后我还是想强调一句实操层面的体会创建虚拟机这件事技术上不难难的是建好之后长期稳定地维护它。我踩过最多的坑往往不是安装阶段而是网络不通、磁盘空间不够、快照忘了清理这些“看起来很小”的事。所以我的习惯是每次创建新虚拟机之前先写一个简单的备忘清单记录做了什么配置、默认密码是什么、网络号段是多少、快照做了哪一版坚持下来会帮你省掉非常多重复排查的时间。另外如果你只是临时要用虚拟机跑一下某个软件用完就可以把整个虚拟机的目录删掉不用担心污染宿主机环境——这也是虚拟机最有魅力的地方之一试错成本极低想怎么折腾都行。可要是你打算长期用还是花点心思在初始化阶段把基础扎稳后面你会感谢现在的自己。
返回列表