Добавить Windows 10 в список ОС GRUB

29

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

Hitechcomputergeek
источник
1
@ daltonfury42 Прекратите верить, если вы не слушаете или не понимаете, каковы требования ОП! Рекомендация инструмента, который в основном решает типичные проблемы в типичных устаревших загрузочных установках, для нетипичных установок UEFI с особыми требованиями вводит в заблуждение и приводит к обратным результатам.
LiveWireBT
2
@LiveWireBT Мне очень жаль. Я видел твой ответ. Я удалил свой комментарий (и перестал верить: P). Благодарность!
daltonfury42
1
Я думаю, что я собираюсь просто удалить весь раздел Windows 10 и перенести его на виртуальную машину, в любом случае.
Hitechcomputergeek
Честно говоря, не уверен, почему люди до сих пор голосуют против этого, поскольку для ИМО это не очень хороший вопрос. Однако в этом году я решил эту проблему по-другому - путем конвертации из MBR в GPT и загрузки UEFI. По сути, я преобразовал схему разбиения в GPT, изменил размер раздела Windows, добавил системный раздел EFI и поместил в него rEFInd, а также создал BCD-файл Windows, используя установочный диск Windows. Теперь система загружается с использованием загрузки UEFI, что облегчает игру с операционными системами. Вопреки тому, что говорит интернет, преобразовать установку Windows из BIOS в UEFI было несложно, но это было нелегко.
Hitechcomputergeek
1
Для любого в будущем, кто хочет сделать что-то подобное и хочет придерживаться BIOS - я думаю, что ответ лежит в BCD Windows. Я считаю, что установка Windows 10 не имеет надлежащего загрузчика или BCD или чего-то еще, и на самом деле не способна загружаться независимо. Если все сделано правильно, у меня есть догадка, что GRUB должен начать автоматически находить раздел Windows 10.
Hitechcomputergeek

Ответы:

25

Использование:

sudo update-grub
sudo grub-install /dev/[BOOT PARTITION eg. Sda6]

Команды в терминале Ubuntu, возможно, это решит вашу проблему.

По этой команде система автоматически обнаружит ваши установки Windows и добавит их в список GRUB.

Нил Шах
источник
2
Это не сработало, к сожалению. Кажется, он не обнаруживает раздел Windows 10.
Hitechcomputergeek
1
На самом деле у меня была такая же проблема с моей системой (есть windows 10 и ubuntu 14.04), и она была решена с помощью этих команд.
Нил Шах
Какая команда решила это, update-grubили grub-install? А у вас есть отдельный раздел / boot? Дело в том, что у меня есть отдельный загрузочный раздел, я думаю, что это на самом деле sda6.
Hitechcomputergeek
Выполнение этих двух команд (очевидно) не решило это.
Hitechcomputergeek
7
sudo update-grubсделал это.
thameera
21

Иногда 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

Источник

noraj
источник
2
Стоит отметить, что для Windows 10, как правило, первый раздел НЕ является системным Windows (т.е. sdb2 является правильным, а sdb1 НЕ является) Это происходит из-за того, как windows 10 хранится на диске во время установки, и системный зарезервированный раздел или ремонт системы всегда первый). Grub часто не может найти второй раздел, если первый на диске уже содержит что-то загрузочное. Самый простой способ найти правильный UUID - найти самый большой раздел с помощью sudo fdisk -lи сопоставить его с результатом blkid.
Janmyszkier
9

Это решение обеспечивает правильный вход в меню 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, а затем перезапустите для тестирования.

peterthevicar
источник
Я думаю, что команда sudo / dev / sda1 должна быть sudo blkid / dev / sda1
makapuf
@makapuf - ты абсолютно прав, спасибо. Исправлено.
peterthevicar
Я точно следовал этому руководству и получаю сообщение «Ошибка: раздел не найден» при попытке загрузить запись. При монтировании раздела кажется, что «EFI / Microsoft / Boot / bootmgfw.efi» не существует в этом разделе.
Xerus
8

Используйте это приложение 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.

RonnieDroid
источник
1
@Hitechcomputergeek, если вам нужна дополнительная помощь, дайте мне знать, я загрузлю Windows и сделаю несколько снимков экрана.
RonnieDroid
Это добавляет Windows 10 в GRUB? (Дайте угадаю: нет) Я хочу иметь доступ ко всем трем ОС из GRUB, и это решает только часть проблемы.
Hitechcomputergeek
Я обновил вопрос, чтобы спросить, как добавить Windows 10 в список ОС GRUB. Я проголосовал за ваш ответ, потому что он решил часть проблемы, но, поскольку мне все еще нужно добавить Windows 10 в GRUB, я пока не принимаю ответ.
Hitechcomputergeek
2
Кроме того, я заметил, что вы говорите, чтобы открыть Boot Repair с черты, но линия sudo apt-get install -y boot-repair && boot-repairуже открыла бы его.
Hitechcomputergeek
1
Вы также можете использовать этот инструмент в «тестовом режиме ubuntu (live cd mode)», где вы можете установить, запустить и использовать его после подключения к интернету или жене.
Аламджит Сингх,
4

Насколько я понял ваш вопрос, у вас есть две разные установки Windows на одном или нескольких жестких дисках, и вы не хотите, чтобы загрузчик Windows мешал или управлял обеими установками Windows. Я помню, что на старых установках было возможно напрямую загружать ядро ​​Windows из Grub (я могу ошибаться здесь), но я не смог сделать это на установках UEFI. Наличие двух независимых конфигураций загрузчика Windows, которые можно вызывать из Grub независимо, должно быть очень близко к тому, что вы ищете.

Он пришел с установленной Windows 8.1.

Я собираюсь предположить, что это компьютер с поддержкой UEFI.

  1. Проверьте, действительно ли компьютер поддерживает UEFI (я удалю свой ответ, если это не так) и ознакомьтесь с различиями между BIOS и UEFI ( разные режимы загрузки , efibootmgr, разные таблицы разделов, системный раздел EFI (ESP), загрузчики EFI ...).
  2. Затем убедитесь, что все операционные системы установлены в режиме UEFI, и убедитесь, что у вас есть таблица разделов GPT. Вы можете использовать Windows ' dismдля резервного копирования и восстановления разделов в новом макете таблицы разделов и использовать командную строку с последнего установочного носителя Windows для переустановки загрузчика, подробнее об этом в следующем пункте.
    • Поскольку вам было рекомендовано попробовать различные другие инструменты, которые не решают вашу проблему, вы должны вернуть эти изменения в первоначальное состояние, иначе это будет становиться все более и более запутанным. Прости за это. :(
  3. Вы можете использовать мой ответ из раздела Как загрузить 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 или восстановлением загрузки (или очищают их вручную).

NB: Ваш запрос состоял в том, чтобы иметь возможность управлять всеми операционными системами с помощью Grub, однако в UEFI традиционный термин «двойная загрузка» становится почти неправильным. UEFI позволяет сосуществовать нескольким загрузчикам на ESP, и вы можете выбрать, какой из них загружать (если они были зарегистрированы в прошивке UEFI, а прошивка производителя не делает из-за опекунства, как только загрузка Windows). Печально то, что лишь немногие могут подумать об установке более чем одной (независимой) версии Windows , Linux или одного выпуска Ubuntu на один компьютер.(или жесткий диск, который используется с несколькими компьютерами и загружает различные установки одной и той же версии ОС на каждом компьютере). Большая часть этого уже возможна, но механизмы в Windows и Ubuntu (Fedora,…) явно предпочитают перезаписывать то, что находится в их пространстве имен, при ложном предположении, что их может быть только один.

(Я загружаю Windows8 / 10, Ubuntu, Ubuntu LTS и Fedora на одном компьютере и несколько раз возился с загрузкой UEFI в соответствии с различными требованиями.)

LiveWireBT
источник
1
Я не пользуюсь Windows. Но пытался ли кто-нибудь скопировать / EFI / Windows в / EFI / Windows10 и / или / EFI / Windows8 и отредактировать каждый BCD только для этой версии? И тогда в UEFI создадут для каждого энтьеры. Если это работает из UEFI, то grub может связываться с каждым напрямую.
oldfred
@oldfred Это то, на что я хотел указать в нижней части, и может быть даже параметр для bcdbootуказания другого целевого каталога, но я не уверен. Цепная загрузка других двоичных файлов EFI только из одного ESP значительно упрощает 40_customи делает его менее подверженным ошибкам, вы правы в этом. Я думаю, что слишком много внимания уделялось сценариям с несколькими жесткими дисками (в этом случае вы все равно должны сказать bcdboot загружать Windows на hdd2 из ESP на hdd1, я думаю). м (
LiveWireBT
Компьютер поддерживает UEFI, но я, честно говоря, понятия не имею, что сейчас с разделами. В школе был установлен пользовательский образ Windows 8, и хотя в нем использовались UEFI и Secure Boot (я думаю, что BIOS сейчас настроен для поддержки как UEFI, так и устаревшей загрузки; я помню отключение Secure Boot), сам жесткий диск отформатирован с использованием MBR. Вот, скриншот: imgur.com/1vDS4jf (. Да, я планирую на изменение размера кучу разделов в ближайшее время ) Кроме того , Ubuntu сама (из dmesg) оглавлению не по всей видимости, был запущен в режиме EFI, но Я не знаю, сможет ли сам GRUB
Hitechcomputergeek
@Hitechcomputergeek На снимке экрана показана таблица разделов msdos / MBR с расширенным разделом и без раздела EFI. Как я уже говорил ранее, у вас должен быть GPT, и вы можете использовать его dismдля разделов Windows.
LiveWireBT
запускаться как UEFI, но затем запускать другие ОС как не-UEFI или что-то в этом роде. UEFI сбивает с толку. РЕДАКТИРОВАТЬ: GRUB не запускается как UEFI. Я понятия не имею, что случилось с оригинальной Windows. На самом деле, если подумать, я думаю, это возможно, что это не было UEFI в первую очередь. Я предположил, что это потому, что было практически невозможно войти в BIOS из-за гибернации Windows 8, если вы сначала не загрузили его, а затем нажали «Перезагрузить», ТО пытались войти в BIOS. Мне не нужно было делать это снова с момента установки Ubuntu (и GRUB).
Hitechcomputergeek
2

Просто войдите в свою ОС Ubuntu, откройте терминал:

sudo update-grub

перезагружать

Nidhan
источник