Я установил Windows 8 и Ubuntu 12.10 в стиле UEFI (сначала win8, затем ubuntu). GRUB2 показывает мне обе записи Ubuntu и Win8.
Если я загружаюсь в Ubuntu, это нормально. Я мог перезагрузиться в любое время, когда я увижу GRUB2 без изменений.
История меняется, когда я загружаюсь в Win8. Когда я загружаюсь в Win8 с помощью GRUB2, я перехожу к диспетчеру загрузки Windows (в котором есть только запись Windows 8). Я ударил Windows, и он загружается нормально. При перезагрузке нет ни GRUB2, ни Win loader. У него нет загрузчика.
Я загрузил LiveCD и скачал boot-repair и все вернулось. Это бесконечный цикл.
GRUB2 должен загружать загрузчик Win? Что я могу сделать, чтобы это исправить?
Дополнительная информация:
USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.efi"`
-rwxr-xr-x 1 root root 1357480 Dec 9 21:41 /boot/efi/EFI/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1357480 Dec 9 21:41 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
-rwxr-xr-x 1 root root 1350896 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgr.efi
-rwxr-xr-x 1 root root 1357480 Dec 9 21:41 /boot/efi/EFI/Microsoft/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1263856 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/memtest.efi
-rwxr-xr-x 1 root root 897400 Dec 9 21:41 /boot/efi/EFI/ubuntu/grubx64.efi
-rwxr-xr-x 1 root root 1357480 Dec 9 21:41 /boot/efi/EFI/ubuntu/shimx64.efi
USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.bkp"`
-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Boot/bootx64.efi.bkp
-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi.bkp
USER@MACHINE:~$ sudo parted /dev/sda print
Model: ATA ST31000524AS (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 316MB 315MB ntfs Basic data partition hidden, diag
2 316MB 420MB 105MB fat32 EFI system partition boot
3 420MB 555MB 134MB Microsoft reserved partition msftres
4 555MB 751GB 750GB ntfs Basic data partition
5 751GB 998GB 248GB ext4
6 998GB 1000GB 2000MB linux-swap(v1)
Microsoft, как всегда, отстой, им не нужна другая ОС, поэтому они просто перезаписывают менеджер загрузки. Ищите bcdedit
в Windows 8. До сих пор я не узнал, как его изменить.
Windows 8 с включенной функцией быстрого перезапуска «восстановит» некоторые данные, включая загрузчики EFI, при завершении работы. Поэтому после того, как вы завершите настройку среды двойной загрузки и загрузите Windows 8 один раз, при следующей загрузке вы потеряете настройки двойной загрузки. Вот почему вам нужно отключить функцию быстрого перезапуска.
Запустите cmd.exe от имени администратора и введите:
powercfg /h off
Проверьте настройки:
powercfg /a
Вместо рекомендуемого восстановления попробуйте следующее:
Backup and rename EFI files
-> поставить галочку Restore EFI backups
-> Применить. [ 113] Ubuntu
, затем перезагрузите компьютер. Загрузитесь в Linux, введите следующие три команды в оболочке и опубликуйте вывод здесь:
ls -l `find /boot/efi -iname "*\.efi"`
ls -l `find /boot/efi -iname "*\.bkp"`
sudo parted /dev/sda print
Обратите внимание, что это обратные галочки (слева от клавиши «1» на большинстве клавиатуры) вокруг команд find
.
Результатом должен быть список всех загрузчиков вашего ESP, включая как обычные имена, так и переименованные версии, созданные Boot Repair; и список всех разделов на вашем диске.
Кроме того, какой компьютер вы используете? (Марка и модель.) Поставлялась ли она с Windows 8 или вы установили ее самостоятельно?
К сожалению, некоторые производители играют очень раздражающие игры со своими загрузчиками на предварительно загруженных компьютерах с Windows 8. ИМХО, срывать эти установки и начинать с нуля все больше и больше похоже на хорошее решение.
Отредактируйте / ответьте с учетом новой информации:
В вашем выводе нет ничего странного или неожиданного, поэтому похоже, что что-то в Windows «исправляет» то, что он видит как собственный «сломанный» загрузчик Это требует некоторой проработки, которая поможет вам понять, что происходит:
Реализация EFI (или UEFI, которая является просто EFI 2.x) должна проверять записи NVRAM, чтобы решить, какой загрузчик (файл с .efi
расширение) для запуска при загрузке. Однако некоторые реализации не работают и загружают только загрузчик EFI/BOOT/bootx64.efi
или EFI/Microsoft/Boot/bootmgfw.efi
. Другие будут загружать другие загрузчики, но только если у них есть имя «Диспетчер загрузки Windows» или «Red Hat Enterprise Linux».
Чтобы обойти этот тип ошибки, инструмент Ubuntu Boot Repair реализует исправление, которое является по меньшей мере таким же уродливым и запутанным, как и ошибка, которую он обходит: переименовывает эти два загрузчика по умолчанию с расширениями .bkp
, помещает копии GRUB в их место, и настраивает GRUB так, чтобы он запускал загрузчики Windows, используя их новые имена. Это загружает GRUB, но Windows не понимает и может попытаться «исправить» себя. Я думаю, что это то, что происходит - когда Windows загружается, он видит, что ее загрузчик был перезаписан другим, и поэтому пытается исправить проблему.
Я рекомендую вам попробовать следующее:
efibootmgr
. На Ubuntu live CD вы можете сделать это, набрав sudo apt-get install efibootmgr
. sudo efibootmgr -c -l \\EFI\\ubuntu\\shimx64.efi -L "Windows Boot Manager" -p 2
. Будьте осторожны, чтобы набрать эту команду точно , как указано, включая двойную обратную косую черту в качестве разделителей пути к каталогу. Это должно настроить GRUB для запуска в качестве загрузчика по умолчанию, присвоив ему ярлык прошивки «Диспетчер загрузки Windows» на случай, если у вас возникла эта ошибка. (Вы можете попробовать использовать менее обманчивое имя и на большинстве систем, которые будут работать, но, возможно, не для вас.) Если вы не не используете Secure Boot, вы можете заменить grubx64.efi
на shimx64.efi
в этой команде, но учитывая, что в вашей системе присутствует shimx64.efi
, я подозреваю, что вы используете Secure Boot. Если это работает на этом этапе, то отлично. Если он загружается в GRUB, но GRUB не может запустить Windows, вам может потребоваться настроить конфигурацию GRUB так, чтобы она ссылалась на EFI/Microsoft/Boot/bootmgfw.efi
, а не на EFI/Microsoft/Boot/bootmgfw.efi.bkp
.
Если вы не можете заставить свою систему запускать GRUB таким образом, то у вас может быть очень поврежденная прошивка в сочетании с чем-то в Windows, которое автоматически «исправляет» «поврежденный» загрузчик при каждой загрузке, закрывая Ваш лучший (хотя и некрасивый) путь ремонта. В этом случае у меня есть несколько дополнительных предложений:
t
в меню экспертов), вы сможете получить прошивку для использования желаемого загрузчика, в то время как Windows будет смотреть на свой собственный загрузчик. , Это очень умозрительный, хотя; это может вообще не сработать. Обратите внимание, что если вы используете какое-либо решение, включающее rEFInd, вам может потребоваться настроить его с помощью Secure Boot, с включением прыжков через некоторые дополнительные обручи. (Эта ситуация со временем улучшится, но сейчас все еще немного неловко.) В качестве альтернативы вы можете отключить Secure Boot в своей прошивке.
Надеюсь, это поможет!