Sim*_*Sim 16 grub2 dual-boot windows-7 mbr
原标题:如何用grub在同一个分区上解决(un)启动windows 7?
我一直在研究这个问题两到三天,但我空虚。
基本上,分区 1 是 Windows 7,分区 2 是 Ubuntu 12.04。我告诉 Ubuntu 安装到分区 2 并在分区 1 上安装 GRUB 并且工作正常。但是现在的问题是我无法启动Windows 7。它只是在我选择它后返回到GRUB菜单。
根据我的研究,如果我可以编辑 GRUB 来启动 Windows 7“mbr”或引导加载程序\windows\system32\winload.exe
(不使用 Windows 7 修复盘),我的问题将得到解决。这甚至可能吗?
Boot-Repair-Info 的 URL 是http://paste.ubuntu.com/981952/
命令的输出 sudo blkid
/dev/sda1: UUID="1EA0019AA0017A13" TYPE="ntfs"
/dev/sda2: UUID="e4402f9e-83df-4dc3-8913-69b28314d253" TYPE="ext4"
/dev/sda3: LABEL="Vault Drive" UUID="74145BFD145BC132" TYPE="ntfs"
/dev/sda4: UUID="1c030d32-657f-4a78-9468-307d9e09a977" TYPE="ext4"
Run Code Online (Sandbox Code Playgroud)
irr*_*ohn 15
您能否使用如下所述的引导修复工具创建一个 Bootinfo 摘要报告,然后发布该报告的链接?
我知道您已经提供了有关启动配置的一些详细信息。但是,我要求的报告包含更详细的信息,可能会让我们更好地了解您无法使用 GRUB 启动 Windows 的原因。
由于您仍然可以启动 Ubuntu,因此您可以使用该命令安装并运行Boot-Repair 工具apt-get
,然后将其用于Create a Bootinfo summary
.
在终端窗口中运行以下命令以安装该boot-repair
工具。
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
Run Code Online (Sandbox Code Playgroud)
boot-repair
以启动该工具。boot-repair
会询问您是否要下载其最新版本。由于您刚刚安装了最新版本,请回答No
。boot-repair
要求安装pastebinit
软件包,请回复Yes
。Create a Bootinfo summary
框/按钮。这将收集有关系统引导配置的信息,但不会进行任何更改。
boot-repair
将显示一条包含 URL 的消息,该 URL 应如下所示:http://paste.ubuntu.com/123456/
。
我的理解是启动操作系统有几个步骤。在您的情况下,我认为会发生以下步骤。
bootmgr
Windows 分区中的 Windows程序。不幸的是,我还不确定解决这个问题的最佳方法是什么。我们要小心,不要破坏 GRUB 并在我们尝试修复启动 Windows 的问题时使您的计算机上无法启动任何东西。
以下是您的 Bootinfo 摘要中的一些信息的副本,以供参考。我上面的评论是基于这些信息。
============================= Boot Info Summary: ===========================
=> Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1
of the same hard drive for core.img. core.img is at this location and
looks for (,msdos2)/boot/grub on this drive.
sda1: ______________________________________________________________________
File system: ntfs
Boot sector type: Grub2 (v1.99)
Boot sector info: Grub2 (v1.99) is installed in the boot sector of sda1
and looks at sector 44090872 of the same hard drive
for core.img. core.img is at this location and looks
for (,msdos2)/boot/grub on this drive. No errors
found in the Boot Parameter Block.
Operating System: Windows 7
Boot files: /bootmgr /Boot/BCD /Windows/System32/winload.exe
sda2: ______________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
Run Code Online (Sandbox Code Playgroud)
下面是编辑 GRUB 引导命令的建议,它可能允许您引导 Windows 7。我不确定这是否可行,但似乎值得一试。
目前,您grub.cfg
使用下面的 GRUB 引导命令来引导 Windows 7。
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
chainloader +1
}
Run Code Online (Sandbox Code Playgroud)
我建议您尝试更改此设置并改用这些命令。
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
Run Code Online (Sandbox Code Playgroud)
以下是执行此操作的步骤。
Windows 7 (loader) (on
/dev/sda1)
。menuentry
。
insmod ntldr
chainloader +1
ntldr ($root)/bootmgr
注 1:
如果上述解决方法成功加载了 Windows 7 启动菜单,那么您可以通过以下方式使其半持久化
sudo
编辑该文件/etc/grub.d/40_custom
并添加第二,改性menuentry
如上所示。(如果您这样做,我还建议您更改此“自定义”条目的标题。)sudo update-grub
以更新/boot/grub/grub.cfg
以包含您的自定义条目。(当您启动时,它将位于 GRUB 菜单的底部。)我认为上面的建议只是一个部分烘焙的解决方案。更好的解决方案是将 Windows VBR 恢复到 Windows 分区,同时不会破坏 GRUB 的启动能力。
我认为……但我不是 100% 确定……Windows 恢复命令bootsect
可用于执行此操作。如果您想冒险,下面概述了一种可能的方法。
Advanced Boot Options
菜单。Repair Your Computer
条目。System Recovery Options
。Command Prompt
bootsect /nt60 C:
但是,在您冒险尝试上述方法之前,您可能还想稍等片刻,看看您对问题的其他答案是什么。
笔记2:
在搜索其他内容时,我在 AskUbuntu 上遇到了另外两个与您的问题相关的问题。
我不确定这些问题提供了多少帮助。第二个问题的答案是使用命令bootrec /fixboot
恢复Windows分区的VBR。我对那个问题的理解是使用该bootrec /fixboot
命令解决了问题。
但是第二个问题,坚持bootrec /fixboot
并没有解决这个问题。
(关于那里可能发生的事情,让我大吃一惊。)
小智 7
menuentry "Windows 7" {
insmod ntfs
set root=(hd0,1)
drivemap -s (hd0) ($root)
ntldr /bootmgr
#or chainloader +1
}
Run Code Online (Sandbox Code Playgroud)
如果您在 (hd0,1) 以外的分区上安装了 Windows,则需要使用 drivemap 命令启动到 Windows。Chainloader +1 或 ntldr /bootmgr 均可用于启动 Windows 7。
你所做的是你修改了第一个分区的 VBR;当您从安装 CD 启动时,您可以通过在 cmd 中的 Windows 恢复模式下执行这些命令来恢复它:
bootrec.exe /FixMbr
bootrec.exe /FixBoot
bootrec.exe /RebuildBcd
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
205090 次 |
最近记录: |