Почему ОС и ее установщик ведут себя по-разному в зависимости от того, используется ли устаревший режим или нет?

464
VortixDev

Некоторый контекст:

Ранее сегодня я попытался переустановить Kali Linux на моей машине (двойная загрузка с Windows). Для этого я загрузил ISO-образ и поместил его на USB-накопитель Easy2Boot. Для того чтобы мой ноутбук загрузился с флешки Easy2Boot, мне нужно было зайти в свой BIOS и:

  • Отключить PTT
  • Включить Legacy Option ROM
  • Переключиться в режим Legacy

Это связано с тем, что Easy2Boot не поддерживает UEFI, и поэтому карта не появится, если я не сделаю этого.

У меня не было проблем во время установки, а точнее после. Я прекрасно загружался в систему, но если я отменил изменения, внесенные в BIOS, и вернулся в режим UEFI, вместо Kali я получил приглашение GRUB Rescue. Кроме того, хотя эти параметры BIOS все еще были установлены, GRUB не смог обнаружить мою установку Windows. В конечном счете, я использовал Rufus для установки Kali с «Схема разбиения: GPT» и «Целевая система: UEFI (не CSM)». После этого я вошел в процесс установки. Примечательно, что установщик казался другим. Мало того, что это отличалось по внешнему виду, но у начального меню были другие варианты.

Мой вопрос:

Почему переключение между режимами Legacy и UEFI вызвало эти проблемы? Насколько я понимаю, единственное участие MBR / GPT в загрузке состояло в том, чтобы предоставить исходный код для загрузки.

  • Поскольку GRUB мог загружаться в режиме UEFI, почему он оказался в режиме восстановления, а не продолжил загрузку Kali просто из-за этого изменения?

  • Почему между установщиками, которые я видел в режиме Legacy vs UEFI, была разница?

  • Почему в режиме Legacy GRUB не смог обнаружить Windows? Я бы подумал, что, поскольку BIOS уже выполнил свою работу по загрузке GRUB, у него не было бы проблем, учитывая, что я знаю, что у GRUB нет проблем с обнаружением Windows при установке в режиме UEFI.

0
Всегда используйте режим UEFI для ПК UEFI. Legacy по-прежнему существует только для (очень) старых или «специальных» ОС, и как долго я не знаю, но если бы я догадался, через 5 лет у нас не будет этого обсуждения, это будет UEFI или ничего , Все, что вы спрашиваете, легко доступно для поиска в Google, а именно Grub в Legacy не будет обнаруживать Windows в другом режиме (UEFI) и наоборот. Также хорошо известно, что Windows строго требует MBR для BIOS (Legacy) и GPT для UEFI. Я просто пользователь Ubuntu низкого уровня, и я знаю это и многое другое. Ожидается, что пользователь Kali будет знать в 10 раз больше, чем я знаю ... GabrielaGarcia 6 лет назад 1
Я настоятельно рекомендую вам изучить режимы загрузки UEFI и Legacy, чтобы понять, чем они являются и чем они отличаются. music2myear 6 лет назад 1
... Я думаю, что пришло время переосмыслить выбор дистрибутива Linux. Кали очень специфична для пентестинга. Это НЕ настольный Linux для повседневного использования, и он предназначен для профессионалов, которые уже являются очень опытными пользователями Linux. Ответ здесь резюмирует это: https://unix.stackexchange.com/questions/399626/why-is-kali-linux-so-hard-to-set-up-why-wont-people-help-me GabrielaGarcia 6 лет назад 0
@GabrielaGarcia Большое спасибо за ссылку, это очень интересное чтение. Я скажу, однако, что именно проблемы, с которыми я столкнулся и которые я представляю, столкнувшись с Кали, побудили меня выбрать его, как способ учиться в моей борьбе - это не мой выбор для домашнего использования. VortixDev 6 лет назад 0
Обращаясь конкретно к тому пункту в этом посте, что «если вы зададите вопрос новичка о Kali, многие люди будут игнорировать вас», я хотел бы сказать, что я считаю, что этот вопрос применим для любого дистрибутива: я только упоминаю Kali, чтобы предоставить контекст , VortixDev 6 лет назад 0
Если вы отформатируете USB-флешку с помощью rufus, вы можете заставить ее работать с UEFI, что гораздо предпочтительнее. LPChip 6 лет назад 0
Просто хотел упомянуть, что вы можете использовать E2B для загрузки в режиме UEFI, для этого вам нужно конвертировать .iso в файл imgPTN. Смотрите следующие ссылки: http://www.easy2boot.com/add-payload-files/e2b-uefi/ http://www.easy2boot.com/add-payload-files/adding-uefi-images User025 6 лет назад 0
@ User025 Очень интересно: спасибо! VortixDev 6 лет назад 0

2 ответа на вопрос

3
grawity

Насколько я понимаю, единственное участие MBR / GPT в загрузке состояло в том, чтобы предоставить исходный код для загрузки.

И начальное меню на самом деле является частью этого кода. Это не предоставляется ОС; это показывает загрузчик (который также выполняет работу «менеджера загрузки»).

Загрузчик по своей природе специфичен для одного типа прошивки. (Даже GRUB2 имеет отдельные ядра для BIOS и UEFI, и его модули должны быть скомпилированы по-разному для любого типа.)

Так что вполне возможно, что на одном и том же установочном диске будут использоваться совершенно разные загрузчики для систем BIOS и UEFI (например, syslinux для BIOS, но systemd-boot для UEFI; или GRUB2 для BIOS, но rEFInd для UEFI). Если они предоставляют меню загрузки, они все делают это по-своему, со своим внешним видом и темами.

(Также может быть так, что исходный ISO не имеет загрузчиков для обоих типов прошивок - в некоторых ситуациях Rufus вставляет свою собственную конфигурацию загрузчика (syslinux) в смесь.)

Наконец, даже если это тот же GRUB2 с той же базовой конфигурацией, он может не иметь одинакового графического режима, доступного в обоих случаях. Опции меню могут отсутствовать из-за различий в самих прошивках: например, «Загрузка существующей ОС» выполняется совершенно по-разному между BIOS и UEFI; и «Тест памяти» (memtest86) - это отдельная программа, которая сама должна быть в вариантах BIOS и UEFI ...

Поскольку GRUB мог загружаться в режиме UEFI, почему он оказался в режиме восстановления, а не продолжил загрузку Kali просто из-за этого изменения?

Невозможно ответить на этот вопрос, не увидев точную ошибку GRUB. Возможно, ваш раздел EFI содержит файлы ядра GRUB, но в нем отсутствуют модули или файл grub.cfg.

Опять же, помните, что BIOS GRUB и UEFI GRUB действуют как две отдельные части программного обеспечения. Несмотря на то, что они используют большую часть исходного кода, они скомпилированы в разные форматы, они установлены в разных местах системы и по-разному запускаются микропрограммами.

Почему в режиме Legacy GRUB не смог обнаружить Windows? Я бы подумал, что, поскольку BIOS уже выполнил свою работу по загрузке GRUB, у него не было бы проблем, учитывая, что я знаю, что у GRUB нет проблем с обнаружением Windows при установке в режиме UEFI.

Похоже, ваша система Windows настроена на загрузку в режиме UEFI, что означает, что на ней установлен только UEFI-совместимый загрузчик.

Однако когда система находится в режиме BIOS, она не может запускать программы UEFI - потому что они зависят от присутствия ядра UEFI и предоставления определенных услуг. (Так же, как MS-DOS не может запускать программы для Windows ...)

В конце концов, весь смысл «Legacy mode» заключается в том, что ОС будет видеть прошивку только так, как если бы это была традиционная BIOS для ПК; любые сервисы UEFI будут невидимы.

(Точно так же я не уверен, возможно ли, чтобы приложение UEFI «понизило» систему до 16-битного режима для загрузки по цепочке в BIOS-совместимый загрузочный код.)

Спасибо! У меня было подозрение, что для UEFI против Legacy использовался другой код, но я не хотел делать предположения в своем посте. Для меня ключевым выводом является то, что GRUB использует UEFI для содействия процессу загрузки - я не знал об этом и предположил, что код не зависит от источника, использованного для его загрузки, и поэтому будет работать независимо от того, был ли это UEFI или Legacy boot. Кроме того, для получения дополнительной информации о проблеме GRUB, я полагаю, она сказала «неизвестная файловая система», и любая попытка восстановить ее с помощью методов, описанных в сети, завершилась неудачно в «insmod normal», где она повторила бы сообщение. VortixDev 6 лет назад 0
2
LPChip

Вы написали:

Я скачал ISO и положил его на мою флешку Easy2Boot. Для того чтобы мой ноутбук загрузился с флешки Easy2Boot, мне нужно было зайти в свой BIOS и:

Отключить PTT Включить Legacy Option ROM Переключиться в устаревший режим Это связано с тем, что Easy2Boot не поддерживает UEFI, и поэтому карта памяти не появится, если я не сделаю этого.

Easy2Boot может не поддерживать UEFI, но Руфус поддерживает. Если вы используете Rufus для создания загрузочного USB-накопителя, вы можете настроить его на поддержку UEFI, и он будет работать.

Обратите внимание, что вам действительно нужно выбрать правильные настройки, чтобы это работало. Вам нужно установить схему разбиения на GPT, затем выбрать UEFI (не CSM) в качестве целевой системы. Обратите внимание, что новейшая версия Rufus выполняет большинство этих настроек автоматически, потому что в прошлом это сбивало с толку людей, почему они не работали.

Это то, что я использую для создания пользовательских установщиков Windows 10 с поддержкой UEFI.

Так как другой ответ объяснил, почему он не работал, но на самом деле не вдавался в подробности о том, как правильно решить проблему, я решил опубликовать этот ответ, потому что, хотя другой ответ технически корректен, я думаю, что это ответ Ваш актуальный вопрос лучше: как лучше установить Linux на мой компьютер.

Пожалуйста, поймите, это не пост для продвижения Rufus. Есть и другие инструменты, которые работают, у меня просто есть опыт работы с Rufus, поэтому я могу гарантировать, что он будет работать. Если вы находите другую программу более благоприятной, которая также поддерживает UEFI, не стесняйтесь использовать ее.

Тем не менее, на веб-сайте Easy2Boot я вижу, что они должны поддерживать режим UEFI, выполняя некоторые преобразования и прочее. Rufus все еще намного проще, на мой взгляд, но Easy2Boot, программное обеспечение, которое у вас уже есть, должно быть возможно.

Я предлагаю добавить точную опцию, которую необходимо выбрать в Rufus - GPT / UEFI - перед записью ISO. Это потому, что я думаю, что по умолчанию используется другое, «MBR для BIOS и UEFI», что само по себе вводит в заблуждение, и я обнаружил, что многие пользователи просто горят, не меняя его, и в результате получается USB, который работает только для BIOS / Legacy. Метод «DD» также работает и создает копию ISO в формате 1: 1, которая уже содержит загрузчики для обеих ситуаций, вместо того, чтобы Rufus вводил свои собственные загрузчики. GabrielaGarcia 6 лет назад 1
@GabrielaGarcia Хороший вопрос. Я сделаю правку для этого. :) LPChip 6 лет назад 0
Спасибо за руководство! VortixDev 6 лет назад 0

Похожие вопросы