如何让 grub2 启动进入 Windows 7?

Grz*_*nio 7 linux debian windows-7 grub

我的系统上安装了 Windows 7,然后我安装了 Debian 测试,使用 grub2 作为其启动管理器。最初我根本看不到 grub 中的 windows 条目,所以我运行:

aptitude install os-prober kcpuload 
update-grub
Run Code Online (Sandbox Code Playgroud)

现在我可以看到该条目,但是当我选择它时,我只能得到 Win7 系统还原,而不是真实的东西。任何ide如何使它工作?

编辑:我尝试了建议的方法将一个新文件添加到 /etc/grub.d,它在 grub.cfg 中生成了一个条目,但它没有出现在启动时的 grub 菜单中:(

我有这个:

grzes:/home/ga# cat /etc/grub.d/11_Windows
#! /bin/sh -e
echo Adding Windows >&2
cat << EOF
menuentry “Windows 7? {
        set root=(hd0,2)
        chainloader +1
}
Run Code Online (Sandbox Code Playgroud)

我有以下 grub.cfg 文件:

grzes:/home/ga# cat /boot/grub/grub.cfg
#                                      
# DO NOT EDIT THIS FILE                
#                                      
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub                    
#                                                                         

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then    
  load_env                         
fi                                 
set default="0"                    
if [ ${prev_saved_entry} ]; then   
  set saved_entry=${prev_saved_entry}
  save_env saved_entry               
  set prev_saved_entry=              
  save_env prev_saved_entry          
  set boot_once=true                 
fi                                   

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}     
    save_env saved_entry      
  fi                          
}                             
insmod ext2                   
set root=(hd0,3)              
search --no-floppy --fs-uuid --set 6ce3ff31-0ef7-41df-a6f5-b6b886db3a94
if loadfont /usr/share/grub/unicode.pf2 ; then                         
  set gfxmode=640x480                                                  
  insmod gfxterm                                                       
  insmod vbe                                                           
  if terminal_output gfxterm ; then true ; else                        
    # For backward compatibility with versions of terminal.mod that don't                                                                                    
    # understand terminal_output                                                                                                                             
    terminal gfxterm                                                                                                                                         
  fi                                                                                                                                                         
fi                                                                                                                                                           
set locale_dir=/boot/grub/locale                                                                                                                             
set lang=en                                                                                                                                                  
insmod gettext                                                                                                                                               
set timeout=5                                                                                                                                                
### END /etc/grub.d/00_header ###  
Run Code Online (Sandbox Code Playgroud)

Apa*_*che 7

首先,您需要检查配置。它在你...你... /etc/grub.d//etc/grub/?.. 某处。配置文件名如下所示:00xy、10linux、20other ...这些只是示例,但实际情况几乎相同。检查他们,窗户在哪里。备份它(将其复制到某处)。您需要在文件中添加类似内容:

menuentry "Windows" {
set root=(hd0,3)
chainloader +1
}
Run Code Online (Sandbox Code Playgroud)

如果你没有这样的配置文件,就创建一个。Grub2 的配置阅读很容易理解。它是渐进式的。例如: 00* 、 10* 、 20* 等。因此,如果您希望它是最后一个条目,则您的新文件应该命名为 95-windowsfix,或者给它一个比 Linux 配置更小的数字(使其成为第一个条目)如果您希望它成为第一个,则可以使用它。)

在“其他”配置文件中。当然修改设置的根值。键入以下内容确定硬盘:sudo fdisk -l. 例如,/dev/sda1(hd0,0)如果其在第二HDD: /dev/sdb1 >> (hd1,0)..和等。我猜你可以从这个理解语法。修改完成后,执行 a update-grub,您可以尝试启动它。

我知道这看起来像一团糟。对不起。我附近没有任何带有 Grub2 的 Ubuntu 机器,所以这就是我写这么多“我猜”的原因。如果你不能让它工作,就问吧。

  • grub2 的分区编号从 1 开始。没有“(hd0,0)”,这是 grub1 规范。在 grub2 中它是“(hd0,1)”。 (2认同)