我在将 Linux 物理分区移植到 VDI 以在 VirtualBox 中运行它时遇到了一些麻烦。首先,Linux Mint Petra 与我的 Windows 7 位于同一硬盘上,我可以正常进行双启动。但后来我想将 Linux 分区移植到虚拟驱动器。
在移植之前,我尝试使用 EaseUS 调整其大小,我怀疑这可能是导致某些设置混乱的原因。但是,我成功地使用 EaseUS (PBD 文件) 备份了分区;将其转换为 VHD 文件,最后将 VHD 文件转换为 VDI。
现在,当我尝试从 VDI/VHD 启动时,出现错误:Missing operating system. FATAL: INT18: BOOT FAILURE
。
当我从 Linux ISO 启动时,我在分区部分看到以下内容:
如您所见,那里有两个设备:sda1 和 sda5;后者似乎与前者重叠,但事实并非如此。我可以确认 /dev/sda5 是双启动时的正确物理分区。
我尝试使用启动修复盘进行修复,但无济于事。
如何确保 VirtualBox 成功找到 OS 设备/分区并修复 /dev/sdXY 重叠?
干杯
答案1
好吧,在朋友的帮助下我解决了这个问题。出现问题时,我的物理分区位于一个 50gig 的 VDI 文件中,由于 OP 中提到的错误,该文件无法启动。驱动器上的已用空间为 20gig,其中包括我的 Linux 安装 + 我的文件。我不仅设法再次启动它,还在新的动态分配的 VDI 驱动器中将 50gig 分区的大小调整为 20gig。
为了解决这个问题,我创建了一个全新的虚拟机(我们称之为 hurrdurr),动态分配的最大驱动器大小为 35gig,然后我继续从安装 ISO 加载 Linux Mint。我使用超级用户加载了 Gparted(sudo gparted),并继续执行以下操作:
- 创建 512MB ext2 分区,标签为“boot”
- 创建了 8192MB 的交换分区,标签为“hurrswap”
- 使用剩余空间创建 28gig ext4 分区,标签为“derp”
然后,我在虚拟驱动器上安装了 Linux Mint。当它询问您要做什么时,例如擦除磁盘并安装 Mint/Ubuntu(这将擦除驱动器)/安装其他内容,选择其他内容。它将加载一个 Gparted 样式的部分,您可以在其中查看驱动器的分区。我双击“启动”分区,选中“格式”框并确保挂载点是/启动。然后对于交换区域,我保持原样(注意,我选择使用 8gig 交换区域,因为我在这台机器上有 8gig 的 RAM,并且通常最好将交换大小设置为与安装的 RAM 相等),对于我的 ext4 分区,我确保已选中格式框,并且挂载点为“/”。
我安装了 Mint,这有效地为我配置了启动、GRUB 和一切。现在是时候用我的旧安装覆盖新安装,因为这样 GRUB 就会知道在哪里启动!所以现在,在一个单独的 VM 中,我配置 VirtualBox 使用两个虚拟驱动器;大 50gig 分区和新安装的动态分配分区。我通过进入设置 -> 存储 -> 控制器 - IDE -> 添加硬盘来执行此操作。这使我能够选择另外两个 VDI 文件。然后我启动到这个单独的安装。
使用sudo fdisk -l我可以分别知道要加载哪个 /dev/sdWX 和 /dev/sdYZ 来挂载新的“derp”分区和我想要复制的分区。我使用了sudo mount /dev/sda5 /mnt/drv1
(我先创建了 drv1)和sudo mount /dev/sdb3 /mnt/drv2
(“derp”分区)。现在,您可以通过两种方式复制内容:一种是使用日,它会完全克隆你的分区,其中包含空白空间。但我使用了简单的复制命令cp从 50gig 分区传输我想要的数据 + Linux。我使用的命令是sudo cp -a /mnt/drv1/* /mnt/drv2/
-a,用于告诉 cp 传输所有文件,所有属性均完好无损。传输完成后,我只需启动我的 hurrdurr VM,然后 GRUB 就成功从我想要恢复的分区启动了!不仅如此,由于它是一个动态驱动器,所以它也只有 20gig。
因此从本质上来说(如果可以的话,请忽略):
- 创建具有正确分配分区的新虚拟机
- 安装损坏驱动器上的操作系统
- 启动一个可以访问损坏的虚拟驱动器和新安装的虚拟驱动器的虚拟机
- 挂载损坏的和新的分区
sudo cp -a
将文件转移到全新安装- 完毕。
我希望这能帮助像我这样的人。
干杯