Будучи давним пользователем Ubuntu, я недавно приобрел Acer Revo One, на котором была предустановлена Windows 8 на SSD объемом 60 ГБ. На этот раз я решил сохранить лицензию. Я воспользовался бесплатным обновлением до MS Windows 10 (я решил выполнить чистую установку с USB-диска, чтобы иметь возможность управлять разделами на SSD — я оставил достаточно места для корневого раздела). Эта установка прошла нормально.
Затем я установил жесткий диск и приступил к установке Ubuntu 16.04 с помощью Live USB.
Я разбил диски следующим образом (я получил это с помощью GParted после загрузки с Ubuntu Live USB):
В основном я хочу:
- обе ОС для загрузки с SSD
- Ubuntu для использования HDD в качестве номинального
/home
раздела подкачки и/tmp
- общий раздел, на который могут записывать данные как 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 сбрасываются при следующей загрузке, поэтому мои изменения не сохраняются.
Я прочитал несколько постов, в которых дается ряд рекомендаций:
- Некоторые говорят, что сначала нужно установить Windows, другие говорят наоборот.
- Установите Grub еще раз.
- Восстановите записи загрузчика 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.