Вопрос или проблема
Правка: Проблема решена, смотрите ниже.
Я только что установил Arch Linux на свой ноутбук, на котором ранее был только Windows 10. У меня есть один SSD для Arch Linux и один для Windows. Я хочу использовать rEFInd в качестве загрузчика, который прекрасно работает с Arch Linux. Я пытался настроить запись меню для Windows, следуя этому руководству. Проблема в том, что у меня нет \EFI\tools\shell.efi
или fs0:\EFI\tools\launch_windows.nsh
. Мое предположение заключается в том, что у меня два SSD, и так как я ранее использовал только один с Windows, у меня два ESP, поэтому мои Windows .efi
файлы отсутствуют на моем Arch Linux ESP. Это верно? Я пытался просмотреть разделы на своем Windows-диске, но там тоже не вижу никаких .efi
файлов. Возможно, Windows загружался с использованием BIOS и не создал эти файлы?
Правка: Мне нужно было переустановить Windows в режиме UEFI. Он был в режиме совместимости.
rEFInd должен автоматически обнаружить загрузчик Windows EFI и создать для него запись в меню. Если этого не происходит, то, скорее всего, Windows установлен на диск MBR в режиме BIOS/CSM/наследия, а не на диск GPT в режиме EFI/UEFI. Вы можете проверить типы таблиц разделов ваших дисков следующим образом (в качестве root
):
parted /dev/sda print | grep Table
Замените /dev/sda
на каждый из ваших дисков (они, вероятно, /dev/sda
и /dev/sdb
, но могут быть и что-то более экзотическое). parted
сообщает о GPT-дисках как gpt
, но использует msdos
для MBR-дисков. Если я прав, то диск с Linux, вероятно, будет отображаться как GPT, а диск с Windows – как MBR.
Если я прав, вы можете попробовать отредактировать refind.conf
(обычно в /boot/efi/EFI/refind
или /boot/EFI/refind
): раскомментируйте строку scanfor
и добавьте hdbios
к параметрам. Это скажет rEFInd активировать поддержку загрузки ОС в режиме BIOS. При загрузке у вас, вероятно, будет одна или две серые значки в виде ромбов, одна из которых должна загрузить Windows. (Если у вас есть только один значок, и он не загружает Windows, также попробуйте раскомментировать параметр uefi_deep_legacy_scan
в refind.conf
.) Если вы хотите скрыть неработающую запись загрузки Windows, вы можете сделать это с помощью dont_scan_volumes
, если вы можете найти уникальную часть описания параметра загрузки, чтобы скрыть его.
В качестве альтернативы всему этому, или если поддержка режима BIOS в rEFInd не работает на вашем компьютере, вы можете конвертировать Windows для загрузки в режиме EFI, а не в режиме BIOS. Это рискованнее, чем добавление поддержки режима BIOS в конфигурацию rEFInd, но это может загрузиться немного быстрее и позволит Windows получить доступ к EFI-функциям. Смотрите эту страницу для получения инструкций о том, как внести это изменение.
Если я ошибаюсь в предположении, что Windows загружается в режиме BIOS, то с чем-то другим что-то не так – возможно, поврежденная файловая система на ESP, которая содержит загрузчик Windows, или даже уничтоженный загрузчик Windows. Необходимый ремонт будет зависеть от точной природы проблемы. В этом случае, пожалуйста, выполните Boot Info Script. Это сгенерирует файл под названием RESULTS.txt
. Разместите этот файл на сайте pastebin и разместите URL-адрес вашего документа здесь.
Я думаю, что файл \EFI\tools\launch_windows.nsh
– это всего лишь пример скрипта, который запускает сам загрузчик Windows, который должен находиться где-то в директории EFI\Microsoft
.
Файл \EFI\tools\shell.efi
– это UEFI shell, вы можете получить его здесь. Хотя, если вы просто хотите запустить загрузчик Windows, вам не нужен shell для этого. Загрузчик Windows можно запустить напрямую как любое нормальное UEFI приложение.
Попробуйте добавить что-то вроде:
menuentry Windows {
loader \EFI\Microsoft\Boot\bootmgfw.efi
}
в вашу конфигурацию rEFInd.
После установки Linux с EFI загрузчиком на систему, где Windows был установлен в режиме легаси BIOS, я не смог загрузиться в Windows, только в Linux. Ответ @Rod Smith был отличным и помог мне разобраться со многими вещами. Но даже после установки rEFInd и настройки параметров конфигурации, мне не удалось загрузиться в Windows. Я конвертировал диск с MBR в GPT, но это не сработало. Я пытался переключить материнскую плату между UEFI и Легаси – все равно ничего. Мне действительно пришлось скопировать EFI загрузчик для Windows из Windows\Boot\EFI на ESP. И, по моему предположению, @Marcel мог бы сделать то же самое вместо переустановки Windows – хотя это, безусловно, тоже вариант.
Есть отличная запись на Medium, которая объясняет весь процесс: https://medium.com/@hetmansoftware/how-to-restore-the-structure-of-deleted-efi-partitions-in-windows-653a68b5c09f
Ответ или решение
Рекомендуемые решения для проблемы загрузки Windows 10 с rEFInd
Введение
Проблема с загрузкой Windows 10 на системе с установленным rEFInd может возникать по различным причинам, особенно когда у вас установлены обе операционные системы — Windows 10 и Arch Linux. В этом руководстве мы подробно рассмотрим основные причины, возникающие при отсутствующей загрузке Windows, и предложим эффективные решения, учитывающие контекст вашего вопроса.
Причина проблемы
Ваша проблема может возникать из-за различных факторов, касающихся конфигурации системы. Наиболее вероятные из них:
-
Установка Windows в режиме BIOS: Если Windows была установлена в режиме UEFI, системы должны быть совместимы. Способы загрузки через BIOS и UEFI требуют разных конфигураций и препятствуют обнаружению Windows.
-
Отсутствие необходимых файлов EFI: Если Windows была установлена в режиме BIOS, нужные файлы .efi могут не находиться на доступных EFI-разделах. Без них rEFInd не сможет обнаружить Windows 10.
-
Ошибки конфигурации rEFInd: Исходная конфигурация может не включать все необходимые опции для обнаружения Windows в определенных сценариях.
Решения
1. Убедитесь, что Windows установлена в режиме UEFI
Для проверки режима загрузки Windows выполните следующие действия:
- Загрузитесь в Arch Linux и проверьте таблицу разделов:
parted /dev/sda print | grep Table
Замените /dev/sda
на соответствующий путь для вашего диска Windows. Вы должны увидеть gpt
для UEFI или msdos
для BIOS.
Если Windows установлена в режиме BIOS, рекомендуется переустановить её в режиме UEFI.
2. Проверьте наличия файлов EFI
Если вы не видите необходимую .efi загрузку Windows, выполните следующее:
-
Найдите папку
\EFI\Microsoft\Boot\
на вашем EFI-разделе. Там должны находиться файлы, такие какbootmgfw.efi
. Если их нет, это означает, что ваш Windows-перевод может быть повреждён или установлен неправильно. -
Если Windows была установлена в BIOS режиме, вам необходимо либо восстановить загрузчик Windows, либо переустановить ОС.
3. Настройка rEFInd
Если Windows установлена корректно, проверьте конфигурацию rEFInd:
-
Откройте файл конфигурации rEFInd, который чаще всего находится по адресу
/boot/efi/EFI/refind/refind.conf
. -
Убедитесь, что у вас активирована правильная опция для сканирования:
scanfor internal, external, manual
- Добавьте следующие строки в rEFInd, чтобы явно указать путь к Windows загрузчику:
menuentry Windows {
loader \EFI\Microsoft\Boot\bootmgfw.efi
}
4. Восстановление файлов системы
Если есть подозрения, что EFI-файлы были случайно удалены или повреждены, их можно восстановить:
- Есть доступные ресурсы, включая статьи на Medium, которые детализируют процесс восстановления структуры EFI-разделов. Это может быть отличным вариантом, если переустановка не является практичным решением.
Заключение
Ваша проблема с загрузкой Windows 10 через rEFInd может быть решена, следуя вышеперечисленным шагам. Убедитесь, что налажены корректные взаимодействия между различными режимами загрузки и конфигурациями файлов. Если ваши действия не приносят результатов, будет разумно обратиться за помощью к профессиональным специалистам или сообществу пользователей, чтобы найти более сложные решения.
Эти рекомендации помогут вам устранить проблему загрузки и настроить мирное сосуществование ваших операционных систем.