Некоторое время назад я установил Arch Linux вместе с Windows 10 на моем Dell XPS15, казалось, все работало нормально, однако недавно мой ноутбук неожиданно загружается прямо в Windows и пропускает меню systemd-boot.

Я создал загрузочный Arch USB и посмотрел на разделы EFI и Arch, и все казалось неизменным, я попытался просмотреть параметры последовательности загрузки в настройках BIOS, и единственный вариант - это SSD в целом, и я не могу выбрать конкретные разделы для загрузки ,

Кто-нибудь знает, что могло вызвать это внезапное изменение? У кого-нибудь возникала подобная проблема, и кто-нибудь знает, как я могу это исправить?

Вот скриншот моего диспетчера дисков Windows, я заметил, что раздел Windows установлен с флагом загрузки, я не уверен, что это так? Это помогает вообще?

Скриншот

2 ответа2

0

Исходная информация

Я попытался просмотреть параметры последовательности загрузки в настройках BIOS, и единственный вариант - это SSD в целом, и я не могу выбрать конкретные разделы для загрузки.

Вы работаете в заблуждении - кажется, вы думаете, что EFI загружается в разделы, но на самом деле это не так. Под EFI загрузочные записи хранятся в NVRAM, и эти записи указывают на файлы. Вы можете иметь одну, две, десять, сотню или более загрузочных программ на одном разделе или распределить их на любое количество разделов. Если вы думаете о EFI как о загрузке диска или раздела, вы, вероятно, сделаете неправильные выводы и попытаетесь исправить ситуацию совершенно неуместным образом.

Одним частичным исключением из этого правила является резервное имя файла EFI/BOOT/bootx64.efi (или варианты для других типов процессоров). Это имя файла, которое EFI попытается загрузить, если больше ничего не найдет. Первоначально он предназначался для использования на съемных носителях, но современные EFI (почти?) всегда узнавайте это и на ESP жестких дисков. Это может быть полезным инструментом для обхода проблем с загрузкой, например, если ваша прошивка забывает о своих регулярных загрузочных записях - как это, похоже, произошло с вами Также обратите внимание, что многие EFI рассматривают загрузчик Windows, EFI/Microsoft/Boot/bootmgfw.efi , как запасное имя файла. Это может сохранить загрузку Windows, даже если настройки прошивки компьютера были испорчены - но, конечно, это не поможет пользователям Linux.

Я заметил, что раздел Windows установлен с флагом загрузки, я не уверен, что он должен быть таким?

AFAIK, Windows игнорирует "загрузочный флаг" на GPT-дисках. Кроме того, имейте в виду, что "флаг загрузки", сообщаемый инструментом Windows, чей снимок экрана вы показали, и "флаг загрузки", сообщаемый parted и GParted в Linux, - это совершенно разные вещи! (В инструментах Linux этот "флаг" является синонимом кода типа ESP на GPT-дисках.)

Более прямой ответ

Вкратце, вы столкнулись с тем, что я называю переворотом при загрузке. Смотрите эту страницу для получения дополнительной информации по этой теме. Вы можете исправить это в Windows, используя инструмент EasyUEFI , чтобы восстановить запись Arch Linux в верхней части порядка загрузки; тем не менее, вы говорите, что менеджер загрузки вашей прошивки не показывает никаких записей для конкретной ОС. (Целая запись на диске, о которой вы упоминаете, может запустить резервный загрузчик или может загрузить систему в BIOS/CSM/ унаследованном режиме; я не могу быть уверен в этом, не увидев запись и, возможно, попробовав ее увидеть, что происходит, когда она используется.) Это наводит меня на мысль, что ваш переворот при загрузке был вызван тем, что прошивка полностью "забыла" записи NVRAM. Это может произойти из-за ошибки в ОС, ошибки в прошивке, ошибки пользователя, сбоя оборудования и т.д. Лучшее решение - создать новую запись EFI NVRAM с помощью efibootmgr . Смотрите запись efibootmgr в Arch wiki для получения дополнительной информации по этому вопросу. Вкратце, вы бы использовали команду, подобную этой (взято из Arch wiki):

# efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/refind/refind_x64.efi --label "rEFInd Boot Manager"

Вам нужно изменить идентификатор диска, номер раздела, имя файла и метку для вашей собственной системы. Вы можете ввести эту команду в любой аварийной системе Linux, загруженной в режиме EFI; или если вы можете загрузить основную установку (например, используя мой загрузочный менеджер rEFInd на съемном диске), вы можете ввести его из основной установки. Кроме того, вы можете использовать EasyUEFI для создания эквивалентной записи.

Если ваша система регулярно забывает свои записи NVRAM, может быть лучше использовать запасное имя файла; однако, поскольку у вас двойная загрузка Linux и Windows, это может быть неудобно - если ваша прошивка предпочитает запись загрузчика Windows над официальным резервным именем файла, единственный способ обеспечить его надежную работу - это "взломать" Загрузчик Windows, поместив загрузчик Linux или менеджер загрузки на его место, а затем запустив средство Windows из другого места. Windows может в конечном итоге переустановить собственный загрузчик в это место, вернув вас туда, где вы сейчас находитесь. Это одна из причин, по которой я настоятельно советую людям возвращать неисправные компьютеры, которые забывают или игнорируют свои загрузочные записи NVRAM, в магазин за возмещение, когда это возможно. К сожалению, это часто невозможно, так как этот дефект часто обнаруживается через несколько месяцев после покупки компьютера.

0

Я выяснил проблему, я выбрал загрузчик EFI по умолчанию в меню systemd-boot и по какой-то причине изменил файл efi, который загружается для загрузки моего SSD. Я исправил это с помощью следующих шагов:

  1. Загрузился в Arch на загрузочном USB
  2. Установлен мой раздел EFI
  3. Использовал bootctl для просмотра каждой из текущих загрузочных записей
    • это подтвердило то, что я думал: для моего SSD была запись, которая была настроена для загрузки моего файла EFI Windows
  4. Загрузился обратно в меню загрузочной арки USB
  5. Выбранный UEFI Shell v2
  6. Использовал bcfg для добавления новой загрузочной записи, указывающей на мой efi-файл systemd-boot
  7. Установите новую загрузочную запись в верхней части последовательности загрузки в моем BIOS.

Готово.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .