Обновление с 13.10 по 14.04 сломал Grub

11

У меня двойная загрузка Ubuntu + Windows 8 в системе UEFI. Все было в порядке, пока я не обновился до Ubuntu 14.04 с 13.10.

Теперь, когда я загружаю компьютер, я получаю экран спасения grub, подобный следующему:

Failed to open \EFI\Microsoft\Boot\grubx64.efi - 800000000000000E
Failed to load image
Failed to open \EFI\Microsoft\Boot\MokManager.efi.efi - 800000000000000E
Failed to load image
Welcome to GRUB!

error: symbol 'grub_term_highlight_color' not found.
grub rescue> 

Использование восстановления из live cd (13.10 или 14.10) сообщает об ошибке и создает этот отчет: http://paste2.org/Y8mDwa0M

(Boot repair говорит, что установит пакеты из Ubuntu 13.10)

но ничего не меняется.

Если я нажимаю f12 при загрузке, я попадаю на экран BIOS (меню загрузки), где я могу выбрать hdd, usb, DVD-ридер и, если я нажимаю на HDD, я получаю три варианта:

Выберите устройство для загрузки:

Windows Boot Manager 
ubuntu
Ubuntu

Вариант Windows возвращает меня к спасению.

С двумя другими вариантами я попадаю в меню grub, где я могу запустить Ubuntu, но опция окна не работает

Я больше не знаю что делать

Обновление :

Спасибо за ответы, я на самом деле все их перепробовал (переустанавливал grub более 5 раз из разных версий Ubuntu на флешки и много раз использовал восстановление загрузчика, но ничего не получалось)

В конце я использую rEFInd ( http://www.rodsbooks.com/refind/getting.html ), который позволяет мне перейти к grub, из которого я могу запускать Ubuntu (но не windows) и запускать окна самостоятельно. используя меню REFInd.

Но конечно это не идеальное решение

Обновление 2:

У меня только один диск:

введите описание изображения здесь

Обновление 3:

это ошибка, которая появляется, когда я пытаюсь установить grub или запустить grub-install:

Installing for i386-pc platform. 
grub-install: Warning: This GPT partition label has no BIOS Boot Partition, the embed is not possible. 
grub-install: Warning: This embed is not possible. GRUB can only be installed in this configuration using blocklist. The blocklist however, are not reliable and it is not recommended to use ..
Installation completed, no errors reported.
Generating grub configuration file ... 
Found linux image: / boot/vmlinuz-3.13.0-24-generic 
Found initrd image: / boot/initrd.img-3.13.0-24-generic 
Found linux image: / boot/vmlinuz-3.11.0-19-generic 
Found initrd image: / boot/initrd.img-3.11.0-19-generic 
Found linux image: / boot/vmlinuz-3.11.0-7-generic 
Found initrd image: / boot/initrd.img-3.11.0-7-generic 
Found linux image: / boot/vmlinuz-3.11.0-5-generic 
Found initrd image: / boot/initrd.img-3.11.0-5-generic 
Found linux image: / boot/vmlinuz-3.11.0-4-generic 
Found initrd image: / boot/initrd.img-3.11.0-4-generic 
Found linux image: / boot/vmlinuz-3.11.0-3-generic 
Found initrd image: / boot/initrd.img-3.11.0-3-generic 
Found linux image: / boot/vmlinuz-3.11.0-2-generic 
Found initrd image: / boot/initrd.img-3.11.0-2-generic 
Found Windows Boot Manager on / dev/sda2 @ / EFI / Microsoft / Boot / Bootmgfw.efi 
Adding boot menu entry for the EFI firmware configuration 
done

(перевод с итальянского)

Маттео Пальяцци
источник
2
Хм ... Связанные? bugs.launchpad.net/ubuntu/+source/grub2/+bug/1289977
Shyam K
Я пробовал эти команды, но застрял на chroot. Я получаю сообщение об ошибке: "chroot: не удалось запустить
Получил ту же ошибку при переходе на 14.04, это мне помогает: wiki.ubuntuusers.de/GRUB_2/Reparatur , почти такой же, как ответ freeseek
1
@Larry См. Пост ниже, метод 3 # 1 - ваша проблема, вы не можете использовать 32-битный корень изменений для восстановления 64-битной системы.
eyoung100

Ответы:

7

Я не проверял это со сломанным grub в 14.04, но у меня никогда не было проблем с использованием этих инструкций:
https://wiki.ubuntu.com/Grub2#Recover

Прежде всего, вы должны запустить вашу систему с живого CD или USB. потом

" МЕТОД 3 - CHROOT

Этот метод установки использует команду chroot для получения доступа к сломанным системным файлам. Как только команда chroot введена, LiveCD рассматривает сломанную систему / как свою собственную. Команды, запускаемые в среде chroot, влияют на сломанные системные файловые системы, а не на LiveCD.

1) Загрузитесь с рабочего стола LiveCD (Ubuntu 9.10 или новее). Обратите внимание, что Live CD должен совпадать с системой, которую вы исправляете, - 32-битной или 64-битной (если нет, то chroot не удастся).

2) Откройте терминал (Приложения> Принадлежности> Терминал).

3) Определите ваш обычный системный раздел - (переключатель в нижнем регистре "L")

sudo fdisk -l

Если вы не уверены, бегите

df -Th  

Ищите правильный размер диска и формат ext3 или ext4.

4) Смонтируйте ваш обычный системный раздел:

Замените правильный раздел: sda1, sdb5 и т. Д.

sudo mount /dev/sdXX /mnt  

Пример: sudo mount / dev / sda1 / mnt

5) Только если у вас есть отдельный загрузочный раздел: sdYY является обозначением раздела / boot (например, sdb3)

sudo mount / dev / sdYY / mnt / boot 
6) Смонтируйте критические виртуальные файловые системы:
sudo mount --bind / dev / mnt / dev
sudo mount --bind / dev / pts / mnt / dev / pts
sudo mount --bind / proc / mnt / proc
sudo mount --bind / sys / mnt / sys 
7) Загрузите ваше обычное системное устройство:

sudo chroot / mnt 

8) Если нет /boot/grub/grub.cfg или это не правильно, создайте его, используя

обновление-личинка 

9) Переустановите GRUB 2:

Замените правильное устройство - sda, sdb и т. Д. Не указывайте номер раздела.

grub-install / dev / sdX 

10) Проверьте установку (используйте правильное устройство, например sda. Не указывайте раздел):

sudo grub-install --recheck / dev / sdX 

11) Выход из chroot: CTRL-D на клавиатуре

12) Размонтировать виртуальные файловые системы:

sudo umount / mnt / dev / pts
sudo umount / mnt / dev
sudo umount / mnt / proc
sudo umount / mnt / sys 

13) Если вы смонтировали отдельный раздел / boot:

sudo umount / mnt / boot 

14) Размонтируйте каталог LiveCD в / usr:

sudo umount / mnt / usr 

15) Размонтировать последнее устройство:

sudo umount / mnt 

16) Перезагрузка.

перезагрузка sudo 
"

Также есть другие способы починить личинку: Как я могу чинить личинку? (Как вернуть Ubuntu после установки Windows?)

desgua
источник
1
Шаг 3,4 и 9 сделали работу за меня. Спасибо
ездазузена
1
ремонт сапог с треском провалился - но у меня это работало безупречно
Джон Скарпетейг
2

Была та же ошибка "символ 'grub_term_highlight_color' не найден", застрявшая в Grub rescue. Пробовал boot-repair (рекомендуемый вариант), но не получилось!

Решение: Загрузил загрузочный boot-repair.iso ( http://sourceforge.net/projects/boot-repair-cd/ ) и сделал загрузочный usb-диск. Загрузился с него, подключился к интернету и запустил «Рекомендуемое восстановление», затем следовал инструкциям в несколько шагов (удалил / удалил grub и затем заново установил новую версию), что сработало для меня! Я думаю, в вашем случае grub должен быть удален, а затем переустановлен на sda8 вместо sdb1.

user191413
источник
это работает для меня: я загрузил образ CD восстановления загрузки - я использовал x64, поскольку установка Ubuntu x64. Затем установил ISO через unetbootin . Выполняется регулярный ремонт и альт!
Мета
Загрузочный диск (64-битная версия 14.04 для настольных компьютеров) с восстановлением загрузки также работал у меня после обновления с 13.10 до 14.04. Со своей стороны я следовал инструкциям здесь (2-й вариант) и нажал «Рекомендованный ремонт» в инструменте, и затем внезапно снова заработал grub!
Krøllebølle
2

У меня была такая же проблема. Я предполагаю, что, поскольку у меня есть два жестких диска, система пытается запустить не с того диска, на котором установлена ​​старая версия GRUB. Моим решением было запустить Ubuntu с USB-накопителя (не имеет значения, какая версия). Как только вы начнете, эти команды сделают это, запустив от имени пользователя root:

mkdir /tmp/drive
sudo mount /dev/sdX1 /tmp/drive
sudo mount --bind /dev /tmp/drive/dev
sudo mount --bind /proc /tmp/drive/proc
sudo mount --bind /sys /tmp/drive/sys
sudo chroot /tmp/drive
dpkg-reconfigure grub-pc

Где sdX1 должен быть диском, на котором установлена ​​ваша система. Когда вы запускаете последнюю команду, вы должны выбрать диск sdX, хотя я предполагаю, что его запуск несколько раз установит новую версию grub на каждый диск и даст вам некоторое представление.

freeseek
источник
Я получаю монтирование: точка монтирования / tmp / drive / dev не существует
alemur
1
@ Акмур, ты забыл - возможно, привязать или смонтировать не тот диск? --bind берет файловую систему на диске usb и заменяет / dex / sdX1 / dev на usedevice / dev
eyoung100
@ Akmur вы, вероятно, установили не тот раздел. Когда я упомянул sdX1, это должно относиться к вашему загрузочному разделу, который уже должен содержать каталоги dev, proc, sys. Если их там нет, то, скорее всего, вы монтируете не тот раздел. Если вы считаете, что смонтировали правильный раздел, возможно, просто продолжайте и создайте эти недостающие каталоги с помощью mkdir.
freeseek
1

У меня была такая же ошибка при обновлении с 13.10 до 14.04. Эти инструкции выглядели немного пугающими для меня.

Я закончил тем, что создал загрузочный USB-диск с Super Grub Disk на нем. http://www.supergrubdisk.org/

Загрузился с этого. При загрузке сказал, чтобы он обнаружил установленные ОС. Он нашел мою установку Ubuntu 14.04, поэтому я сказал, чтобы она загрузилась. Загрузился без проблем.

Я уже установил Boot Repair в моей системе. https://sourceforge.net/p/boot-repair

Запустил это и принял изменения по умолчанию.

Неисправность. Вынул USB-накопитель из слота, нажал кнопку питания и ждал с задержкой дыхания.

Система загрузилась нормально! Проблема решена.

Алан
источник
ОП заявил, что Boot Repair не работает, так что это, вероятно, не ответ.
Во всяком случае,
1

Я думаю, у вас есть устаревшие файлы EFI в вашем разделе EFI. Существует ошибка панели запуска, специфичная для ситуации EFI, которая, я подозреваю, касается вашего случая. Это сработало для меня после того, как другие предложения не сработали. Исправление заключается в обновлении файлов EFI вручную . Ниже идет проход. Обратите внимание, что вам нужно заменить ваш раздел EFI вместо /dev/sda1.

  1. Загрузиться, чтобы жить CD
  2. Открыть Xterm
  3. Используйте parted для определения вашего раздела EFI: sudo parted -l(замените / dev / sda1 на следующем шаге)
  4. Смонтируйте свой раздел EFI: sudo mount /dev/sda1 /mnt
  5. Обновите загрузочный EFI-файл: sudo cp /mnt/EFI/ubuntu/grubx64.efi /mnt/EFI/Boot/bootx64.efi
jrennie
источник