使用物理硬盘分区作为 VirtualBox VM 和可引导分区

Mas*_*gol 11 partitioning dual-boot virtualbox hard-drive

是否可以使用物理硬盘分区安装带有 VirtualBox 的 Ubuntu 操作系统,然后使其可启动?

我想要的是我在 VirtualBox 中安装的 Ubuntu 操作系统可以从物理机和 VirtualBox VM 访问和启动(当然不是同时)。因此,有时我可以将其作为虚拟机启动,有时我可以将其作为真机启动(作为与我的主要操作系统 Linux Mint 一起进行的双启动)。

在阅读了一些关于此的文章后,这是链接:

  1. 从虚拟机 (VM) 迁移到物理系统
  2. 使用来自来宾的原始主机硬盘
  3. 将物理硬盘与 VirtualBox VM 结合使用
  4. VirtualBox:使用物理分区作为虚拟驱动器

我想我可以做到,但我不确定我的问题的结果。据说,如果过程中出现问题,将导致严重的数据损坏。

这是否意味着我的硬盘驱动器中的整个数据(不仅仅是一个分区)都会被破坏?

编辑

我忘了说,我安装的 Virtual Ubuntu OS 被划分为三个分区。我将使用的物理分区驱动器是一个逻辑分区。这是让我不确定结果的问题。

Mas*_*gol 10

我为自己的问题找到了解决方案。这不是那么简单。对于我作为一个没有经验的 Ubuntu 用户来说,这很令人困惑。最后,我决定不这样做。但是,也许有人比我有另一种方法可以更好地做到这一点。

安装新的 Ubuntu 操作系统

在您的主操作系统旁边安装 Ubuntu 操作系统。就我而言,它是 linux mint。但是,我认为 mint 和 Ubuntu 之间的过程没有区别,因为 mint 基于 Ubuntu。

为 Virtual Box 创建中等文件以读取新操作系统

安装完成后。您需要为 VirtualBox 创建一个介质来读取包含新安装的 Ubuntu 操作系统的分区。你的做法是这样的:

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdX -partitions Y,Y

X你的硬盘在哪里Y你的分区号。不要包括包含主操作系统启动的分区。因为对于不包含主操作系统引导的新操作系统,我们需要不同的引导介质。您可能需要以 root 身份运行。

为 Virtual Box 创建介质以从新操作系统启动

为了创建引导介质,我们将从新的操作系统引导文件创建一个 ISO 映像。首先,我们必须在主操作系统中执行此操作。重新启动计算机并从主操作系统启动。就我而言,我重新启动到 Linux Mint。

我们需要创建一个临时文件夹来创建iso引导文件。因此,一旦 Mint 准备好完成这项工作。创建一个文件夹。我假设我们在桌面上这样做。我们会这样做:

  • 转到桌面。

  • 创建新文件夹并将其命名为“iso”。

  • 打开该iso文件夹并再次创建一个名为“boot”的新文件夹。

  • 打开该引导文件夹并再次创建一个名为“grub”的新文件夹。

    如果我们通过终端执行此操作,我们只需输入此行并按 Enter

    mkdir -p ~/Desktop/iso/boot/grub
    
    Run Code Online (Sandbox Code Playgroud)

    如果我们知道我们在做什么,终端是一个很棒的工具!;)

  • 创建文件夹后,我们需要将新的 Ubuntu 操作系统启动文件复制到该文件夹​​中。因此,打开我们安装Ubuntu操作系统,然后从复制所有文件的分区/usr/lib/grub/i386-pc/~/Desktop/iso/boot/grub。而从所有文件拷贝/boot/grub/grub.cfg~/Desktopiso/boot/grub

    同样,如果这一步是通过终端完成的,我们应该这样做:

    cp /usr/lib/grub/i386-pc/* ~/Desktop/iso/boot/grub
    
    cp /boot/grub/grub.cfg ~/Desktop/iso/boot/grub
    
    Run Code Online (Sandbox Code Playgroud)
  • ~/Desktop/iso/boot/grub/grub.cfg使用文本编辑器打开 grub.cfg 。警告不要犯任何错误,您将在此处编辑的不是/boot/grub/grub.cfg. 如果您编辑我提到的最后一个,您的主操作系统启动将失败。

  • 一旦grup.cfg 打开。删除menuentry与我们安装的新 Ubuntu 操作系统无关的内容。它通常是这样的:

    ### Begin /etc/grub.d/your_main_os ###
    menuentry 'The text displayed in boot menu' {
        ----
        some code we don't need understand for this
        ----
    }
    ### End /etc/grub.d/your_main_os  ###
    
    Run Code Online (Sandbox Code Playgroud)

    删除与我们安装的新 Ubuntu 操作系统无关的每个菜单项。我们不需要它们存在于 VirtualBox 中,不是吗?

  • 接下来,使用以下命令将包含所有文件的文件夹转换为 iso:

    grub-mkrescue -o boot.iso ~/Desktop/iso
    
    Run Code Online (Sandbox Code Playgroud)

    注意:如果在执行此操作时出现错误,则需要先安装xorriso。有了这个:

    sudo apt-get install xorriso
    
    Run Code Online (Sandbox Code Playgroud)
  • 创建用于引导的iso文件。如果我们将该 iso 文件与我们创建的媒体文件放在同一文件夹中会很好。

将虚拟机设置为能够引导已安装的 Exact Ubuntu OS

我们已经创建了用于读取新安装的操作系统的介质,并且我们已经为 VirtualBox 独立创建了它的引导加载程序。最后一件事是配置,Virtual Box 应该如何做到这一点。

  • 转到我们放置medium.vmdk. 在那里打开终端并执行以下操作:

    chmod -v 666 medium.vmdk
    
    Run Code Online (Sandbox Code Playgroud)
  • 作为 root 更改medium.vmdkboot.iso文件权限。我们必须是这些文件的所有者。

  • 打开 VirtualBox。创建一台新机器。当硬盘选项提供选项时,选择use an existing virtual hard drive并取medium.vmdk

  • 完成它,但不要运行它。选择新机器后,打开设置。

  • 在存储部分,如果没有 CD 存储,则创建新的。然后安装boot.iso我们在该 CD 存储中创建的文件。

  • 在关闭设置之前,请转到系统部分以确保。boot.iso在硬盘之前先读取包含的 CD 存储。这样,Virtual Box 将从 CD 启动以读取新安装的操作系统。

  • 结束。我们可以从虚拟机和真机运行新安装的操作系统。

重要笔记

即使我们可以从两种方式启动它。我发现了一些问题。

  1. 每当我们从真机启动,然后尝试从虚拟机启动时,都会出错。因为物理驱动器状态在不知情的情况medium.vmdk下发生了变化。因此,我们必须创建一个新介质并再次更改它的权限,以便能够从虚拟机启动。但是,我们不需要创建新的boot.iso.

  2. 因为两台机器的MAC地址不同。尝试配置网络设置时,操作系统会感到困惑。就我而言,我将 Ubuntu Server 安装为新操作系统,每次我从不同的机器启动时,它都会给出类似“等待网络配置...”的消息大约 2 分钟,然后启动。

就是这样。我自己的问题的解决方案。