Что происходит после включения компьютера и до загрузки операционной системы? Начнем с того, что в настоящее время существует два способа начальной инициализации персональных компьютеров. Первый, и он же самый старый - это BIOS (Base In-Out System), который использовался на всех PC-совместимых компьютерах прошлого столетия. Второй способ - относительно новый. Это использование UEFI (Unified Extensible Firmware Interface). На всех современных компьютерах используется именно он. Попробуем в общих чертах разобраться чем они отличаются и как работают.

Процесс загрузки компьютера с BIOS

После включения компьютера, память представляет из себя пространство, состоящее из пустых ячеек. Процессор начинает свою работу и ... не может ничего сделать, так как в памяти пусто, а значит нет и команд для работы процессора. Команды эти находятся в специальной микросхеме ПЗУ (ROM), которая вставлена (или припаяна) в материнскую плату и содержит в себе BIOS (Base In-Out System) - набор программ, позволяющий работать со всеми аппаратными частями компьютера.

Микросхема BIOS на материнской плате

Проблема в том, что процессор ничего не знает про ПЗУ, он работает только с оперативной памятью. Чтобы выйти из этого положения, аппаратно сделали так, что когда происходит обращение к памяти с сегментным адресом F000, то это обращение перенаправляется в ПЗУ. Таким образом у компьютера изъяли часть оперативной памяти, подменив ее на ПЗУ. Процессор же спроектирован так, что при старте у него в сегментном регистре CS оказывается значение F000, а в регистре IP - значение FFF0 (т.н. Reset Vector). У всех PC-совестимых компьютеров по этому адресу в ПЗУ находится точка входа в BIOS.

После выполнения различных проверок оборудования, BIOS определяет с какого устройства следует загружать операционную систему. Загрузочное устройство настраивается в специальной программе BIOS Setup, в которую можно зайти нажав определенную комбинацию клавиш клавиатуры во время загрузки компьютера. В качестве загрузочного устройства может выступать, например, дискета, CD/DVD диск, HDD, USB-Flash.

С загрузочного диска считывается нулевой сектор - MBR (Master Boot Record). MBR содержит информацию о том на какие разделы разбит диск, какой из этих разделов является активным, то есть с какого раздела можно загружаться. После определения активного раздела, с него загружается первый сектор, называемый boot-сектором. Этот boot-сектор должен содержать загрузочный код, определяемый операционной системой. BIOS передает управление в этот код, и на этом завершает свою работу. Далее уже начинает работать установленная операционная система.

Загрузка с UEFI

UEFI - это современная замена устаревшему BIOS'у. Расшифровывается как Unified Extensible Firmware Interface, что означает по сути тот же BIOS, только унифицированный и расширяемый. Конечно на самом деле различия у BIOS и UEFI огромные, но суть остается той же - проверить и настроить оборудование и запустить загрузчик операционной системы. Основные отличия UEFI от BIOS следующие:

  1. Открытый интерфейс. BIOS всегда был черным ящиком, в котором что-то происходило, а наружу торчало несколько точек входа (программные прерывания, через которые и происходила работа с BIOS). UEFI же в свою очередь имеет хорошо спроектированную унифицированную структуру с возможностью расширения и дополнения модулями сторонних разработчиков. Например некоторые драйверы оборудования могут устанавливаться еще на этапе загрузки компьютера, и операционная система уже сможет работать с оборудованием через эти драйверы. Конечно это имеет и обратную сторону - снижение уровня безопасности. Если раньше вирус в крайнем случае мог порушить операционную систему и ее можно было переустановить с нуля, то сейчас теоретически могут появиться вирусы, способные интегрироваться в ПЗУ компьютера, и выковырять их оттуда ни один антивирус не сможет.
  1. Работа UEFI в защищенном режиме процессора. В то время как BIOS работал в реальном режиме. Конечно никто не запрещал и BIOS работать в защищенном режиме, но при выходе на загрузчик ОС, процессор все равно должен был находиться в реальном режиме для обеспечения обратной совместимости со старыми операционными системами. В UEFI такого ограничения нет, что позволяет быстрее производить всю настройку оборудования и загружать операционную систему уже из защищенного режима.
  1. Проверка подписей загрузчика ОС. Довольно спорное новшество UEFI, которое должно повысить безопасность пользователей и не позволить загружать операционную систему, если ее загрузчик был как-то модифицирован извне. Побочным эффектом от этой проверки является то, что можно например запретить устанавливать на компьютер любые операционные системы кроме ОС одного производителя (все мы знаем про кого речь). В настоящее время на большинстве компьютеров эта опция отключаемая (за исключением вроде бы планшетов с той самой ОС).
  2. Поддержка GPT вместо MBR. Структура же разделов GPT (GUID Partition Table) позволяет описывать разделы дисков размером до 9,4 зеттабайт (один зеттабайт равен 1 073 741 824 терабайт). В структуре MBR было заложено ограничение на размер раздела в 2Тб. Кроме того, MBR позволял задать не более 4 основных разделов на диске. У структуры GPT нет ограничений на количество разделов.

Результат работы UEFI в общем-то не отличается от работы BIOS - необходимо прочитать с диска в память загрузчик операционной системы и передать ему управление.