os-prober和update-grub无法查看/找到正常运行的Windows安装

我已经在分区的3 TB硬盘上安装了Windows 7安装旁边的12.04。 如果我在启动时使用F12来查看BIOS的启动选项,Windows 7和Ubuntu正常启动,但Ubuntu GRUB只给我Ubuntu选项。

当我尝试os-prober时,我根本没有得到任何结果; update-grub对我也没有做任何事情。 我尝试使用Grub Customizer修改GRUB,但是,呃,真的不明白它的细节。

这是使用“磁盘工具”拍摄的驱动器的屏幕截图。 第一个分区是Windows,第二个分区是共享数据(MP3,文档,照片等)。 105 MB FAT是“EFI系统分区”,134 MB“未知”标记为“Microsoft保留分区”; 898 GB是Ubuntu,最后5 GB是交换。

磁盘实用快照

我曾经有过同样的问题:
当我使用update-grub时,Windows 7和Linux(在我的情况下,Slax使用Grub2和Debian)和os-prober无法识别Windows分区。 Windows被排除在外。

我修好了这个问题。 首先,我测试了将Windows 7的条目手动添加到/boot/grub/grub.cfg会在运行时覆盖此文件,因此对其进行的更改不是永久性的)。

我重新启动,Windows 7出现在菜单中并启动正常,除了出现此错误:

 error: no suck device: xxxxxxxxxxx (disk ID) 

当这出现时,我按Enter键 ,Windows启动正常。

我调查了os-prober命令的执行以及识别操作系统过程中涉及的其他脚本,我测试了输出

 sudo /etc/grub.d/30_os-prober 2>/dev/null 

Windows未列出。 我打开Dolphin文件管理器浏览Windows分区并搜索分区的UUID并将其替换为/boot/grub/grub.cfg以解决错误。

我执行了

 sudo /etc/grub.d/30_os-prober 2>/dev/null 

和Windows然后列出确定

我重新启动了PC,进入了控制台并执行了

 sudo /etc/grub.d/30_os-prober 2>/dev/null 

然后Windows再次没有列出。

我打开了Dolphin,浏览了Windows分区,执行了

 sudo /etc/grub.d/30_os-prober 2>/dev/null 

再次和Windows上市。

我执行了update-grub ,GRUB菜单现在可以了。

我认为os-prober需要分区(在NTFS的情况下,因为Debian分区总是被列出)才能找到它。 我还没有发现为什么os-prober有这种行为,但解决方案有效。