GRUB无法检测到Windows


66

我终于在第二个驱动器上安装了Ubuntu。启动计算机时,GRUB仅提供启动Ubuntu的功能,而不能启动Windows7。需要做些什么才能在GRUB中选择Ubuntu和Windows?

当我在启动时按F12作为启动菜单时,我选择Windows Boot Manager它引导进入Windows 7。


我运行了命令sudo fdisk -l,这是日志(http://pastebin.com/Cgv1igHc):

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xc3ffc3ff

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1953525167   976762583+  ee  GPT
Partition 1 does not start on physical sector boundary.

请指出您的Boot-Info URL。这将提供相关信息以帮助您。
LovinBuntu 2012年

Answers:


100
  1. 引导Ubuntu并挂载Windows分区(只需在Nautilus上打开磁盘)

  2. 在命令行(Ctrl+ Alt+ t)上运行以下命令:

    sudo os-prober
    
  3. 如果找到Windows安装,则可以运行:

    sudo update-grub
    

请注意,第2步只是为了您的方便。您可以仅挂载Windows 7分区,然后运行update-grub

相关问题


我有2个分区,其中安装了2个Windows,它仅检测到我在另一个分区上的安装,而没有检测到新安装的Windows(在SSD上)!甚至装上...一个主意?
Philippe Gachoud 2015年

谢谢。有趣的是,os-prober似乎需要第1步。非常重要,否则Windows将无法工作。
椭圆视图

mount -t ntfs-3g -o ro /dev/sda4 /media/windows安装Windows分区
Yuvaraj Loganathan

完善!运行两个命令都达到了目的
Aryeh Beitz '18

工作了!谢谢!
DigaoParceiro

10

如果上述os-prober方法不起作用,请尝试添加自定义grub菜单项。记录在这里

前两步是找到您的物品<UUID>

  1. 运行lsblk并找到行名称/boot/efi

输出示例(这里的答案是sda2)

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0   477G  0 disk 
├─sda1        8:1    0   450M  0 part 
├─sda2        8:2    0   100M  0 part /boot/efi
├─sda3        8:3    0    16M  0 part 
├─sda4        8:4    0    47G  0 part /windows
├─sda5        8:5    0 425,6G  0 part /
└─sda6        8:6    0   3,7G  0 part [SWAP]
mmcblk0     179:0    0  14,9G  0 disk 
└─mmcblk0p1 179:1    0  14,9G  0 part
  1. 运行上一步的答案sudo blkid /dev/sdaX在哪里对于我而言)sdaXsda2

输出示例(此处答案为58E4-427D)

/dev/sda2: UUID="58E4-427D" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="b81727be-ba90-5f8c-ab98-d3ec67778b7d"
  1. 在文件末尾添加以下内容/etc/grub.d/40_custom
menuentry "Windows 7" {  
     insmod ntfs  
     set root='(hd0,1)'  
     search --no-floppy --fs-uuid --set <UUID>
     chainloader +1  
}
  1. 运行sudo update-grub并重新启动。

感谢@Christopher Markieta在另一个答案中提供的所有详细信息。他们加入到这一个,以及(即使自定义项的具体情况是不同的。
卡罗勒斯

9

我运行了Windows 10,然后尝试了双启动。一旦安装了Ubuntu,Win 10就不会出现在我的GRUB加载器中。我尝试了以下-

首先,我在Win10中禁用了安全启动。然后在Ubuntu中运行以下命令:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

工作得很好。之后便可以在GRUB中找到Windows和Ubuntu。


该PPA是否仍然存在?我无法添加它,它声称它在Ubuntu 18.04启动盘中不存在
jocull

刚收到404 Not Found有关Debian 的错误
winklerrr

5

我按照引导修复的步骤解决了类似的问题

安装引导修复

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

推送“建议的维修”,并在终端中输入一些建议的命令。

我认为我的Grub由于关机错误而无法识别Windows,因此解决了该问题。


3

如果您以前安装过RAID,可能会引起问题。就我而言,我在2010年构建了台式机,并安装了两个带有条带RAID的1.5 TB。用户gracemercy54在这里提到,这是以前RAID配置遗留下来的元数据。

当我最初尝试使用爱马仕(Hermes)的步骤时,出现错误,指出“ RAID集中的设备数量错误”。因此,如果发生这种情况,请打开终端并运行:

   sudo dmraid -rE
   sudo os-prober
   sudo update-grub

这为我解决了这个问题。


我认为我的也是突袭造成的。但是sudo dmraid -rE对我不起作用。我最终通过AHCI临时进入BIOS,然后引导至Ubuntu并执行sudo update-grub,然后再切换 RAID ON回去来完成此操作。
realhu

1
警告:如果您仍在使用它,则会破坏您的RAID阵列。
Christopher Markieta

3

从另一台计算机上的工作示例复制的方法略有不同,以供自己记录。

将以下内容附加到/etc/grub.d/40_custom

menuentry "Windows 10" {
        insmod part_gpt
        insmod fat
        search --no-floppy --fs-uuid --set <boot_efi_uuid>
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

<boot_efi_uuid>/boot/efi分区的UUID 在哪里。要找到这个:

$ lsblk
NAME              MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT                                                  
sda                 8:0    0 119.2G  0 disk
└─md126             9:126  0 357.7G  0 raid0
  ├─md126p1       259:0    0   499M  0 md
  ├─md126p2       259:1    0   100M  0 md    /boot/efi                                                   
$ sudo blkid | grep md126p2 # Replace with your device
/dev/md126p2: UUID=<boot_efi_uuid>

然后,当然,一旦保存了文件,请运行:

sudo update-grub

重新启动后,您现在应该能够成功启动Windows。


2

我在Windows 10上遇到了同样的问题。我在笔记本电脑上安装了Linux Mint 18.1 Cinnamon 64位,以便通过WIN10进行双启动。安装后,GRUB仅提供引导Linux的功能,而不能引导Windows。

我发现Windows 10的视频解决方案从grub菜单中丢失,并且论坛线程Grub在更新/修复后无法识别Win10,但是不幸的是,这两个都不对我有用,因此我使用了两者的组合来解决我的问题。

打开您的终端并按照以下命令打开名为40_custom的文件:

sudo gedit /etc/grub.d/40_custom

将这些行添加到文件末尾,然后保存并退出:

menuentry "Windows 10" {
   set root='{hd0,1}'
   chainloader + 1
}

保存文件后,请使用以下命令更新GRUB:

sudo update-grub

然后重新启动计算机以查看其是否正常运行。

希望这对其他人也有用!


我相信这个答案虽然正确,但很大程度上是2015
查尔斯·格林

1

我遇到了同样的问题,花了2天的时间来解决。但是今天早上我有了一个突然的想法,这个想法解决了。

您应该查看您的BIOS / UEFI设置。就我而言,我必须先让Uefi启动。否则我无法从ubuntu中检测到窗口。我必须设置的是ubuntu> Windows启动管理器> DISK1> DISK2> DISK3。插入DISK1> ubuntu> Windows引导管理器> DISK3。

我在硬盘上安装了2个ubuntu安装,在固态硬盘上安装了1个。显然,出于某些原因,ssd安装没有显示为UEFI,但我想先引导更快的磁盘。

我没想到引导顺序会影响检测系统中的grub。因此,值得回顾一下。


1

我遇到了类似上面的问题,解决方案是添加如下的手动输入:

menuentry "WINDOWS10 (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(/dev/sda,msdos1)'
    search --no-floppy --fs-uuid --set=root 688EB92384B85968
    drivemap -s (hd0) ${root}
    chainloader +1
}

上面的UUID(688E ...)是通过引导Windows磁盘获取的blkid /dev/sdb1

注意:附加行

set root='(/dev/sda,msdos1)'

指的sda是在Ubuntu下可见/dev/sdb的磁盘,甚至实际上它是sata总线中的第一个磁盘,而/dev/sda实际上是第二个驱动器以root身份挂载/

也许这就是为什么grub脚本无法正常工作的原因。我没有时间更改磁盘的物理顺序,但是很有可能也会帮助解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.