Grub не показывает опцию Windows 8 после двойной загрузки

25

Итак, я успешно загрузил Windows 8 с Ubuntu 12.04. Тем не менее, у меня до сих пор нет удобного способа выбора ОС для загрузки во время загрузки.

После установки Ubuntu мой компьютер по-прежнему загружает Windows 8 напрямую. Затем я добавил grubx64.efiв белый список моего загрузчика. Но после этого моя машина загружает Ubuntu напрямую, даже без тени GRUB!

Я использовал boot-repair и получил URL-адрес paste.ubuntu : paste.ubuntu.com/1326074 . После запуска boot-repair (и повторного отображения списка grubx64.efiфайлов) GRUB теперь появляется, но без какой-либо опции Windows 8!

Наконец, я побежал, sudo fdisk -lи это дало мне это:

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


Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 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: 0x6396389f

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

Я предполагаю, что моя проблема как-то связана с предупреждением fdiskсверху, но я не знаю, что с этим делать. Как мне действовать сейчас?

редактировать

Мой etc/default/grubследующий:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Кроме того, просто для записи, это то, что я следовал при установке моей двойной загрузки. Учебник (который использует 11.10, я должен отметить) ничего не упоминает об этой проблеме. Есть ли что-то, чего я не должен был делать?

skytreader
источник
Прочитайте этот ответ, может помочь вам: askubuntu.com/questions/84501/…
NickTux
Для информации: ubuntuforums.org/showpost.php?p=12342042&postcount=613
LovinBuntu

Ответы:

17

Во-первых, ваш fdisk -lвывод не проблема; он просто идентифицирует ваш диск как использующий систему разбиения GUID Partition Table (GPT) . Чтобы просмотреть свои разделы, вы должны вместо этого использовать инструмент с поддержкой GPT, такой как gdiskили parted, а не fdisk, который не понимает GPT.

Во-вторых, вы можете получить GRUB для цепной загрузки Windows, добавив подходящую запись в /etc/grub.d/40_customи затем выполнив a sudo update-grub. Запись может выглядеть примерно так:

menuentry "Windows 8" {
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

Однако детали могут зависеть от вашей установки.

В-третьих, если вы считаете rEFInd уродливым, вы всегда можете попробовать другую тему rEFInd или создать свою собственную, как описано в документации по rEFInd. Кроме того, если вы предпочитаете загрузчик в текстовом режиме, вы можете установить textonlyопцию в refind.conf. Вы можете достичь аналогичного результата, переключившись на gummiboot.

В-четвертых, если rEFInd периодически сообщает об ошибках, пожалуйста, запишите их или сделайте снимок экрана цифровой камерой и сообщите о них мне. (Я сопровождающий REFInd.) Ошибки не могут быть исправлены, если никто не сообщает о них; или, если они не являются ошибками в rEFInd, сообщения могут дать подсказки о том, как решить проблему.

Наконец, можно загрузить Linux через rEFInd (или gummiboot) без использования GRUB; вам просто нужен другой загрузчик EFI. Мое личное предпочтение - загрузчик заглушек EFI ядра Linux . Это доступно только в ядрах 3.3.0 и новее. Поскольку Ubuntu 12.04 поставляется с ядром 3.2.0, вам нужно либо найти предварительно собранный 3.3.0 для Ubuntu 12.04 (я слышал о таких вещах, но у меня нет удобных ссылок), либо собрать свой собственный из исходного кода. (Вы также можете установить Ubuntu 12.10, которая поставляется с подходящим ядром, но, вероятно, вы хотите выпуск LTS, так что это может быть неоптимально.) См. Страницу документации rEFInd по загрузке Linuxдля получения дополнительной информации о том, как настроить это. Вы также можете использовать ELILO или GRUB Legacy. Если вы просто возражаете против задержки, вы можете уменьшить значение тайм-аута GRUB 2 и установить его так, чтобы меню по умолчанию не отображалось.

Род Смит
источник
1
Во-первых, ничего себе, я не осознавал, что вы являетесь хранителем REFInd. Далее, что касается меню GRUB ... Я пробовал это, но это не работает. Среди других снимков в темноте я попытался установить раздел ESP, но безрезультатно. Даже пытался использовать один из тех графических редакторов GRUB (забыл название). Наконец, что касается rEFInd, ошибки, о которых он сообщает, не являются критическими (отредактирую мой пост, чтобы отметить это) - при запуске он просто говорит мне, что не может найти определенные .efi. Я понятия не имею, откуда они пришли.
Skytreader
Проверьте наличие указанного файла в ESP. Также убедитесь, что регистр имени файла правильный. (Это не должно иметь значения, но я знаю об одном глючном EFI, где это происходит!) Если это не помогает, какое сообщение об ошибке (если есть) возвращает GRUB, когда вы пытаетесь запустить Windows через эту запись?
Род Смит
8

Загрузитесь в Ubuntu с помощью CD,
выберите «Попробуйте Ubuntu»,
подключитесь к Интернету,
откройте окно терминала, используя Ctrl- Alt-, tа затем запустите:boot-repair

Если boot-repair не найден, установите его:

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

Нажмите Рекомендованный ремонт. Напишите на бумаге новый URL, который появится. Перезагрузите компьютер, вы должны получить меню GRUB с доступом к Ubuntu и Windows. Если возникнут проблемы, укажите новый URL.

Скотт Стенсленд
источник
7

Оба ответа с /EFI/Microsoft/Boot/bootmgfw.efiбудет делать. Однако я взломал как черт, чтобы получить правильные настройки для set root='(hd0,gpt1)'. Если вы знаете, это очень просто

Когда GRUB запустится: нажмите, чтобы c дать команду lsв приглашении.
Вы получите список разделов на жестких дисках, таких как (hd0, gpt1) и т. Д.
Введите ls(hd0, gpt1) и попробуйте другие.
Посмотрите на этикетку, и если на ней написано EFI, вы знаете, что у вас есть хит.

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

Йорген
источник
6

Попробуйте запустить sudo update-grub. Надеемся, что он автоматически распознает Windows 8, добавит его в GRUB и перенастроит меню.

Если это не помогло, пожалуйста, поделитесь своим /etc/default/grubфайлом здесь, мы посмотрим.

Том Клино
источник
1
Здравствуй. sudo update-grubне сделал трюк. Я отредактировал мой вопрос, чтобы включить мой /etc/default/grub. Тем временем я изучаю ответ, связанный NikTh.
Skytreader
3

Попробуйте создать файл с таким названием /etc/grub.d/30_windows:

#! /bin/bash
cat << EOF
menuentry "Windows 8" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
Затем запустите sudo update-grubи перезагрузите компьютер.

Полный учебник

tradeJmark
источник
1
  1. Пожалуйста, скачайте Super Grub и следуйте его указаниям. Я никогда не ухожу из дома без этого. Очень полезно, когда меню grub не отображается.

  2. Вам нужно будет загрузить диск и загрузить его. Просто следуйте инструкциям, которые идут с ним.

  3. Это может также использоваться, чтобы исправить окна также. Поскольку вы можете загружаться только в Windows 8, вы хотите выбрать исправление Linux.

Поиграйте с этим, но прочитайте инструкцию. Через некоторое время вы почувствуете себя экспертом. RS

Лиса
источник
0

Мой окончательный обход

(* Потому что у Тома ничего не вышло, а ссылка на NikTh слишком сложная. Но, эй, спасибо за беспокойство!)

Установите ОТПРАВИТЬ .


Я принимаю свой собственный ответ, пока кто-нибудь не укажет на возможный недостаток и исправление или не решит мои проблемы (который, к сожалению, просто задает вопрос «Как легко установить Windows 8 в GRUB ?»).

( Редактировать 06.08.17: я в конечном итоге использовал rEFInd для решения этой проблемы (см. Принятый ответ выше).)

Далеко не идеальное решение, использование rEFInd кажется очень хакерской работой. С одной стороны, это выглядит некрасиво (извините за ссылку) и говорит мне, что доступ был запрещен для некоторых .efi ({ext2_x64, hfs_x64, iso9660_x64, reiserfs_x64} .efi) при запуске - ничего критичного, и исчезает с кнопкой Нажмите*. И, наконец, выбор Ubuntu efi по-прежнему загружает GRUB, что является совершенно ненужным шагом, по крайней мере, поскольку я не буду беспокоиться о сохранении нескольких версий ядра.

В итоге...

Плюсы: моя система более или менее работает так же, как мои двойные ботинки до UEFI. Минусы: это выглядит некрасиво, плюс увеличенное время загрузки.

* Я должен отметить, что этот rEFInd был установлен через install.shмой раздел Ubuntu. Предыдущий опыт работы с rEFInd (настройка через Windows) не имел этой проблемы.

skytreader
источник
Если предыдущая установка rEFInd через Windows не приводит к ошибкам в файлах, которые не могут быть найдены, но ваша текущая установка из Linux делает это, я догадываюсь, что происходит одно из двух: 1) У вас есть материнская плата с ошибка чувствительности к регистру, и в этом случае улучшение в случае файлов или каталогов может улучшить ситуацию; или 2) Есть что-то странное в вашем ESP (например, FAT16 против FAT32 или незначительное повреждение файловой системы). Некоторые EFI, похоже, очень суетятся из-за файловых систем своих ESP. Точные имена файлов могут помочь сузить проблему.
Род Смит
Хорошо. Виноват. Он не говорил, что не может найти определенные efis, просто что доступ к ним был запрещен для определенных efis (поэтому я так понимаю, что указанные efis есть, просто недоступны?). Я отметил эти файлы сейчас, хотя я до сих пор не знаю, откуда они пришли.
Skytreader
«Доступ запрещен» - это необычная ошибка в EFI, по моему опыту. AFAIK, EFI не поддерживает владение или разрешения, как это делает Linux, поэтому в действительности это не имеет смысла, если только не произошла ошибка чтения с диска. Я видел странные ошибки записи на диск под EFI, которые испаряются при следующей перезагрузке. Если эта проблема не устраняется, вы можете запустить тест SMART на диске в случае сбоя оборудования, а также выполнить резервное копирование и перезаписать ESP на случай странного повреждения файловой системы, которое не может исправить dosfsck. Кроме этого, может быть полезно сообщить, какие файлы создают проблемы.
Род Смит
1
Сообщение «Отказано в доступе» почти наверняка относится к безопасной загрузке. Такое сообщение появляется, если rEFInd пытается загрузить неподписанный двоичный файл EFI в режиме безопасной загрузки. Поразительно, что вы можете запустить rEFInd вообще, поскольку он сам не подписан. Я догадываюсь, что у вас есть какая-то странная глючная полуактивированная настройка Secure Boot в вашей прошивке. Самое простое решение на данный момент - полностью отключить Secure Boot, но есть и другие. Смотрите мою веб-страницу в rodsbooks.com/efi-bootloaders/secureboot.html для получения дополнительной информации.
Род Смит
На моем ноутбуке hp я должен нажать f9 и затем загрузить grub, в противном случае Windows загружается. Также есть возможность загружать Windows из grub, хотя я никогда не использую ее. Если мне скучно в Windows, я просто включаю его и жду Windows. Если я планирую загрузить Ubuntu, я просто нажимаю F9, как только я включаю.
Geoffmcc