Grub 2 os prober для Windows 8

Вопрос или проблема

Я пытаюсь установить двойную загрузку с 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. Помните, что каждая система индивидуальна и может потребовать дополнительных настроек, поэтому не бойтесь экспериментировать с настройками загрузчика, если это необходимо. Удачи в вашей работе с двойной загрузкой!

Оцените материал
Добавить комментарий

Капча загружается...