在VMware虚拟分区安装GRUB,引导物理Ubuntu双系统
嘿,我刚好处理过类似的场景,这就带你一步步解决在VMware里启动物理Ubuntu分区的问题:
前提确认
首先得确认你已经完成了这些准备工作:
- 在VMware Workstation中创建了映射物理Ubuntu EXT4分区和交换分区的虚拟NVMe磁盘
- 已经创建了一块空白的虚拟磁盘(用来安装新的GRUB实例,作为虚拟机的引导盘)
步骤1:用Ubuntu Live CD启动虚拟机
先把Ubuntu 17.10的ISO镜像挂载到VMware虚拟机,启动后选择「试用Ubuntu」进入live环境——咱们需要在这里操作分区和安装GRUB。
步骤2:识别并挂载物理Ubuntu分区
打开终端,先搞清楚各个分区的位置:
- 输入
lsblk或者sudo blkid,找到你的物理Ubuntu根分区(EXT4格式,一般是/dev/nvme0n1pX,X是分区编号),还有你刚创建的空白虚拟磁盘(VMware里通常会识别为/dev/sda这类设备)。
然后创建挂载点并挂载根分区:
sudo mkdir /mnt/ubuntu-root sudo mount /dev/nvme0n1pX /mnt/ubuntu-root
因为你的系统是GPT分区表,大概率是UEFI模式,所以还要挂载物理磁盘上的EFI系统分区(FAT32格式,一般是 /dev/nvme0n1pY):
sudo mkdir /mnt/ubuntu-efi sudo mount /dev/nvme0n1pY /mnt/ubuntu-efi
步骤3:准备虚拟磁盘的引导分区
如果你的空白虚拟磁盘还没分区,先给它创建一个EFI分区(UEFI模式下必需):
- 输入
sudo gdisk /dev/sda进入分区工具 - 按
n创建新分区,分区类型选EF00(EFI系统分区),分配足够的空间(至少100MB就行) - 按
w保存分区表
然后挂载这个虚拟的EFI分区:
sudo mkdir /mnt/virtual-efi sudo mount /dev/sda1 /mnt/virtual-efi
步骤4:安装GRUB到虚拟磁盘
现在把GRUB实例安装到虚拟磁盘上,同时关联物理Ubuntu的根分区:
sudo grub-install --target=x86_64-efi --efi-directory=/mnt/virtual-efi --bootloader-id=VMware-Ubuntu --root-directory=/mnt/ubuntu-root
参数解释:
--target=x86_64-efi:适配UEFI系统的GRUB版本--efi-directory:指定虚拟磁盘EFI分区的挂载点--bootloader-id:给这个GRUB实例起个独特名字,方便后续识别--root-directory:告诉GRUB物理Ubuntu系统的根分区位置
如果你的系统是Legacy BIOS模式(虽然GPT一般配UEFI,但还是提一下),用这条命令:
sudo grub-install --target=i386-pc /dev/sda --root-directory=/mnt/ubuntu-root
步骤5:生成GRUB配置文件
安装完GRUB后,得生成配置文件让它能识别并引导物理Ubuntu:
sudo grub-mkconfig -o /mnt/virtual-efi/EFI/VMware-Ubuntu/grub.cfg
这条命令会自动扫描系统里的可引导分区,生成对应的启动项。
步骤6:卸载分区并启动虚拟机
先把挂载的分区都卸载,避免数据损坏:
sudo umount /mnt/ubuntu-root sudo umount /mnt/ubuntu-efi sudo umount /mnt/virtual-efi
然后弹出Ubuntu Live CD镜像,重启虚拟机——现在虚拟磁盘上的GRUB应该能正常引导你的物理Ubuntu系统了。
额外提醒
- 记得在VMware的虚拟机设置里,把空白虚拟磁盘的启动顺序调到最前面,这样虚拟机才会优先加载这个GRUB实例。
- 操作时一定要仔细区分物理磁盘(
nvme0n1)和虚拟磁盘(sda),别误改了真实双系统的引导分区!
内容的提问来源于stack exchange,提问作者Francis Straccia
相关产品推荐
相关产品推荐

