Двойная загрузка Win 8 / Ubuntu загружает только Win

12

Мой компьютер - ноутбук Sony Vaio. Я использовал Ubuntu и Win 8 с двойной загрузкой, но Windows каким-то образом удалось удалить меню, чтобы выбрать ОС при запуске. Я думаю, что BIOS является UEFI. Безопасная загрузка уже отключена, и восстановление загрузки как-то не получается.

Как я могу это исправить?

user296880
источник
в sda отсутствует GRUB ... "Поместите GRUB в sda", используя: help.ubuntu.com/community/Boot-Repair
jmunsch
3
С UEFI у вас нет grub в MBR sda, просто в разделе efi, которым он является.
oldfred

Ответы:

18

Sony, HP и многие производители ноутбуков жестко запрограммированы для загрузки только Windows.

Есть несколько обходных путей, которые предлагают вам переместить grub grubx64.efiили shimx64.efiфайл поверх Windows /EFI/windows/bootmgfw.efi. Однако это не рекомендуется, потому что Центр обновления Windows восстановится, bootmgfw.efiи вы вернетесь только к загрузочным окнам.

Вместо этого я предлагаю переименовать резервный файл /EFI/Boot/bootx64.efi и загрузочную запись на жестком диске или использовать rEFInd.

Обязательно сделайте резервную копию всего раздела EFI перед внесением изменений.

У вас есть несколько вариантов:

I. Переместите и переименуйте файлы grub grubx64.efiили shim64.efi(для безопасной загрузки) в эту папку / файл./EFI/BOOT/BOOTX64.EFI

  1. Переименуйте /efi/boot/bootx64.efi, скопируйте shim или grub в / efi / boot и назовите его bootx64.efi Затем загрузите запись с жесткого диска. Новые версии Boot-Repair автоматически делают это с помощью «Использовать стандартный файл EFI» в дополнительных опциях. Он также создает резервную копию текущего файла bootx64.efi, который, вероятно, является просто копией загрузочного файла Windows .efi.

    Из установщика в режиме реального времени смонтируйте раздел efi на жестком диске: смонтируйте раздел efi. проверьте, какой раздел FAT32 с загрузочным флагом. Часто sda1 или sda2, но меняется.

    sudo mount /dev/sda1 /mnt
    

    только если не существует,

    sudo mkdir /mnt/EFI/Boot
    sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
    

    Если новая папка создана, bootx64.efi не будет существовать, пропустите эту команду

    sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
    

    Сделайте grub загрузочной записью жесткого диска в UEFI. Если не существует, возможно, придется обновить UEFI также с помощью efibootmgr.

    sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi 
    

    При необходимости добавьте новую запись загрузки жесткого диска UEFI: см. Также

    man efibootmgr
    

    Если ESP - это sda или записи диска и раздела по умолчанию:

    sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
    

    Если ESP не sda1, sdX - это диск, Y - это раздел efi, а также диски NVMe:

    sudo efibootmgr -c -g  -w -L "UEFI hard drive" -l '\EFI\Boot\bootx64.efi' -d /dev/sdX -p Y
    sudo efibootmgr -c -L "UEFI hard drive" -l "\EFI\Boot\bootx64.efi" -d /dev/nvme0n1 -p 2 
    
  2. (Это то же самое, что Boot-Repair делал во II. Не рекомендуется сейчас: переименуйте /efi/Microsoft/Boot/bootmgfw.efi и скопируйте grub или shim в / efi / Microsoft / Boot и назовите его bootmgfw.efi. Тогда загрузите запись Windows для загрузки в меню grub. Вы должны вручную добавить запись меню grub для загрузки переименованного файла efi Windows. Запись os-prober в Grub2 загружает запись bootmgfw.efi, которая теперь просто grub, поэтому она не будет работать.

    Пользователи, которые вручную перемещали файлы EFI, видят пост # 6.

    http://ubuntuforums.org/showthread.php?t=2101840
    http://ubuntuforums.org/showthread.php?t=2219452
    http://ubuntuforums.org/showthread.php?t=2221498&p=13012109#post13012109

II. Если вы запустили исправление Boot-Repair для «глючного UEFI» со старой копией, лучше отменить его. И затем внесите изменения, описанные выше, чтобы использовать bootx64.efi. Чтобы отменить и переименовать файлы с их исходными именами, вам просто нужно отметить опцию «Восстановить резервные копии EFI» в Boot-Repair.

Любое переименование вручную или с помощью Boot-Repair должно быть переделано после обновления Windows, поскольку это восстановит файлы Windows.

III. Отредактируйте Windows BCD, одну из альтернатив переименованию Boot-Repair, чтобы у shim было имя Windows. Некоторые системы лучше работают для регистрации grub / shim изнутри Windows - для тех, которые по умолчанию сбрасывают Windows.

Grub не отображается при запуске Windows 8.1 Ubuntu 13.10 Dual boot

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

https://coderwall.com/p/vfyqkg

Внутривенно Если описание должно быть Windows, измените описание UEFI. Это действительно работает только для тех, кто использует только Ubuntu и вообще не устанавливает Windows.

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"

Восстановите или создайте новую запись Windows UEFI - предполагается, что по умолчанию sda1 добавляет -p 2, если sda2 (см. Раздел man efibootmgr -d диск & -p раздел):

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme0n1 -p 1 

V. Некоторые устанавливают rEFInd, который кажется другим обходным путем и имеет хорошие иконки загрузки.

http://www.rodsbooks.com/refind/index.html

http://www.rodsbooks.com/refind/secureboot.html

PPA доступен для упрощения установки в Ubuntu

http://www.rodsbooks.com/refind/getting.html

oldfred
источник
Да! Переименование сработало для меня! Я смонтировал раздел efi и скопировал файлы ../EFI/ubuntu/grubx64.efi в ../EFI/Boot/ и в / EFI / Microsoft / Boot и изменил имя файла следующим образом. В каталоге ../EFI/Boot я перезаписал bootx64.efi файлом, а в ../EFI/Microsoft/Boot перезаписал файл bootmgfw.efi файлом. Это было все, что я думаю. Большое спасибо!
user296880
Для тех, кто застрял в Windows: мне удалось выполнить описанный в варианте a1 подход переименования, не выходя из Windows. Я открыл командное окно как администратор, затем побежал mountvol S: /Sмонтировать раздел EFI как S :. У меня были странные проблемы с перемещением папок вверх и вниз, но перемещение копии grubx64.efi по одной папке в / EFI / Boot с последующим переименованием в bootx64.efi работало.
Питер Беккер
Я удивлен, что английский майор, который перенумеровал мой пост, не сделал этого. У меня были старые комментарии со ссылкой на A: & B: как основные разделы. :)
oldfred
1

Ответ выше не работает для моего друга HP Pavilion, но я нашел достойный обходной путь. Кажется, что прошивка HP всегда перезаписывает при BootOrderкаждой загрузке и устанавливает Windows в первую очередь, но это все же уважает BootNext. Поэтому я написал скрипт запуска для установки BootNextпри каждой загрузке.

  1. Бегать

    efibootmgr
    

    найти числовой код BootCurrent. В случае моего друга это было 0003.

  2. /etc/systemd/system/boot-linux-next.service:

    [Unit]
    Description=Boot Linux next
    
    [Service]
    Type=oneshot
    # Replace '3' in the next line with the appropriate code.
    ExecStart=efibootmgr --bootnext 3
    
    [Install]
    WantedBy=multi-user.target
    
  3. Бегать

    systemctl enable --now boot-linux-next.service
    

Это означает, что если вы когда-нибудь загрузитесь, вам придется вручную выбрать Linux при загрузке в следующий раз.

Лейф Арне Сторсет
источник
0

У меня Acer с такой же проблемой. Мое решение состоит в том, чтобы «перезагрузить» окна, а не завершать работу (что на самом деле просто гибернация).

При перезагрузке (которая может вызвать обновления) система выключается, и вы можете выбрать загрузку из BIOS. Вы должны поймать его, прежде чем он перезагрузится.

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

доллар
источник