На этот вопрос уже есть ответ здесь:
При установке не обнаружил Windows. Я смонтировал раздел Windows и запустил os-prober, но никаких результатов не дало.
Я могу загрузить Windows или Ubuntu, указав раздел в порядке загрузки UEFI. Похоже, что BIOS не позволяет загрузиться с устаревшими версиями. SecureBoot включен.
Это с Ubuntu 12.04 LTS на Inspiron 15.
Вот gdisk:
1 2048 1026047 500.0 MiB EF00 EFI system partition
2 1026048 1107967 40.0 MiB FFFF Basic data partition
3 1107968 1370111 128.0 MiB 0C01 Microsoft reserved part
4 1370112 2394111 500.0 MiB 2700 Basic data partition
5 2394112 544743423 258.6 GiB 0700 Basic data partition
6 606183424 625140399 9.0 GiB 2700 Microsoft recovery part
7 544743424 545230847 238.0 MiB 0700 (/boot)
8 545230848 556949503 5.6 GiB 8200 (swap)
9 556949504 606181375 23.5 GiB 0700 (/)
При установке ubuntu, я полагаю, я указал, что загрузчик должен быть установлен на / dev / sda.
Я добавил следующее в /etc/grub.d/40_custom, но при загрузке ubuntu не предлагал меню grub:
menuentry "Windows 8" {
set root = "(hd0,4)"
chainloader +1
}
Я думаю, что при загрузке очень быстро мигает сообщение «Ошибка диска EFI», прежде чем Ubuntu начнет загрузку.
Сначала попробуйте отключить безопасную загрузку. Хотя Ubuntu теоретически поддерживает безопасную загрузку, все еще есть много сообщений о проблемах, связанных с безопасной загрузкой, особенно в конфигурациях с двойной загрузкой. Я думаю, что маловероятно, что отключение Secure Boot немедленно решит ваши проблемы, но это повысит вероятность того, что любая вещь, которую вы пытаетесь исправить, удастся.
Во-вторых, вы можете попытаться решить проблему с загрузкой несколькими способами, в том числе:
ro root=/dev/sda9
. Если вы устанавливаете пакет Debian, вам больше не нужно это делать. Образы USB / CD-R также должны успешно загружать как Windows, так и Linux через GRUB. /etc/grub.d/40_custom
запись для Windows. Тот, что в вашем первоначальном вопросе, мог бы работать в системе на основе BIOS, но в EFI он потерпит неудачу. Вы хотели бы что-то, что будет выглядеть примерно так: .
menuentry "Windows" {
insmod part_gpt
insmod chain
set root='(hd0,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
Обратите внимание, что эта точная 40_custom
запись не всегда работает; вам может понадобиться настроить его для вашей системы. (То, что работает на одном компьютере, часто с треском проваливается на другом.)
Вы можете полностью удалить разрешение на выполнение из /etc/grub.d/30_os-prober, потому что, даже если он ничего не находит, он устанавливает тайм-аут на 0, поэтому экран grub не виден. Затем исправьте команду chainloader, +1 для диска с разделами msdos, и у вас есть диск с разделами gpt, поэтому он должен выглядеть следующим образом:
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
update-grub создаст новый grub. файл cfg, но он помещается в / boot / grub. Вам нужно либо скопировать его в / boot / efi / EFI / ubuntu, либо убедиться, что файл grub.cfg в ... ubuntu является просто заглушкой, которая тянет его в / boot / grub (я думаю, что более поздние выпуски делают это по умолчанию, но 12.04 - нет.)
Даже с фиксированным загрузчиком цепей Windows может все еще не загружаться успешно (ошибка 1091464), поэтому вам все равно придется загружать Windows по умолчанию или через меню загрузки UEFI, как и сейчас.
Убедитесь, что флаг загрузки установлен в разделе EFI. Расположение загрузчика на самом деле - / EFI / ubuntu в разделе efi даже при выборе диска. Файлы должны быть shim.efi, grubx64.efi (подписанная версия), grub.cfg (и, возможно, gcdx64.efi). Они должны подходить для успешной загрузки с безопасной загрузкой из меню UEFI.