Добавить Windows 10 в список GRUB OS
Я недавно получил компьютер из школы. Он пришел с установленной Windows 8.1. Затем я установил еще одну копию Windows 8.1 (чтобы она использовала встроенную лицензию Windows Pro) и обновил ее до Windows 10. Затем я установил Ubuntu вместе с Windows 8 и 10.
Обратите внимание, что я сделал отдельный раздел ext2 размером 255 МБ для /boot.
Теперь, когда я загружаю компьютер, я сначала вижу приглашение GRUB (я уже разархивировал приглашение grub, потому что оно мне так нравится) с параметрами Windows 8 и Ubuntu. Тем не менее, нет варианта Windows 10. Если я выберу Ubuntu, компьютер загрузится в Ubuntu. Однако, если я выберу опцию Windows 8, меня затем отправят в загрузчик Windows, где он затем дает мне возможность загрузить либо Windows 8, либо Windows 10. (Однако к этому моменту компьютер уже загрузил ядро и все Очевидно, Microsoft неправильно поняла концепцию загрузчика и решила, что это означает "загрузить практически всю систему перед тем, как на самом деле показать загрузчик". Типичный Microsoft.)
Как отключить загрузчик Windows и добавить опцию Windows 10 в GRUB? РЕДАКТИРОВАТЬ: Кто-то ответил, сказав мне, чтобы отключить загрузчик Windows. Однако я до сих пор не знаю, как добавить Windows в список ОС GRUB. Может кто-нибудь помочь с этим?
РЕДАКТИРОВАТЬ 2: После удаления Windows 10 из загрузчика Windows с EasyBCD, казалось, что после нескольких перезагрузок он будет постоянно показывать себя, и Windows 10 появится снова. Однако позже я удалил Windows 10 из списка операционных систем в msconfig, и он, похоже, остался удаленным.
Тем не менее, я все еще не смог заставить Windows 10 появиться в GRUB. Как будто GRUB просто не обнаруживает это.
Кроме того, я поставлю это в вопросе, чтобы люди видели это - я попытался использовать boot-repair
Однако, это не помогло никому.
6 ответов
Иногда os-prober не прав.
Посмотрите на UUID вашего раздела Windows 10, например:
sudo blkid /dev/sda2
Затем отредактируйте /etc/grub.d/40_custom
и в конце файла добавьте:
menuentry "Windows 10" --class windows --class os {
insmod ntfs
search --no-floppy --set=root --fs-uuid $your_uuid_here$
ntldr /bootmgr
}
Не забудьте изменить UUID.
И, наконец, обновите ваш конфигурационный файл grub:
sudo update-grub
Это решение обеспечивает правильный вход в меню grub2 и загружает цепочки непосредственно в Windows 10 без ссылки на BIOS. Это происходит от https://ihaveabackup.net/article/grub2-entry-for-windows-10-uefi поэтому я не претендую на кредит. Было таким облегчением найти рабочее решение
Вкратце, отредактируйте /etc/grub.d/40_custom и добавьте:
menuentry 'Windows 10' {
search --fs-uuid --no-floppy --set=root CC66-4B02
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
Чтобы найти UUID для корневой строки --set= (в примере CC66-4B02), вы используете sudo fdisk -l для идентификации раздела EFI, затем sudo blkid /dev/sda1 (или любой другой) для поиска UUID раздела EFI, Обратите внимание, что вам нужен не раздел Windows, а EFI. После сохранения изменений запустите sudo update-grub, чтобы сгенерировать файл /boot/grub/menu.cfg, а затем перезапустите для проверки.
Использование:
sudo update-grub
sudo grub-install /dev/[BOOT PARTITION eg. Sda6]
Команды в терминале Ubuntu, возможно, это решит вашу проблему.
По этой команде система автоматически обнаружит установку окон и добавит их в список grub.
Используйте это приложение EasyBCD для Windows http://neosmart.net/EasyBCD/ скачать бесплатную версию и установить ее.
Когда вы откроете его, вы увидите запись для Windows 8 и один для Windows 10.
удалите запись Windows 8, и вы будете в порядке.
Обновите после выполнения вышеуказанных шагов, вернитесь в Ubuntu,
открыть терминал, нажав Ctrl + Alt + T
затем скопируйте эти команды одну за другой,
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
и тем самым вы установите инструмент под названием boot-repair.
откройте восстановление загрузчика из тире, и вы получите это окно
выберите рекомендуемый ремонт и следуйте инструкциям.
Обратите внимание, что вы должны быть подключены к Интернету при использовании boot-repair.
Насколько я понял ваш вопрос, у вас есть две разные установки Windows на одном или нескольких жестких дисках, и вы не хотите, чтобы загрузчик Windows мешал или управлял обеими установками Windows. Я помню, что на старых установках было возможно напрямую загрузить ядро Windows из Grub (я могу ошибаться здесь), но я не смог сделать это на установках UEFI. Наличие двух независимых конфигураций загрузчика Windows, которые можно вызывать из Grub независимо, должно быть очень близко к тому, что вы ищете.
Он пришел с установленной Windows 8.1.
Я собираюсь предположить, что это компьютер с поддержкой UEFI.
- Проверьте, действительно ли компьютер поддерживает UEFI (я удалю свой ответ, если это не так) и ознакомьтесь с различиями между BIOS и UEFI ( разные режимы загрузки, efibootmgr, разные таблицы разделов, системный раздел EFI (ESP), загрузчики EFI...).
- Затем убедитесь, что все операционные системы установлены в режиме UEFI, и убедитесь, что у вас есть таблица разделов GPT. Вы можете использовать Windows
dism
чтобы выполнить резервное копирование и восстановление разделов в новом макете таблицы разделов и использовать командную строку с последнего установочного носителя Windows для переустановки загрузчика, подробнее об этом см. в следующем пункте.- Поскольку вам было рекомендовано попробовать различные другие инструменты, которые не решают вашу проблему, вы должны вернуть эти изменения в первоначальное состояние, иначе это будет становиться все более и более запутанным. Извини за это.:(
- Вы можете использовать мой ответ из раздела Как загрузить Windows 8 с устаревшего раздела MBR в режиме UEFI через GRUB?
- Этот ответ устанавливает независимую конфигурацию загрузчика Windows через
bcdboot
в другом месте, где Grub будет называть это. Для удобства я выбрал корневой раздел Windows. Это необходимо сделать для каждой установки Windows, чтобы каждая установка Windows имела свою собственную и загружалась только сама (очистите отдельные меню загрузки Windows от других записей). - Помните, что вам нужно создать отдельную запись для каждой установки Windows, в которой вы хотите загрузиться
/etc/grub.d/40_custom
и следуйте инструкциям и объяснениям относительно UUID, разделов и таблиц разделов. - Вероятно, отключите все полу-умные функции, которые обнаруживают различные ОС, такие как OS-Prober в Grub (
GRUB_DISABLE_OS_PROBER
) или устранение неполадок при загрузке с Windows или загрузку-восстановление (или ручную очистку после них).
- Этот ответ устанавливает независимую конфигурацию загрузчика Windows через
NB: Ваш запрос состоял в том, чтобы иметь возможность управлять всеми операционными системами с помощью Grub, однако в UEFI традиционный термин "двойная загрузка" становится почти неправильным. UEFI позволяет сосуществовать нескольким загрузчикам на ESP, и вы можете выбрать, какой из них загружать (если они были зарегистрированы в прошивке UEFI, а прошивка производителей не идет на попечение, как только загрузка Windows). Печально то, что очень немногие могут подумать об установке более чем одной (независимой) версии Windows, Linux или одного выпуска Ubuntu на один компьютер (или жесткий диск, который используется на нескольких компьютерах и загружает другую установку одна и та же версия ОС на каждом компьютере). Большая часть этого уже возможна, но механизмы в Windows и Ubuntu (Fedora,…) явно предпочитают перезаписывать то, что находится в их пространстве имен, при ложном предположении, что их может быть только один.
(Я загружаю Windows8/10, Ubuntu, Ubuntu LTS и Fedora на одном компьютере и несколько раз возился с загрузкой UEFI в соответствии с различными требованиями.)
Вам необходимо создать новый раздел EFI для установленных позже окон. Поскольку у первого установленного был собственный EFI, но более поздний, видящий другие окна, просто добавил свою собственную запись в загрузчик, теперь создавая свой собственный EFI в /EFI/Microsoft/Boot/bootmgfw.efi, поэтому запустите CMD как администратор в вашей Windows 10 и введите следующие команды (Отсюда на TenForums):
diskpart
list disk
select disk # Note: Select the disk where Win10 is installed
list partition
select partition # Note: Select the Win10 installation partition.
shrink desired=100
create partition efi size=100
format quick fs=fat32
assign letter=s
list partition
list volume Note: Note the volume letter where the Win10 is installed.
exit
bcdboot X:\windows /s S:
Note: Replace "X" with the volume letter of the Win10 partition.
BCDBoot копирует загрузочные файлы из раздела Windows в системный раздел EFI и создает хранилище BCD в том же разделе.
Теперь просто добавьте запись, указывающую на этот раздел, например, в /etc/grub.d/40_custom или (любой пользовательский файл в /etc/grub.d/):
insmod part_gpt
insmod ntfs
set root=hd1,gpt10
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
Просто войдите в свою ОС Ubuntu, откройте терминал:
sudo update-grub
перезагружать
Windows 10, по большей части, будет добавлена в загрузочное меню grub с помощью os-prober автоматически.
Для моей конкретной настройки я хотел полностью скрыть меню grub и автоматически загружать окна, если для загрузки Ubuntu не была нажата горячая клавиша. Итак, в моем конкретном случае os-prober не подходит, потому что самый важный шаг в сокрытии меню grub, о котором я не упоминал в большинстве ответов, - это установить флаг отключения os-prober, иначе меню будет отображаться до тех пор, пока os -пробер завершает.
На то, чтобы получить правильный ответ, потребовалось значительно больше времени, чем я ожидал, потому что существует так много частичных ответов, но большинство из них зависят от версии и могут сбить вас с пути. Я потратил много времени, пытаясь написать свою собственную запись меню grub, пытаясь использовать команды grub, которых не существовало, как ntdlr. Еще одно предостережение: функции chainloader на моем grub пытаются загрузить bios not efi, и это не сработает (я уверен, что делал что-то не так?)
В конце концов, решение оказалось на самом деле простым, поскольку сценарии, которые заставляют ваш /boot/grub/grub.cfg делать большую часть работы за вас по поиску UUID для ваших загрузочных разделов. Таким образом, вы можете пропустить шаги fdisk и blkid, о которых упоминает большинство людей.
Итак, шаг 1 - убедиться, что /boot/grub/grub.cfg актуален, используя update-grub для создания файла.cfg. В терминале
sudo update-grub
Шаг 2 - добавить пользовательские пункты меню в /etc/grub.d/40_custom. Не тратьте время, пытаясь написать свой собственный, просто откройте /boot/grub/grub.cfg, найдите " menuentry " и скопируйте автоматически сгенерированные записи.
Первым в списке будет убунту мой выглядит так
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9e66eed6-e672-49ff-a07c-afdc00809148' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
else
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
fi
linux /boot/vmlinuz-5.4.0-39-generic root=UUID=9e66eed6-e672-49ff-a07c-afdc00809148 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.4.0-39-generic
}
Винда будет похожей. Скопируйте оба файла в /etc/grub.d/40_custom. Единственное изменение, которое я сделал для Ubuntu, - это добавление флага --hotkey=key, который заставит grub загружать ОС, связанную с этой горячей клавишей.
menuentry 'Ubuntu2' --class ubuntu --class gnu-linux --class gnu --class os --hotkey=u $menuentry_id_option 'gnulinux-simple-9e66eed6-e672-49ff-a07c-afdc00809148' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
else
search --no-floppy --fs-uuid --set=root 9e66eed6-e672-49ff-a07c-afdc00809148
fi
linux /boot/vmlinuz-5.4.0-39-generic root=UUID=9e66eed6-e672-49ff-a07c-afdc00809148 ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.4.0-39-generic
}
Я использую --hotkey=u здесь, чтобы установить горячую клавишу загрузки Ubuntu на u.
Затем я изменил запись в Windows, заменив $menuentry_id_option на флаг grub --id.
menuentry "Windows 10" --class windows --class os --id windows-custom {
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 0EAE-C882
else
search --no-floppy --fs-uuid --set=root 0EAE-C882
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
Я использовал --id windows-custom. Сохраните изменения в /etc/grub.d/40_custom.
Наконец, откройте / etc / default / grub и добавьте
GRUB_DISABLE_OS_PROBER=true
изменение
GRUB_DEFAULT=0
к
GRUB_DEFAULT=windows-custom
и изменить
GRUB_TIMEOUT=10
по вашему выбору я использую 0,5, чтобы дать себе немного больше времени, чтобы нажать u, чтобы загрузить Ubuntu после POST.
Надеюсь, это избавит кого-то от головной боли, ура!
После долгого поиска решения, а также из-за того, что я ленился из-за того, что не пытался потратить еще час на выяснение, что и где мне следует редактировать и обновлять (поскольку это было бесполезно), я в конце концов установил Grub Customizer. Творит чудеса!