Казалось бы, нет задачи проще, чем загрузка компьютера: нажал на кнопку питания, и спустя непродолжительное время на экране появится интерфейс операционной системы. На самом же деле именно между этими двумя событиями в недрах машины и происходит все самое интересное. Особенно если используется UEFI и диск с разметкой GPT. Давай заглянем под капот твоего ноута или компа и посмотрим, как загружаются устройства, использующие самые современные технологии.
 

Что не так с BIOS?

Сам термин BIOS археологи впервые обнаружили в коде CP/M от 1975 года. Исходные тексты CP/M, в файле BDOS.PLM (CP/M 1.1) которых под авторством Гэри Килдалла и появилось упоминание BASIC I/O SYSTEM, Computer History Museum выложил в свободный доступ в 2014-м в честь 40-летия системы. Если тебе интересно ознакомиться с этим историческим артефактом, они доступны на сайте музея.

Базовая система ввода-вывода в некотором смысле выполняет функцию интерфейса между оборудованием и ОС, без нее операционка не загрузится, а железо останется холодным и безжизненным. К тому же в ней есть функции, которые можно вызывать из ОС для доступа к базовым возможностям оборудования, подобно тому, как приложения используют системные вызовы для доступа к функциям ОС. Однако операционные системы все же предпочитают использовать собственные драйверы для работы с оборудованием.

В x86-системах BIOS выполняет тестирование (POST) и инициализацию оборудования. Затем управление передается первичному загрузчику (master boot code), который ищет активный раздел и его загрузочный сектор, чтобы передать управление ему для загрузки операционной системы. В BIOS используется формат разметки MBR, который тем не менее строго определенного стандарта не имеет.

INFO

Например, Крис Касперски в своей книге «Восстановление данных. Практическое руководство» писал, что в последние четыре байта, отведенные под код первичного загрузчика, Windows записывала идентификатор диска, и это неизбежно убивало использующий их загрузчик. Таким образом, для корректной работы с Windows первичный загрузчик должен был занимать не более 442 байт вместо честно выделенных ему 446.

BIOS за 45 лет существования показала себя невероятным долгожителем мира IT, пережив дискеты, CP/M и PL/M, MS-DOS и Windows 9x. Но сколько ни обновляй ее под современные реалии, в выделенные для начального загрузчика 446 байт сейчас много ненужного не поместишь. Были у BIOS и другие недостатки, из-за которых назревала необходимость заменить 16-битную архитектуру, по крайней мере для «большого железа» вчетверо большей разрядности. Так посчитали ребята из Intel, и в 1998 году был основан проект Intel Boot Initiative. Исходная версия спецификации, разработанная в первую очередь для машин на Itanium (IA-64), была опубликована под названием EFI (Extensible Firmware Interface) в 1999 году. А в 2005-м на базе этого проекта появился Unified EFI Forum, занимающийся разработкой и поддержкой родившейся таким образом технологии по сей день.

 

Пришла беда откуда не ждали

Иногда можно встретить обозначение UEFI BIOS. Из названия понятно, что UEFI позиционируется как расширяемый интерфейс между аппаратной платформой и операционной системой, предоставляющий таблицы и вызовы, которые доступны загрузчику ОС. Тем самым создается окружение для загрузки.

Помимо основной программы из прошивки, UEFI может использовать модули для расширения своей функциональности, например для поддержки нового оборудования или файловых систем. Подразумевается, что достаточно написать драйвер UEFI и он будет работать одинаково на всех совместимых операционных системах. Вообще, система прерываний BIOS была придумана чуть ли не для того же: при появлении нового устройства достаточно добавить его поддержку в BIOS, а ОС могла бы обращаться к устройству посредством базовой системы ввода-вывода — не зря же ее так назвали.

Кроме того, интерфейс этот зовется унифицированным. Спецификация указывает одной из целей разработки UEFI сделать так, чтобы разные операционки могли грузиться на разном железе без внесения изменений в ОС или аппаратную платформу. Иными словами, UEFI играет роль дополнительного слоя абстракции, в стандарте определен даже EFI Byte Code (EBC). Цели, безусловно, благие. Жаль, исполнение подкачало — реализовывать стандарт каждый волен по-своему, и, к примеру, китайские прошивки, как иногда пишут на форумах, способны иной раз удивлять своим поведением.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


2 комментария

  1. Аватар

    Laglag

    03.03.2020 в 18:48

    Народ будте акуратными сейчас что то жеское творится, максимум акуратности.
    Я всю инфу потерял, невкоем случаи не подключайте компьютер без упсы, а тем более к интернету где есть данные…
    херачат не подетски… в последок мне жеско хардик захерачили теперь он видится но как 0 гб…
    умно били… сначало мать, у меня в массиве были…
    смотрю не трогают на раслабоне сижу сибе… фаервол не врубаю правельно зачем… на удивление так спокойно…
    мне в принипи пофиг…
    на авито работает налоговая жестко, некаких контактов с людьми, первое что будут предалагть это встретиться… все можно сделать удалено, меня конгечно жестко стебало что когда я сайт с раскруткой делал рекламил через авито мне настаивали что бы встретиться… потом начали про фирму и т д…
    службу сервера выключите и посмотрите где у вас открыты общие ресурсы…
    ребята много чего бы написал… я повторяю не в коем случаи не подрубайте комп к интернету где есть аднные.
    ошибки не исправляить с сообщшении

  2. Аватар

    NExacker

    10.03.2020 в 22:49

Оставить мнение