- Вопрос или проблема
- Ответ или решение
- Настройка GRUB 2 для двойной загрузки Fedora 20 и Windows 8
- 1. Понимание скрипта 30_os-prober
- 2. Отладка исходного скрипта
- 3. Проверьте службы os-prober
- 4. Ручная настройка записи меню GRUB
- 5. Проверка параметров конфигурации BIOS/UEFI
- 6. Применение изменений и перезагрузка
- Заключение
Вопрос или проблема
Я пытаюсь установить двойную загрузку с Fedora 20 и Windows 8. Сначала устанавливаю Windows, а затем Fedora. И Grub автоматически обнаруживает Windows.
Так что по умолчанию \etc\grub.d\30_os-prober
для Windows выглядит так:
case ${BOOT} in chain)
onstr="$(gettext_printf "(на %s)" "${DEVICE}")"
cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
save_default_entry | grub_add_tab
prepare_grub_to_access_device ${DEVICE} | grub_add_tab
case ${LONGNAME} in
Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
;;
*)
cat << EOF
drivemap -s (hd0) \${root}
EOF
;;
esac
cat <<EOF
chainloader +1
}
Это создает menuentry
, который не загружает Windows:
Что я пробовал
Я вручную создал в /etc/grub.d/40_custom
menuentry
, который работает отлично.
menuentry "Windows" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root your_UUID
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}
Так что я пытаюсь адаптировать это для \etc\grub.d\30_os-prober
и заменить последнюю часть на это:
cat <<EOF
search --fs-uuid --no-floppy --set=root $(grub_get_device_id "${DEVICE}")
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}
EOF
но это создает:
menuentry 'Windows Boot Manager' {
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
boot
}
Что не работает.
Мой вопрос
Как мне изменить 30_os-prober, чтобы он создавал работающий grub menuentry?
Я не очень хорошо разбираюсь в Fedora и её Grub2. Но я поделюсь решением, которое я применил в своей системе с двойной загрузкой Ubuntu и Windows XP Professional.
Отредактируйте grub.cfg с помощью vim или любого другого редактора.
vim /boot/grub/grub.cfg
На:
121 ### НАЧАЛО /etc/grub.d/30_os-prober ###
122 menuentry "Microsoft Windows XP Professional (на /dev/sda1)" --class windows --class os {
123 insmod part_msdos
124 insmod ntfs
125 set root="(/dev/sda,msdos1)"
126 search --no-floppy --fs-uuid --set=root AC60CA8160CA522E
127 drivemap -s (hd0) ${root}
128 chainloader +1
129 }
так как стандартный grub Ubuntu добавляет эту Windows как последнюю запись. Я просто добавил эту запись перед всеми другими записями меню.
Попробуйте это :-
menuentry “WINDOWS”{
set root=”(hd0,msdos1)”
chainloader +1
}
Измените номер раздела, на котором установлена ваша Windows.
hd0 :- означает первый диск
msdos1 :- означает первый раздел.
Сегмент /etc/grub.d/30_os-prober
, приведенный в вопросе, генерирует запись GRUB для Windows , которая загружается в стиле BIOS.
Но рабочая пользовательская запись в вопросе указывает, что система использует стиль UEFI. Это значит, что os-prober
должен обнаруживать Windows как универсальную операционную систему UEFI. Другими словами, если вы запустите os-prober
от имени root, результат должен иметь следующий вид:
/dev/<раздел ESP>@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
что должно запустить случай efi)
в скрипте 30_os-prober
, а не случай chain)
. Результирующая запись меню GRUB должна выглядеть примерно так:
menuentry 'Windows Boot Manager (на <устройство ESP>)' --class windows --class os
$menuentry_id_option 'osprober-efi-<UUID ESP>' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root <UUID ESP>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Поскольку ESP обычно является разделом FAT32, <UUID ESP>
обычно представляет собой просто номер тома файловой системы FAT32, в виде XXXX-XXXX
, а не реальный UUID.
Конечно, учитывая, что вопрос теперь почти 10 лет стар, возможно, что скрипт 30_os-prober
GRUB в то время ещё не включал случай efi)
.
Ответ или решение
Настройка GRUB 2 для двойной загрузки Fedora 20 и Windows 8
При настройке системы с двойной загрузкой Fedora 20 и Windows 8 важно убедиться, что загрузчик GRUB корректно обнаруживает обе операционные системы и создает соответствующие записи в меню. Если GRUB не может загрузить Windows, существуют некоторые шаги, которые вы можете предпринять для решения этой проблемы.
1. Понимание скрипта 30_os-prober
Скрипт /etc/grub.d/30_os-prober
предназначен для автоматического обнаружения других операционных систем на вашем компьютере и добавления их в меню загрузчика GRUB. Ваша проблема, судя по описанию, заключается в том, что GRUB создает запись для Windows, которая не работает корректно.
2. Отладка исходного скрипта
Убедитесь, что ваш скрипт /etc/grub.d/30_os-prober
соответствует актуальной версии, особенно если вы используете UEFI. Он должен содержать раздел для обработки UEFI систем, такой как:
case ${BOOT} in
efi)
...
cat << EOF
search --no-floppy --fs-uuid --set=root $(grub_get_device_id "${DEVICE}")
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
EOF
...
;;
esac
Если данный раздел отсутствует, это может стать причиной проблем с загрузкой Windows.
3. Проверьте службы os-prober
Убедитесь, что пакет os-prober
установлен на вашей системе. Это можно сделать, выполнив команду:
sudo dnf install os-prober
После этого выполните команды, чтобы обновить конфигурацию GRUB:
sudo os-prober
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
4. Ручная настройка записи меню GRUB
Если автоматическое обнаружение не работает, вы можете вручную создать запись в /etc/grub.d/40_custom
:
menuentry "Windows 8" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
search --fs-uuid --no-floppy --set=root your_UUID
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}
Замените your_UUID
на UUID вашего EFI-раздела, который можно найти с помощью команды:
lsblk -f
5. Проверка параметров конфигурации BIOS/UEFI
Убедитесь, что в BIOS/UEFI вашего компьютера включен режим UEFI, а не Legacy. Это важно, поскольку Windows 8 обычно устанавливается в режиме UEFI, и загрузчик GRUB должен поддерживать этот режим.
6. Применение изменений и перезагрузка
После внесения всех изменений, не забудьте обновить конфигурацию GRUB:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Затем перезагрузите систему и проверьте новую запись в меню GRUB для загрузки Windows.
Заключение
Следуя вышеуказанным шагам, вы сможете настроить GRUB для корректной загрузки Windows 8 вместе с Fedora 20. Помните, что каждая система индивидуальна и может потребовать дополнительных настроек, поэтому не бойтесь экспериментировать с настройками загрузчика, если это необходимо. Удачи в вашей работе с двойной загрузкой!