解决VMware Ubuntu虚拟机扩容硬盘后无法开机的问题

在使用 VMware 运行 Ubuntu 虚拟机时,随着使用时间的增长,最初分配的磁盘空间可能变得捉襟见肘。VMware Workstation 提供了便捷的磁盘容量扩展功能,但许多用户在执行此操作后会遇到一个棘手的问题:虚拟机无法正常启动,常常卡在黑屏界面。

本文将详细介绍这个问题产生的原因,并提供一套行之有效的解决方案,帮助你安全地为虚拟机扩容并恢复正常使用。

1. 问题描述与原因分析

问题描述

在 VMware 的虚拟机设置中,选择硬盘设备并使用“扩展”功能增加磁盘容量后,重新启动 Ubuntu 虚拟机,系统无法进入登录界面,一直停留在黑屏状态。

引发原因

这个问题的根源在于,VMware 仅仅是扩大了虚拟磁盘文件(.vmdk)的“物理”容量,但位于虚拟机内部的操作系统(Ubuntu)并未自动识别这部分新增的空间。 操作系统内部的分区表仍然保持着扩容前的大小,导致系统在启动时无法正确处理这块未分配的“新领土”,从而卡住。

2. 解决方案

核心思路是:利用一个临时的“Live 系统”来启动虚拟机,然后在这个独立的环境中使用磁盘工具(如 GParted)来调整原系统的分区,将未分配的空间划分给现有分区。

3.1 准备工作:挂载 Live ISO

首先,我们需要一个 Ubuntu 的安装镜像文件(ISO)。最好使用与你当前系统版本一致的镜像。

  1. 在 VMware 中,打开无法启动的虚拟机的“虚拟机设置”。
  2. 选择 “CD/DVD (SATA)” 设备。
  3. 在右侧的“连接”部分,勾选“使用 ISO 映像文件”,然后通过“浏览”按钮选择你准备好的 Ubuntu.iso 文件。
  4. 务必勾选上方的“设备状态”下的“启动时连接”。

3.2 设置 BIOS 从光盘启动

接下来,需要让虚拟机优先从我们刚刚挂载的 ISO 镜像启动,而不是从有问题的硬盘启动。

  1. 启动虚拟机,并立刻、持续地按 F2 键,直到进入蓝色的 BIOS 设置界面。 (如果按 F2 没反应,请参考文末的解决方法)
  2. 进入 BIOS 后,使用键盘方向键 切换到 “Boot” 选项卡。
  3. 使用方向键 选中 “CD-ROM Drive”。
  4. 按住 Shift 键的同时按 = 键(通常在 Backspace 键旁边),将其移动到启动顺序的最顶端。
  5. F10 键保存设置并退出,在弹出的确认框中选择 “Yes” 并按 Enter

3.3 在 Live 系统中调整分区

虚拟机将从 ISO 镜像启动,你会看到熟悉的 Ubuntu 安装界面。

  1. 选择 “Try Ubuntu” (试用 Ubuntu) 进入 Live 桌面环境。
  2. 点击左下角的菜单图标,搜索并打开名为 GParted 的分区编辑器。
  3. 在 GParted 界面中,你会清晰地看到原有的分区以及一块标记为 unallocated (未分配) 的灰色区域,这就是我们扩容出来的空间。
  4. 通常,Linux 分区会包含一个扩展分区(如 /dev/sda2)和一个或多个逻辑分区(如 /dev/sda5)。你需要先调整外层的扩展分区,再调整内部的逻辑分区。
  5. 右键点击扩展分区(例如 /dev/sda2),选择 “Resize/Move”。
  6. 在弹出的窗口中,拖动滑块或直接输入数值,将该分区扩展至最大,使其完全包含未分配的空间,然后点击“Resize/Move”按钮。
  7. 接着,用同样的方法右键点击逻辑分区(例如 /dev/sda5),将其也扩展至最大。
  8. 完成所有规划后,点击工具栏上的绿色对勾 “√” 图标,应用所有操作。
  9. 操作完成后,关闭 GParted,然后关闭虚拟机。

3.4 恢复正常启动

最后一步是让虚拟机恢复从硬盘启动。

  1. 再次进入“虚拟机设置”,选择 “CD/DVD (SATA)”。
  2. 在“设备状态”中,取消勾选“启动时连接”。
  3. 现在,正常开启虚拟机。如果一切顺利,你的 Ubuntu 应该能够正常启动,并且磁盘空间也已经成功扩展。

4. 附录:无法通过F2进入BIOS怎么办?

有时候,虚拟机启动速度过快,导致我们来不及按下 F2 进入 BIOS。 这里有两种解决方法:

4.1 临时方法:强制下次启动时进入BIOS

  1. 关闭虚拟机,在你的电脑上找到该虚拟机文件所在的文件夹。
  2. 找到以 .vmx 结尾的配置文件,用记事本或其它文本编辑器打开。
  3. 在文件末尾添加一行代码:
    1
    bios.forceSetupOnce = "TRUE"
  4. 保存文件。下次启动虚拟机时,它会自动进入 BIOS 界面。注意,这个设置只生效一次,启动后会自动变为 FALSE

4.2 持续性方法:延长启动画面时间

如果你希望以后都能从容地进入 BIOS,可以延长启动画面的显示时间。

  1. 同样地,用文本编辑器打开 .vmx 文件。
  2. 在文件末尾添加以下代码,其中 “5000” 代表 5000 毫秒,即 5 秒。你可以根据需要调整。
    1
    bios.bootDelay = "5000"
  3. 保存后,你将有足够的时间在启动时按下 F2

希望这篇详细的教程能够帮助你解决虚拟机扩容带来的烦恼。