是否可以从 Windows 运行当前安装的 Ubuntu?

是否可以从 Windows 运行当前安装的 Ubuntu?

我在不同的分区上安装了 Windows XP 和 Ubuntu。

是否可以从 Windows 中“启动”我的 Ubuntu 安装?我正在寻找类似于虚拟机的东西,但它将运行已安装在我硬盘上的 Ubuntu 副本。我希望能够双启动 Ubuntu 和 Windows,但也能够从 Windows 中访问我的 Ubuntu 安装,而无需重新启动。

答案1

您可以使用 coLinux 并使用 colinux 运行您的 Ubuntu 内核:

  1. 我像往常一样在单独的分区上安装了 Ubuntu,并将计算机配置为在 Ubuntu/XP 之间双启动。

  2. 我使用 coLinux 网站上提供的带有 backports 映像的 Debian 安装了 coLinux。

  3. 配置 coLinux 以便它可以挂载 Ubuntu 分区,这里的技巧是找出正确的分区号。coLinux 中的分区号似乎低于使用 Ubuntu 启动计算机时使用的分区号。在我的例子中,我必须设置:

    <block_device index="1" path="\Device\Harddisk0\Partition5" enabled="true" alias="hda7"/>
    
  4. 使用带有 backports 映像的 Debian 启动 coLinux,并在启动后挂载 ubuntu 分区(在我的情况下)/dev/hda7

  5. 为了能够在 coLinux 中启动 ubuntu,您需要关闭一些在启动时自动启动的服务,其中大多数与硬件有某种关系,并且不受 coLinux 的支持。当不在 colinux 中运行 ubuntu 时,您仍然希望运行这些服务。我首先根据以下说明创建了一个 /etc/inid.d/colinux 脚本http://wiki.colinux.org/cgi-bin/DualBootSystem
    当然,此脚本应在/etc/init.dubuntu 分区的目录中创建,而不是在“debian with backports”映像上创建。
    创建此脚本后,您还需要编辑文件default.colinux.xml,使其包含COLINUX=1启动参数,在我的情况下为:

    <bootparams>root=/dev/hda8 COLINUX=1</bootparams>
    

    此脚本现在可以在 coLinux 内部启动时关闭某些自动启动的服务,但在使用 ubuntu 双启动计算机时仍运行这些服务。您还必须通过在目录中插入链接来确保在启动时运行此脚本/etc/rcS.d

  6. 下一步是通过在服务脚本中插入 if 语句来关闭服务/etc/init.d(在 ubuntu 分区上)。

    if [ -f /var/local/colinux ] ; then
    exit 0
    fi
    


    我必须在 coLinux 内部启动时关闭以下服务才能使其启动,当任何这些服务正在运行时,coLinux 会在启动过程中崩溃:

    /etc/init.d/gdm 
    /etc/init.d/powernowd 
    /etc/init.d/hotkey-setup 
    /etc/init.d/pcmcia 
    /etc/init.d/vbesave
    
  7. 创建其他一些文件的 colinux 定制版本,上面提到的 init.d 中的 colinux 脚本使得可以拥有一些不同文件的 colinux 版本和非 colinux 版本。就我而言,我有以下文件的特殊版本:

    /etc/fstab(coLinux 使用 smbfs 而不是 ntfs 只读挂载来挂载 ntfs 分区)
    /etc/network/interfaces(我没有让 colinux 使用 DHCP 工作,因此它改用硬编码 IP 号码)
    /etc/gdm/gdm.conf(我不确定这是否被使用,因为 gdm 无法在启动时启动,但我有一个 coLinux 的特殊版本,其中所有 [服务器] 都已禁用。它可能在使用 vnc 时使用,但我不确定是否需要它)以

    这种方式设置这些文件时,请务必记住编辑正确的文件,因为每次启动时,普通文件都会被 *-colinux 或 *-non-colinux 版本覆盖。也许可以设置符号链接而不是覆盖文件,但我还没有测试过。

  8. 最后,您必须设置 coLinux,以便它使用 Ubuntu 分区而不是“带有 backports 的 debian”映像启动,这是通过在 default.colinux.xml 文件中设置启动分区来完成的,在我的情况下,它指向/dev/hda8
    <bootparams>root=/dev/hda8 COLINUX=1< /bootparams>

  9. 现在应该可以通过在启动计算机时在双启动(grub)菜单中选择它来启动 Ubuntu,或者通过启动 XP 并启动 coLinux 来启动 Ubuntu。请注意,在 coLinux 中运行时,实际上不使用 Ubuntu 内核,而是使用 coLinux 内核。例如,如果您需要重新编译内核和内核模块,这一点很重要。

最后,不要犯和我一样的错误。正如本帖所述,我让 XP/coLinux 进入休眠模式,然后双启动进入 Ubuntu。我的 Ubuntu 文件系统在 XP 下次启动时损坏,因此我决定完全重新安装 Ubuntu。

答案2

如果 Ubuntu 位于单独的分区上,您可以创建一个 *.vmdk 文件来虚拟化物理分区,然后您应该能够从 virtualbox 内的这个 vmdk 文件启动。

我认为创建 vmdk 文件的命令如下:

VBoxManage internalcommands createrawvmdk -filename <Absolute Path to output File> -rawdisk /dev/sda -register

不过我自己从来没有这样做过,所以我无法进一步帮助你

答案3

andLinux 是一个完整的 Ubuntu Linux 系统,可在基于 Windows 2000 的系统(2000、XP、2003、Vista、7;仅限 32 位版本)中无缝运行。该项目最初是为了 GP2X 社区的 Dynamism 而启动的,但其用户群远远超出了其最初的设计。andLinux 是免费的,并且将一直免费,但非常需要捐赠。

andLinux 使用 coLinux 作为其核心,这让很多人感到困惑。coLinux 是 Linux 内核到 Windows 的移植。虽然这项技术有点像在虚拟机中运行 Linux,但 coLinux 的不同之处在于它更像是 Windows 和 Linux 内核的合并,而不是模拟 PC,这使其效率更高。Xming 用作 X 服务器,PulseAudio 用作声音服务器。

http://www.andlinux.org/

答案4

如果你有 Windows 启动加载程序 NTLDR 链接到 grub,而不是相反,那么我认为你可以使用bcd 编辑更改默认启动选项,然后重新启动,您就会进入 Ubuntu。我不确定这是否可行,但我想我见过这样做。要使它工作,您可能需要将 grub 仅安装到分区启动扇区(或第二个驱动器的启动扇区),然后将其添加为 NTLDR 启动选项。hth。

相关内容