Все способы:
- Способ 1: Установка Windows на диск с Linux
- Способ 2: Обнаружение раздела Windows
- Способ 3: Ручное добавление загрузчика
- Вопросы и ответы: 0
Способ 1: Установка Windows на диск с Linux
Одной из наиболее распространенных причин отсутствия Windows 10 в загрузочном меню «Grub» является установка Windows не на тот же физический диск, на который устанавливается Linux. Если нужно установить на один компьютер Windows и Linux, устанавливайте их по возможности на один физический жесткий диск, причем первой необходимо установить Windows. Если сперва будет установлена Linux, а затем Windows, то есть большая вероятность, что загрузчик Windows затрет «Grub».
Способ 2: Обнаружение раздела Windows
Если переустановка Windows 10 по какой-то причине невозможна, попробуйте обнаружить ее из среды Linux и добавить в загрузчик последней.
- Определите в Linux название раздела, на который установлена Windows. Получить сведения о дисках и разделах в Linux можно как из «Терминала», так и с помощью штатного приложения «Дисковая утилита». Скопируйте или запомните название устройства. Например, это будет «/dev/sda1».
- Откройте «Терминал» и примонтируйте раздел с Windows 10, для чего выполните команду
sudo mount -t ntfs-3g -o ro /dev/sda1
, где /dev/sda1 — полученный на предыдущем этапе путь к тому с Windows. - Чтобы обнаружить Windows 10, выполните тут же в «Терминале» команду
sudo os-prober
. - В случае успешного обнаружения Windows обновите конфигурацию «Grub» командой
sudo update-grub
либо жеsudo grub2-mkconfig -o /boot/grub/grub.cfg
.
Способ 3: Ручное добавление загрузчика
При использовании первого способа вероятность сходу обнаружить и прописать Windows 10 в линуксовый загрузчик довольно невелика. Более сложным, но и более эффективным способом восстановления записи Windows 10 в загрузочном меню Grub является ручное добавление. Способ универсальный, использовать его можно не только при потере Windows 10, но и других операционных систем Windows.
- Узнайте название раздела с Windows как было показано в первом пункте предыдущего способа.
- Определите UUID раздела, на котором установлена Windows 10, для чего выполните в «Терминале» команду
blkid /dev/sda1
, где /dev/sda1 — название раздела с Windows. - Откройте любым текстовым редактором файл
/etc/grub.d/40_custom
и вставьте в него следующий код, где XXXXXXXXXXXXXXXX — полученный на предыдущем шаге UUID:menuentry "Windows 10" {
.
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set XXXXXXXXXXXXXXXX
chainloader +1
}
Сохраните файл. - Обновите конфигурацию Grub командой
sudo update-grub
, перезагрузите компьютер и посмотрите, появилась ли Windows в загрузочном меню Grub.
Если восстановить/добавить запись Windows 10 в загрузочное меню «Grub» не удалось, проверьте, не удален ли на диске служебный 100 МБ NTFS-раздел с загрузочными файлами. Если удален, можно будет попробовать его восстановить, но будет гораздо проще переустановить Windows и Linux. В том случае, когда используется «Grub 2» на UEFI, попробуйте включить в BIOS режим «Legacy».
Наша группа в TelegramПолезные советы и помощь
Grub (GNU GRand Unified Bootloader) — свободный загрузчик операционных систем, который используется во многих дистрибутивах Linux. Он позволяет выбирать операционную систему для загрузки при старте компьютера и управлять процессом загрузки системы, также поддерживает загрузку различных OS, включая различные версии Linux, Windows, macOS, позволяет настраивать параметры загрузки, создавать различные профили загрузки и выполнять другие задачи, связанные с загрузкой операционных систем.
Grub обычно устанавливается в начало жесткого диска компьютера и запускается при старте системы для предоставления пользователю возможности выбора операционной системы для загрузки. Grub является важной частью многих дистрибутивов Linux и играет ключевую роль в процессе загрузки операционной системы.
GRUB (GNU GRand Unified Bootloader) — мощный и гибкий загрузчик операционных систем, который используется во многих дистрибутивах Linux и других операционных систем, таких как FreeBSD. GRUB предоставляет пользователю возможность выбора операционной системы или ядра, которое нужно загрузить при старте компьютера.
Позволяет загружать различные операционные системы, а также варианты загрузки для конкретной операционной системы, например, в безопасном режиме или с другими параметрами загрузки. Он также поддерживает многоядерные системы и может автоматически обнаруживать установленные операционные системы на жестком диске. Имеет гибкую конфигурацию, которая позволяет пользователям настраивать параметры загрузки, добавлять новые ядра или операционные системы в меню загрузки, а также выполнять другие действия при загрузке системы.
GRUB является одним из наиболее распространенных загрузчиков для систем Linux и используется по умолчанию во многих дистрибутивах Linux, таких как Ubuntu, Fedora, Debian и многих других.
Если Grub не видит Windows 10 при загрузке, возможно, что загрузочная запись Windows была повреждена или удалена. Есть несколько причин, почему так происходит:
- Неправильная конфигурация: если Grub неправильно сконфигурирован или не обновлен после установки Windows 10, он может не видеть новую операционную систему.
- Изменения разделов диска: после установки Windows 10 могли произойти изменения в разделах диска, из-за чего Grub перестал её видеть..
- Проблемы с загрузочным сектором: некорректное обновление загрузочного сектора или MBR (Master Boot Record) могут привести к проблеме.
- Проблемы с UEFI/BIOS: некорректные настройки в UEFI или BIOS компьютера могут привести к тому, что Grub не сможет правильно обнаружить операционную систему.
- Поврежденные файлы загрузки: если файлы загрузки повреждены или отсутствуют, Grub не сможет их обнаружить.
Дальше расскажем, что же делать, если возникла такая проблема.
Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/
:
sudo mount -t ntfs-3g -o ro /dev/sda1
Система Windows установлена на разделе, который определяется в Linux, как /dev/sda1
. Дальше запустите утилиту os-prober:
sudo os-prober
Если программа обнаружит Windows, останется обновить конфигурацию загрузчика Grub:
sudo update-grub
Или:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Если же этот способ не сработает, останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1
:
blkid /dev/sda1
Затем откройте файл /etc/grub.d/40_custom
и добавьте туда такой код:
menuentry "Windows 10" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set B4A6AEB7A6AE7A0E
chainloader +1
}
Так мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:
sudo update-grub
Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg
, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.
Когда конфигурация обновлена вы можете перезагрузить компьютер и загружать Windows с помощью нового пункта. Таким образом, можно добавить несколько пунктов, только для разных разделов нужно указывать их UUID.
Многие новички и опытные пользователи Linux держат также установленной на своем компьютере операционную систему Windows, например, последней, десятой версии. Новичкам это нужно чтобы иметь запасную операционную систему, к которой они смогут вернуться, если их Linux сломается. А для опытных пользователей важно программное обеспечение, которое не поддерживается ни в Linux, ни даже с помощью эмулятора Wine, а таких программ достаточно много.
Но временами случается такая ситуация, что загрузчик Grub не распознает установленную Windows и не отображает ее в списке систем для загрузки. В этой статье мы рассмотрим почему возникает ошибка grub не видит Windows 10 и как ее решить.
Причин такой ошибки может быть несколько, начиная от того, что система установлена на другом жестком диске, и заканчивая неизвестными глюками пакета os-prober, который и занимается определением операционных систем в Linux. Также, если у вас есть несколько версий Windows на компьютере, то программа может видеть только одну из них.
Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/:
sudo mount -t ntfs-3g -o ro /dev/sda1
Я предполагаю, что система Windows установлена на разделе, который определяется в Linux, как /dev/sda1. Дальше запустите утилиту os-prober:
sudo os-prober
Если программа обнаружит Windows, то вам останется обновить конфигурацию загрузчика Grub:
sudo update-grub
Или:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Если же этот способ не сработает, а он, скорее всего, не сработает, то вам останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1:
blkid /dev/sda1
Затем откройте файл /etc/grub.d/40_custom и добавьте туда такой код:
menuentry "Windows 10" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set B4A6AEB7A6AE7A0E
chainloader +1
}
Если кратко, то здесь мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:
sudo update-grub
Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.
Когда конфигурация обновлена вы можете перезагрузить компьютер и загружать Windows с помощью нового пункта. Таким образом, можно добавить несколько пунктов, только для разных разделов нужно указывать их UUID.
Выводы
В этой небольшой статье мы разобрали что делать когда у вас возникнет ошибка grub не видит windows 10 и какими способами ее можно исправить. На самом деле решение очень простое, если вы не используете систему с UEFI. В варианте с EFI загрузка Windows управляется не Grub, а загрузчиком UEFI, но при использовании Linux рекомендуется отключить эту технологию.
Об авторе
Веб разработчик. Создал losst 9 лет назад. Увлекаюсь открытым программным обеспечением, программрованием, Linux, DevOps. Люблю узнавать что-то новое. В качестве основной ОС сейчас использую Fedora.
Статья является возможным решением инцидента Зависание GRUB после выбора ОС MS Windows 10 в меню Dual Boot
Окружение
- Astra Linux Special Edition 1.6
- Astra Linux Common Edition 2.12
Диагностика
-
Проверить версию пакета
grub-efi
:dpkg -l | grep grub-efi
CODE
Установлен пакет
grub-efi
версииstable 2.02~beta3-5+deb9u2astra7
.
Решение
Ответ доступен с подключенной услугой «Техническая поддержка».
Ознакомиться с услугой
Перейти к авторизации
Внимание! Для авторизации используйте учетные данные Личного кабинета
Если учетная запись от новой версии личного кабинета отсутствует, просим писать на почту lk@astralinux.ru
0
1
Здравствуйте, установил вчера кое как арч линукс второй системой на ноут. Теперь не могу запустить windows. Grub не видит её.
В общем устанавливал я не с первого раза, использовал новый установщик archinstall. Попыток наверно 5 сделал и все заканчивались красным страшным текстом на весь монитор, что что то там не получилось, как я понял не получалось efi раздел смонтировать или не туда он монтировался, я испробовал много разных вариантов, которые раньше работали, но сейчас почему то не вышло.
Установил я арч без загрузчика и потом из chroot смонтировал /dev/nvme0n1p1 (efi раздел 4гб) в /boot, и там появилась папка EFI. Далее установил grub (он сам нашел efi раздел) и о чудо все заработало. Но в grub нет windows. Погуглил я и не нашел решения моего вопроса, везде советуют #grub-mkconfig -o /boot/grub/grub.cfg, но grub.cfg у меня нет в системе в принципе.
Вот дерево /boot:
/boot
├── EFI
│ ├── arch
│ ├── Boot
│ │ └── bootx64.efi
│ ├── grub
│ │ └── grubx64.efi
│ ├── Lenovo
│ │ └── BIOS
│ │ └── SelfHealing.fd
│ └── Microsoft
│ ├── Boot
│ │ ├── BCD
│ │ ├── BCD.LOG
│ │ ├── BCD.LOG1
│ │ ├── BCD.LOG2
│ │ ├── bg-BG
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── bootmgfw.efi
│ │ ├── bootmgr.efi
│ │ ├── BOOTSTAT.DAT
│ │ ├── boot.stl
│ │ ├── cs-CZ
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── da-DK
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── de-DE
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── el-GR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── en-GB
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── en-US
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── es-ES
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── es-MX
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── et-EE
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── fi-FI
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── Fonts
│ │ │ ├── chs_boot.ttf
│ │ │ ├── cht_boot.ttf
│ │ │ ├── jpn_boot.ttf
│ │ │ ├── kor_boot.ttf
│ │ │ ├── malgun_boot.ttf
│ │ │ ├── malgunn_boot.ttf
│ │ │ ├── meiryo_boot.ttf
│ │ │ ├── meiryon_boot.ttf
│ │ │ ├── msjh_boot.ttf
│ │ │ ├── msjhn_boot.ttf
│ │ │ ├── msyh_boot.ttf
│ │ │ ├── msyhn_boot.ttf
│ │ │ ├── segmono_boot.ttf
│ │ │ ├── segoen_slboot.ttf
│ │ │ ├── segoe_slboot.ttf
│ │ │ └── wgl4_boot.ttf
│ │ ├── fr-CA
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── fr-FR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── hr-HR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── hu-HU
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── it-IT
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── ja-JP
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── kd_02_10df.dll
│ │ ├── kd_02_10ec.dll
│ │ ├── kd_02_1137.dll
│ │ ├── kd_02_14e4.dll
│ │ ├── kd_02_15b3.dll
│ │ ├── kd_02_1969.dll
│ │ ├── kd_02_19a2.dll
│ │ ├── kd_02_1af4.dll
│ │ ├── kd_02_8086.dll
│ │ ├── kd_07_1415.dll
│ │ ├── kd_0C_8086.dll
│ │ ├── kdnet_uart16550.dll
│ │ ├── kdstub.dll
│ │ ├── ko-KR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── lt-LT
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── lv-LV
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── memtest.efi
│ │ ├── nb-NO
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── nl-NL
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── pl-PL
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── pt-BR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── pt-PT
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── qps-ploc
│ │ │ └── memtest.efi.mui
│ │ ├── Resources
│ │ │ ├── bootres.dll
│ │ │ ├── en-US
│ │ │ │ └── bootres.dll.mui
│ │ │ └── ru-RU
│ │ │ └── bootres.dll.mui
│ │ ├── ro-RO
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── ru-RU
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── sk-SK
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── sl-SI
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── sr-Latn-RS
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── sv-SE
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── tr-TR
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ ├── uk-UA
│ │ │ ├── bootmgfw.efi.mui
│ │ │ └── bootmgr.efi.mui
│ │ ├── winsipolicy.p7b
│ │ ├── zh-CN
│ │ │ ├── bootmgfw.efi.mui
│ │ │ ├── bootmgr.efi.mui
│ │ │ └── memtest.efi.mui
│ │ └── zh-TW
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ └── Recovery
│ ├── BCD
│ ├── BCD.LOG
│ ├── BCD.LOG1
│ └── BCD.LOG2
└── System Volume Information
51 directories, 142 files
Вот вывод fdisk -l:
Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: SAMSUNG MZVLB1T0HBLR-000L2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 406BE08F-2983-4B8D-976D-A6BB8EE68842
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 8194047 8192000 3.9G EFI System
/dev/nvme0n1p2 8194048 8226815 32768 16M Microsoft reserved
/dev/nvme0n1p3 8226816 928724961 920498146 438.9G Microsoft basic data
/dev/nvme0n1p4 928724992 929791999 1067008 521M Windows recovery environment
/dev/nvme0n1p6 937984000 2000408575 1062424576 506.6G Linux filesystem
Я допускаю, что я рукожоп и криво установил grub, но даже теперь не знаю что делать, нужно что бы в grub был выбор windows и arch. Хелп!