Как загрузиться в Windows 7, если в разделе Windows установлен grub?

15

Оригинальное название: Как я могу решить (не) загрузку Windows 7 на том же разделе с Grub?

Я изучал эту проблему в течение двух-трех дней, но я пришел пустой.

По сути, раздел 1 - это Windows 7, а раздел 2 - это Ubuntu 12.04. Я сказал Ubuntu установить в раздел 2 и установить GRUB в раздел 1, и это прекрасно работает. Но проблема в том, что я не могу загрузить Windows 7. Он просто возвращается в меню GRUB после того, как я его выбрал.

Из того, что я исследовал, если я смогу отредактировать GRUB для загрузки Windows 7 «mbr» или загрузчика \windows\system32\winload.exe(без использования ремонтного диска Windows 7), моя проблема будет решена. Это вообще возможно?


URL-адрес Boot-Repair-Info является 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"
Сим
источник

Ответы:

14

Не могли бы вы создать сводный отчет Bootinfo с помощью инструмента восстановления загрузки, как описано ниже, а затем опубликовать ссылку на отчет?

Я знаю, что вы уже предоставили некоторые подробности о конфигурации загрузки. Однако отчет, который я запрашиваю, содержит более подробную информацию и может помочь нам лучше понять, почему вы не можете загрузить Windows с помощью GRUB.

Как использовать boot-repair для предоставления «Bootinfo Summary»


Поскольку вы все еще можете загрузить 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
  1. После этого введите команду boot-repairдля запуска инструмента.
  2. После небольшой задержки boot-repairвас спросят, хотите ли вы загрузить его новейшую версию. Поскольку вы только что установили последнюю версию, ответьте No.
  3. Если boot-repairпросит установить pastebinitпакет, ответьте с помощью Yes.
  4. Теперь инструмент сканирует вашу систему и (в конечном итоге) отображает окно, показанное на рисунке ниже. Нажмите на Create a Bootinfo summaryполе / кнопку. Это позволит собрать информацию о конфигурации загрузки вашей системы, но не внесет никаких изменений.


    Начальное окно Boot-Repair

  5. Когда резюме bootinfo было созданы, boot-repairпоявится сообщение , содержащее URL , который должен выглядеть следующим образом : http://paste.ubuntu.com/123456/.

    Пожалуйста, обновите / отредактируйте свой вопрос и добавьте этот URL. Информация в пастбине, на которую указывает эта ссылка, поможет (я надеюсь) помочь в диагностике проблемы.

Я думаю, переписывание VBR раздела Windows вызвало эту проблему.

Насколько я понимаю, есть несколько шагов для запуска операционной системы. В вашем случае, я думаю, что происходит что-то вроде следующих шагов.

  1. BIOS на вашем компьютере пытается запустить код в первом секторе жесткого диска. Этот первый сектор обычно называется MBR (Master Boot Record) .
  2. В дополнение к MBR каждый раздел также может иметь загрузочную запись. Его часто называют Volume Boot Record или VBR . MBR на вашем жестком диске передает управление VBR раздела 1, вашего раздела Windows.
  3. Windows ожидает, что VBR раздела сделает следующий шаг к загрузке операционной системы, такой как Windows 7. Таким образом, Windows первоначально установила VBR, который передаст управление программе Windows bootmgrв вашем разделе Windows.

    Однако, когда вы указали Ubuntu установить программу для установки GRUB в раздел Windows, GRUB, похоже, заменил Windows VBR своим собственным. Этот GRUB VBR отображает загрузочное меню GRUB.
  4. В настоящее время GRUB использует инструкции по загрузке Windows, чтобы найти VBR в разделе Windows и передать ему управление. VBR в разделе Windows - это GRUB VBR. Передача управления ему просто (пере) отображает загрузочное меню GRUB.

К сожалению, я пока не уверен, что будет лучшим способом исправить это. Мы хотим быть осторожными, чтобы не сломать 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

Возможный обходной путь для загрузки Windows 7

Ниже приведено предложение по редактированию команд загрузки 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
}

Я предлагаю вам попробовать изменить это и использовать вместо этого эти команды.

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
}

Вот шаги, чтобы сделать это.

  1. Загрузите вашу систему в меню GRUB.
  2. Выберите (выделите) пункт меню загрузки GRUB Windows 7 (loader) (on /dev/sda1).
  3. Нажмите eдля редактирования команд загрузки GRUB для Windows 7.
  4. Сделайте два изменения в этом списке команд, как показано menuentryвыше.
    • Добавьте команду insmod ntldr
    • Измените команду
      chainloader +1
      на
      ntldr ($root)/bootmgr
  5. Нажмите Ctrl+ Xили F10для загрузки с использованием этих отредактированных команд.

Примечание 1:

Если указанный выше способ успешно загружает загрузочное меню Windows 7, вы можете сделать его полупостоянным, выполнив

  1. Используется sudoдля редактирования файла /etc/grub.d/40_customи добавления второго, модифицированного, menuentryпоказанного выше. (Если вы сделаете это, я бы также предложил вам изменить название этой «пользовательской» записи.)
  2. Запустите команду sudo update-grubдля обновления, /boot/grub/grub.cfgчтобы включить вашу индивидуальную запись. (Это будет в нижней части меню GRUB при загрузке.)

Я бы расценил предложение выше как только частично испеченное решение. Лучшее решение - восстановить Windows VBR в разделе Windows, не нарушая также возможности GRUB для загрузки.

Я думаю ... но я не уверен на 100% ... что для этого bootsectможно использовать команду восстановления Windows . Если вы хотите рискнуть, один из возможных способов сделать это изложен ниже.

  • При загрузке Windows нажмите, F8чтобы открыть Advanced Boot Optionsменю.
  • Выберите Repair Your Computerзапись.
  • Пройдите через следующие окна, пока не дойдете System Recovery Options.
  • Выбрать Command Prompt
  • Запустите команду bootsect /nt60 C:

Но вы также можете немного подождать и посмотреть, какие другие ответы вы получите на свой вопрос, прежде чем рискнуть попробовать вышеизложенное.

Заметка 2:

В поисках других вещей я столкнулся с двумя другими вопросами в AskUbuntu, которые связаны с вашей проблемой.

  1. Windows 7 не загружается после установки Ubuntu 11
  2. Windows 7 не загружается после установки Ubuntu

Я не уверен, насколько сильно помогают эти вопросы. Ответом на второй вопрос было использование команды bootrec /fixbootдля восстановления VBR для раздела Windows. Я понял из этого вопроса, что использование bootrec /fixbootкоманды решило проблему.

Но второй вопрос настаивает , что bootrec /fixbootничего не решает проблему.

(Удивляет меня, что там может происходить.)

иррациональный Джон
источник
Спасибо за ваш ответ. У меня все хорошо, повезло, но если другие люди не знали об этом, они знают сейчас. URL-адрес Boot-Repair-Info: http://paste.ubuntu.com/981952/
Сим
1
Я думаю, что ваша проблема была вызвана установкой GRUB в ваш раздел Windows. Смотрите обновление к моему ответу.
иррациональный Джон
Так что ты думаешь я могу сделать? Должен ли я использовать bootrec, а затем переустановить grub? или есть другой способ?
Сим
Вы можете восстановить загрузку Windows как обычно, когда это будет сделано, Windows автоматически загрузится, даже не спросив вас (Windows не распознает Linux). После исправления вы можете загрузить Linux с USB и снова запустить GRUB, на этот раз не трогайте раздел Windows;)
pzkpfw
В мой ответ добавлено предложение о возможном временном обходе.
иррациональный Джон
7
menuentry "Windows 7" {
    insmod ntfs
    set root=(hd0,1)
    drivemap -s (hd0) ($root)
    ntldr /bootmgr
    #or chainloader +1
}

Если вы установили Windows на раздел, отличный от (hd0,1), вам нужно использовать команду drivemap для загрузки Windows. Chainloader +1 или ntldr / bootmgr оба могут использоваться для загрузки Windows 7.

Что вы сделали, вы изменили VBR 1-го раздела; Вы можете восстановить это, выполнив эти команды в режиме восстановления Windows в cmd при загрузке с установочного компакт-диска:

bootrec.exe /FixMbr  

bootrec.exe /FixBoot  

bootrec.exe /RebuildBcd
Kross
источник
Это единственный ответ, который действительно работает. +1
маргаритка
1

Я действительно не знаю о «(UN) загрузке)», вы должны попытаться исправить Windows, используя диск восстановления Windows (выберите Command Promptдля запуска bootsect.exeутилиту. Bootsect находится внутри папки загрузки, поэтому измените каталог на boot. Теперь запустите bootsect /nt60 C:\(без цитаты), если у вас изначально была установлена ​​Windows 7. В качестве C:альтернативы вы можете запустить «bootsect / nt60 SYS» или «bootsect / nt60 ALL»)

А затем переустановите GRUB.

hardianto
источник
Спасибо за ваш ответ. Я имел в виду грязные ботинки, а не окна после того, как я их выбрал. Исследователи говорят, что для восстановления загрузки для mbr мы должны использовать «bootrec.exe / fixboot», а затем «bootrec.exe / fixmbr». Ваш метод такой же, как bootrec или другой?
Сим
По моему опыту, после установки Ubuntu с двойной загрузкой, будет лучше запустить Windows при перезагрузке и выполнить восстановление самостоятельно, а затем вернуться в Ubuntu. Я каждый раз следовал этому методу и находил успешным.
Беджу
Правда. Для окон я использую EasyBCD
Sim
0

GRUB установлен в загрузочном секторе вашего раздела Windows (PBR), как показывает ваше BootInfo:

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

Это препятствует загрузке Windows.

Решение хорошо описано здесь: http://ubuntuforums.org/showpost.php?p=11693662&postcount=1

LovinBuntu
источник
0

У меня была такая же проблема, и я хотел бы подтвердить решение, которое сработало для меня, в надежде, что оно поможет другим ...

Я отредактировал grub.cfg, чтобы отразить здесь изменения:

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
}

То есть я добавил ...

insmod ntldr

и изменил последнюю строку на ...

ntldr ($ root) / bootmgr

Я собираюсь попытаться восстановить VBR в ближайшее время и сообщу, как это получается.

Филипп
источник
0

Решил мою проблему загрузки Windows 10 ....

menuentry "Windows 10 (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
}

hexadec.code может отличаться

НКП
источник
2
Я не уверен, что это действительно относится к этому вопросу ...
Zanna