В системе с двойной загрузкой, как BIOS выбирает, какой загрузчик запустить?


24

У меня двойная загрузка Windows и Ubuntu. Когда я включаю машину, BIOS выполняет POST, и после этого запускается загрузчик.

Я хочу понять, как BIOS выбирает, какой загрузчик запустить. Я хочу знать, как происходит процесс между BIOS и загрузчиком на компьютере с двойной загрузкой.


Ответы:


40

Микропрограмма BIOS на самом деле не выбирает загрузчик. Он загружает код из сектора 0 диска и выполняет его. Что бы там ни было, оно выполнится. Надеюсь, это загрузчик (или что-то, что загружает загрузчик), но это не обязательно. В первые дни ПК у вас были игры на гибких дисках, которые просто загружались и работали без ОС - теперь они называются «загрузчиками».

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

Многие системы UEFI загружаются в «унаследованном режиме», где UEFI загружает «служебный модуль совместимости», что делает его похожим на BIOS, и фактически работает как BIOS.

GRUB - это обычный загрузчик с открытым исходным кодом, который может загружать Linux или «загружать цепочку» (предоставлять контроль) загрузчику Windows (обычно winload.exe в папке Boot раздела Windows). GRUB - это то, что дает вам возможность принять решение. GRUB может читать файлы конфигурации и выбирать из них свой выбор по умолчанию.

Прочитайте это, если вы хотите обильные, кровавые детали.


Это одна из причин того, что в Ubuntu вам нужно sudoили root, чтобы записать что-либо на размонтированный диск; если программа или злонамеренный пользователь записывает вредоносное ПО в загрузочный раздел ...
wizzwizz4

Спасибо, Лоуренс. Ваше объяснение сделало мое понимание более ясным. Еще раз
Прашант Сингх,

13

На этой диаграмме показано, как управление передается из встроенного программного обеспечения (BIOS или UEFI) в загрузчик и из загрузчика в операционную систему Ubuntu.

введите описание изображения здесь
          BIOS против UEFI

Если ОС были установлены в разных режимах (BIOS и UEFI), двойная загрузка Windows и Ubuntu не может работать.


Преобразование Ubuntu в режим UEFI

  1. Запустите Boot-Repair и выберите Дополнительные параметры -> вкладка GRUB location .
  2. Если вы не видите параметр Отдельный раздел / boot / efi , это означает, что на вашем компьютере нет раздела UEFI.
  3. Если вы видите параметр Отдельный раздел / boot / efi , установите флажок слева от него, а затем нажмите кнопку Применить в правом нижнем углу.

    Преобразование Ubuntu в режим UEFI

  4. Настройте BIOS так, чтобы он загружал жесткий диск в режиме UEFI. Способ настройки этого параметра зависит от конкретной модели компьютера, но обычно этот параметр находится в настройках приоритета загрузки на вкладке Boot утилиты настройки BIOS / UEFI.


7

В традиционном режиме (загрузка BIOS, а не UEFI) BIOS контролирует порядок дисков. Когда-то давно это контролировалось кабелями; но изменение настроек BIOS лучше, чем открытие коробки и замена кабелей.

BIOS загружает (в память) первый сектор (512 байт диска, называемый MBR или основной загрузочной записью) первого диска (или порядок дисков, управляемый BIOS), а затем передает управление (ЦП) этому «загрузчику». Таким образом, BIOS завершил свою работу, и код в первом секторе работает.


Извините, сэр, но я немного сбит с толку, поскольку BIOS дают контроль над загрузчиком, а у окна и Linux разные загрузчики, так что на какой загрузчик он дает контроль. Какой процесс биос проходит, чтобы выбрать загрузчик
Prashant Singh

2
Ваша система может иметь только один загрузчик на диск (и активен только один). Как правило, если в вашей системе две операционные системы, вторая установленная владеет загрузчиком, так как она записала свой собственный код в MBR. Вот почему GNU / Linux (Ubuntu) использует GRUB; это многошаговая система (шаг 1 - MBR, шаги 1.5 и 2 находятся в / boot), в котором отображается меню, спрашивающее, какую операционную систему вы хотите загрузить / запустить (о которой в любом случае знает grub, а также любые ISO, которые у вас есть). добавил к этому). Если у вас есть два дисковода; у вас может быть загрузчик на каждом диске, но BIOS определит, какой из них будет работать.
Guiverc

Так что, если у меня есть 2 операционные системы на моем компьютере, тогда необходимо, чтобы GRUB поднял меню, спрашивая, какую ОС я хочу загрузить, почему бы не загрузчик окна поместить это меню, так как у меня есть обе ОС на моем компьютере.
Прашант Сингх

Windows также имеет загрузчик (в любом случае, до Vista); но это не так умно, как личинка. версия windoze не ищет продукты не-msft (и не может читать ext / reiserfs / xfs / zfs / btrfs / ...), поэтому вам нужно добавить * nix самостоятельно; и следующее обновление ..... версию windoze не стоит использовать, так как grub намного лучше. Если windoze был на одном диске, Ubuntu на другом, вы можете изменить загрузку с помощью BIOS; но жрать быстрее / проще. (если доволен моим ответом; примите его, чтобы закрыть вопрос)
guiverc

3
@Prashant Singh: Основная причина, по которой загрузчик Windows не делает этого (или нет, когда я немного знал о Windows), заключается в том, что MicroSoft не зарабатывает деньги, позволяя запускать другие операционные системы.
jamesqf
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.