Двойная загрузка Windows 10 и Ubuntu 16.04 на UEFI

Двойная загрузка Windows 10 и Ubuntu 16.04 на UEFI

Будучи давним пользователем Ubuntu, я недавно приобрел Acer Revo One, на котором была предустановлена ​​Windows 8 на SSD объемом 60 ГБ. На этот раз я решил сохранить лицензию. Я воспользовался бесплатным обновлением до MS Windows 10 (я решил выполнить чистую установку с USB-диска, чтобы иметь возможность управлять разделами на SSD — я оставил достаточно места для корневого раздела). Эта установка прошла нормально.

Затем я установил жесткий диск и приступил к установке Ubuntu 16.04 с помощью Live USB.

Я разбил диски следующим образом (я получил это с помощью GParted после загрузки с Ubuntu Live USB):

/dev/sda

/dev/sdb

В основном я хочу:

  1. обе ОС для загрузки с SSD
  2. Ubuntu для использования HDD в качестве номинального /homeраздела подкачки и/tmp
  3. общий раздел, на который могут записывать данные как Windows, так и Ubuntu

Понятия не имею, почему /dev/sdb3, но /dev/sdb4у меня есть флаги «msftdata».

Secure Boot включен (я читал разные посты - некоторые говорят, что его нужно отключить при установке Ubuntu, некоторые говорят, что этого делать не нужно). Fast Boot отключен.

Ubuntu устанавливается, как и ожидалось, однако после перезагрузки (после извлечения USB-диска) машина загружает только Windows.

Я проверил BIOS и не нашел возможности загрузить что-либо, кроме диспетчера загрузки Windows (или Live USB-диска, если он установлен).

Отчеты efibootmgr:

BootCurrent:0002 
Timeout: 2 seconds  
BootOrder: 0000,0002,0001 
Boot0000* Windows Boot Manager  
Boot0001 ubuntu 
Boot0002* UEFI: SanDisk

Я заметил, что нет звездочки рядом с Boot0001, что означает, что он не "активен". Я пробовал сделать его активным, а также пробовал изменить порядок загрузки так, чтобы Boot0001 был первым. Я даже пробовал изменить BootNext на 0001. Ничего из этого не работает. Я заметил, что изменения для активации Boot0001 сбрасываются при следующей загрузке, поэтому мои изменения не сохраняются.

Я прочитал несколько постов, в которых дается ряд рекомендаций:

  1. Некоторые говорят, что сначала нужно установить Windows, другие говорят наоборот.
  2. Установите Grub еще раз.
  3. Восстановите записи загрузчика EFI вручную (смонтировав раздел EFI и скопировав/переименовав записи) или с помощью Boot-Repair.

Не могу прикрепить дамп раздела EFI, но вот фрагмент:

./EFI
./EFI/Microsoft
./EFI/Microsoft/Boot
./EFI/Microsoft/Boot/bg-BG
./EFI/Microsoft/Boot/bg-BG/bootmgfw.efi.mui
./EFI/Microsoft/Boot/bg-BG/bootmgr.efi.mui
./EFI/Microsoft/Boot/bootmgr.efi
./EFI/Microsoft/Boot/memtest.efi
./EFI/Microsoft/Boot/boot.stl
./EFI/OEM/Boot
...
./EFI/Microsoft/Boot/en-GB
./EFI/Microsoft/Boot/en-GB/bootmgfw.efi.mui
./EFI/Microsoft/Boot/en-GB/bootmgr.efi.mui
...
./EFI/OEM
./EFI/OEM/Boot
./EFI/OEM/Boot/boot.stl
./EFI/OEM/Boot/bootmgfw.efi
./EFI/OEM/Boot/bootmgr.efi
./EFI/OEM/Boot/memtest.efi
./EFI/OEM/Boot/BOOTSTAT.DAT
./EFI/OEM/Boot/BCD
./EFI/OEM/Boot/BCD.LOG
./EFI/OEM/Boot/BCD.LOG1
./EFI/OEM/Boot/BCD.LOG2
...
./EFI/OEM/Boot/en-GB
./EFI/OEM/Boot/en-GB/bootmgfw.efi.mui
./EFI/OEM/Boot/en-GB/bootmgr.efi.mui
...
./EFI/ubuntu
./EFI/ubuntu/fw
./EFI/ubuntu/fwupx64.efi
./EFI/ubuntu/grubx64.efi
./EFI/ubuntu/grub.cfg
./EFI/ubuntu/shimx64.efi
./EFI/ubuntu/MokManager.efi
./OEM
./OEM/AcerOA30.xml
./OEM/Factory
./OEM/Factory/AMIDEWINx64.exe
./OEM/Factory/AMIFLDRV64.sys
./OEM/Factory/CHK.bat
./OEM/Factory/CHK_DK.bat
./OEM/Factory/Delay-Diags.exe
...

Я знаю, что я близок к тому, чтобы разгадать эту загадку, так какое из вышеперечисленных предложений, скорее всего, сработает? Я бы предпочел не попадать в ситуацию, когда Windows больше не загружается и приходится начинать все заново. Переустанавливать все занимает много времени.

Это своего рода успех.

Мой BIOS устарел, поэтому я его обновил.

Я также использовал Boot-Repair с загрузочного USB-диска, чтобы восстановить загрузочный раздел EFI (я не уверен, что он вообще был сломан).

Затем я попробовал предложение @fords - запустить bcdedit в w$ - успешно! Grub отображается с множеством вариантов выбора - Ubuntu является выбором по умолчанию.

Все это сошло на нет, когда я перезагрузился в Windows, которая после выключения решила применить обновление, из-за которого Ubuntu перестала загружаться. (глубокий вздох).

Все, что я получаю, это несколько строк, предлагающих мне попробовать

sysctl reboot

или

sysctl defaults

ни то, ни другое не дало особого результата.

Отменили ли обновления Windows bcdedit и/или Linux Boot-Repair? Если да, то как мне предотвратить ежедневный хаос от обновлений Windows?

решение1

Вы пробовали установить загрузчик по умолчанию на Grub в командной строке Windows? Мне пришлось сделать это, когда я устанавливал Ubuntu для работы с Windows 10:

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

Я бы также рекомендовал отключить Secure Boot. Windows — капризный зверь, когда дело касается двойной загрузки.

решение2

После обновления Windows 10 Creator's Update, щелчок правой кнопкой мыши по логотипу Windows показывает опцию PowerShell(Admin) вместо Command Prompt(Admin). Я пробовал редактировать bcdedit с помощью PowerShell и все испортил. Так что не используйте PowerShell с bcdedit, если вы не знаете, что делаете.

Решение — найти командную строку, открыть ее в режиме администратора (щелкните правой кнопкой мыши -> открыть от имени администратора) и использовать общие команды, уже упомянутые выше:

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

Если кто-то разберется, как использовать PowerShell для bcdedit, пожалуйста, напишите здесь.

решение3

Беру свои слова обратно... w$ не испортил мне день (удивительно) - это мои плохие способности редактировать /etc/fstab для оптимизации ssd не дали мне загрузиться в Ubuntu. Все хорошо в мире.

Надеюсь, мой опыт кому-то поможет!

решение4

Другое решение — использовать два раздела EFI. Один только для Windows, другой для Linux и других систем, во втором разделе создайте путь EFI\Microsoft\Boot\ и скопируйте shimx64.efi в bootmgrfw.efi внутри этого пути и оставьте EFI\ubuntu\ нетронутым. Ноутбуки ACER видят shim на этом разделе как Windows Boot Manager и также загружаются отсюда. Я вижу, что os-prober, если в этом разделе есть только bootmgrfw.efi, а не BCD и т. д., распознает только загрузчик Windows на первом оригинальном разделе, не создавая двойного menuentry в grub.cfg. Таким образом, вы можете загрузить GRUB EFI и вызвать ubuntu или windows с правильным chaniload на другой раздел. В этом режиме Windows сохраняет правильную структуру разделов EFI в первом разделе и не должна перезаписывать поддельный bootmgrfw.efi (shim) во втором разделе во время обновлений. У меня это работает на ACER 5750g.

Связанный контент