7

В моей системе была установлена Windows 7, затем я установил тестирование Debian с grub2 в качестве менеджера загрузки. Изначально я вообще не мог видеть запись windows в grub, поэтому я запустил:

aptitude install os-prober kcpuload 
update-grub

Теперь я вижу запись, но когда я выбираю ее, я получаю только восстановление системы Win7, а не реальную вещь. Любые иды, как заставить это работать?

РЕДАКТИРОВАТЬ: я попробовал предложенный подход, чтобы добавить новый файл в /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
}

И у меня есть следующий файл 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 ###  

2 ответа2

7

Сначала вам нужно проверить конфигурацию. Это в тебе ... ты ... /etc/grub.d/ ? /etc/grub/ ? .. где-то там. Имена файлов конфигурации выглядят так: 00xy, 10linux, 20other ... это всего лишь примеры, но на самом деле это почти то же самое. Проверьте их, где окна один. Сделайте резервную копию (скопируйте ее куда-нибудь). Вам нужно что-то вроде этого в файл:

menuentry "Windows" {
set root=(hd0,3)
chainloader +1
}

Если у вас нет такого конфигурационного файла, просто создайте его. Чтение конфигурации Grub2 легко понять. Это идет постепенно. Например: 00 *, 10 *, 20 * и т.д. Таким образом, ваш новый файл должен называться 95-windowsfix, если вы хотите, чтобы он был последней записью, или дать ему меньшее число (чтобы сделать его первой записью), чем конфигурации Linux есть, если хотите, чтобы он был первым.)

в другом файле конфигурации. Измените установленное корневое значение, конечно. Определите жесткий диск, набрав: sudo fdisk -l . Например, /dev/sda1 равен (hd0,0) если он находится на втором HDD: /dev/sdb1 >> (hd1,0) так далее. Вы можете понять синтаксис из этого, я думаю. После того, как вы внесли изменения, выполните update-grub и вы можете попробовать загрузить его.

Я знаю, что это похоже на огромный беспорядок. Простите за это. У меня нет машины Ubuntu рядом с Grub2, поэтому я так много написал "я думаю". Если вы не сможете заставить его работать, просто спросите.

2

Попробуй это:

grub-mkconfig -o /boot/grub/grub.cfg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .