Для хранения программ для первоначального тестирования и загрузки компьютера предназначен

Обновлено: 21.11.2024

"Программное обеспечение" — это общая категория кода, работающего на оборудовании. Если аппаратное обеспечение — это пианино, то программное обеспечение — это музыка. Обычный случай — это «программа», такая как Firefox — программное обеспечение, которое вы запускаете на своем компьютере для решения конкретной проблемы. Компьютер может запускать несколько программ одновременно и несет ответственность за разделение их памяти.

ЦП понимает низкоуровневый язык "машинного кода" (также известный как "собственный код"). Язык машинного кода встроен в конструкцию аппаратного обеспечения ЦП; это не то, что можно изменить по желанию. Каждое семейство совместимых ЦП (например, очень популярное семейство Intel x86) имеет свой собственный уникальный машинный код, несовместимый с машинным кодом других семейств ЦП.

Что такое программа/приложение?

  • Что такое программа или приложение?
    - напр. Фаерфокс
  • Firefox состоит из миллионов инструкций машинного кода.
    - Запускается сверху вниз (прямо как Javascript!)
    - Появляется окно Firefox (первые 1000 инструкций)
    - Появляются его меню (следующие 1000)
    - Курсор мигает в ожидании ввода
  • Инструкции, при запуске которых выполняются действия "Firefox".
  • Firefox.exe — это файл в файловой системе размером 80 МБ
    («.exe» — это соглашение Windows для названия файла программы)
  • Файл Firefox.exe в основном состоит из инструкций машинного кода.
  • Каждая инструкция имеет размер, скажем, 4 байта
  • Firefox.exe размером 80 МБ содержит около 20 миллионов машинных инструкций.

Машинный код определяет набор отдельных инструкций. Каждая инструкция машинного кода чрезвычайно примитивна, например, сложение двух чисел или проверка того, равно ли число нулю. При сохранении каждая инструкция занимает всего несколько байтов. Когда мы говорили ранее, что ЦП может выполнять 2 миллиарда операций в секунду, мы имели в виду, что ЦП может выполнять 2 миллиарда строк машинного кода в секунду.

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

Как работает программа?

  • ЦП запускает «цикл выборки/выполнения»
    -выбирает одну инструкцию в последовательности,
    -выполняет (запускает) эту инструкцию, например выполнить сложение
    -выбрать следующую инструкцию и т. д.
  • Запустить программу = запустить ЦП, работающий с его 1-й инструкцией,
    он прогоняет весь машинный код, запускает программу,
    программа будет иметь такие инструкции, как "вернуться к шагу 3", чтобы сохранить ее работает
  • Сверхпростые инструкции машинного кода выполняются со скоростью 2 миллиарда операций в секунду.

ЦП выполняет инструкции, используя цикл «выборка-выполнение»: ЦП получает первую инструкцию в последовательности, выполняет ее (добавляя два числа или что-то еще), затем выбирает следующую инструкцию и выполняет ее и так далее. Некоторые инструкции влияют на порядок, в котором ЦП выполняет последовательность инструкций. Например, инструкция может указать ЦП вернуться к более ранней точке в последовательности инструкций (циклы реализованы таким образом) или пропустить следующую инструкцию, если определенное условие истинно (условия if реализованы таким образом). .

Как начинается программа?

  • Файл Firefox.exe содержит свои инструкции (в файловой системе)
  • Чтобы запустить Firefox.exe:
    -Каждая программа получает свою собственную область ОЗУ.
    - Область ОЗУ содержит код программы и данные, с которыми она манипулирует.
    - Байты инструкций копируются из хранения в ОЗУ
    -ЦП получает указание начать работу с первой инструкции
    -Теперь программа работает!

В файловой системе такой файл, как Firefox.exe, просто содержит байты инструкций машинного кода, из которых состоит программа («.exe» — это соглашение Windows, обозначающее файл как программу). Каждая инструкция машинного кода занимает примерно 4 байта, а вся программа представляет собой просто огромную последовательность инструкций.

Когда пользователь дважды щелкает файл программы, чтобы запустить его, по сути, блок байтов инструкций для программы копируется в ОЗУ, а затем ЦП получает указание начать работу с первой инструкции в этой области ОЗУ.

Что запускает Firefox? «Операционная система»

  • Как запустить Firefox?
  • "Операционная система"
    -e.g. Windows, Linux, Android, iOS
  • Операционная система = управление
  • Набор управляющих программ, которые управляют компьютером.
  • Операционная система запускается при первом включении компьютера
  • Управление запуском/остановкой программ
  • Управление оперативной памятью
  • Управление постоянным хранилищем
  • Компьютеры могут запускать несколько программ одновременно
  • Операционная система отслеживает информацию для каждой программы и распределяет ресурсы (например, ОЗУ) между программами.

"Операционная система" компьютера подобна первой управляющей программе, которая начинает работать при первом включении компьютера ("загрузке"). Операционная система играет невидимую административную и бухгалтерскую роль за кулисами. Когда ноутбук или телефон запускается, операционная система обычно приводит все в порядок, а затем запускает программу «Проводник файлов», которая отображает доступные программы, меню и т. д., которые показывают пользователю, что доступно, позволяя пользователю перемещаться по программам и запускать их.< /p>

Операционная система поддерживает порядок в фоновом режиме, так что несколько программ могут работать одновременно, что называется "многозадачностью". Операционная система выделяет каждой программе собственную область памяти, поэтому каждая программа обращается только к своим собственным ресурсам... пытаясь ограничить возможности ошибочной или вредоносной программы. Хранение программ отдельно иногда называют «песочницей»... опосредование доступа каждой программы, чтобы она работала независимо, не мешая другим программам или системе в целом. Точно так же каждая программа имеет некоторый доступ к экрану через окно, но эта область вывода отделена от вывода других программ.

Вспомните, что файл .exe или что-то еще — это, по сути, просто файл с инструкциями машинного кода. Когда вы дважды щелкаете программу, операционная система «запускает» программу, выполняя вспомогательные действия по выделению области памяти в ОЗУ для программы, загружая первый раздел машинного кода программы в эту память и, наконец, направляя CPU для запуска этого кода.

Хотя технически память — это любая форма электронного хранилища, чаще всего она используется для идентификации быстрых временных форм хранения. Если бы центральный процессор вашего компьютера должен был постоянно обращаться к жесткому диску для извлечения всех необходимых ему данных, он работал бы очень медленно. Когда информация хранится в памяти, ЦП может получить к ней гораздо более быстрый доступ. Большинство форм памяти предназначены для временного хранения данных.

ЦП обращается к памяти в соответствии с четкой иерархией. Независимо от того, поступают ли они из постоянного хранилища (жесткий диск) или из ввода (клавиатура), большинство данных сначала попадают в оперативную память (ОЗУ). Затем ЦП сохраняет фрагменты данных, к которым ему необходимо получить доступ, часто в кэше, и поддерживает определенные специальные инструкции в регистре. Мы поговорим о кеше и регистрах позже.

Все компоненты вашего компьютера, такие как ЦП, жесткий диск и операционная система, работают вместе как одна команда, и память является одной из наиболее важных частей этой команды. С момента включения компьютера до момента его выключения ваш ЦП постоянно использует память. Давайте рассмотрим типичный сценарий:

  • Вы включаете компьютер.
  • Компьютер загружает данные из постоянной памяти (ПЗУ) и выполняет самотестирование при включении питания (POST), чтобы убедиться, что все основные компоненты работают правильно. В рамках этого теста контроллер памяти проверяет все адреса памяти с помощью операции быстрого чтения/записи, чтобы убедиться в отсутствии ошибок в микросхемах памяти. Чтение/запись означает, что данные записываются в бит, а затем считываются из этого бита.
  • Компьютер загружает базовую систему ввода-вывода (BIOS) из ПЗУ. BIOS предоставляет самую основную информацию об устройствах хранения, последовательности загрузки, безопасности, функции Plug and Play (автоматическое распознавание устройств) и некоторых других элементах.
  • Компьютер загружает операционную систему (ОС) с жесткого диска в оперативную память системы. Как правило, критически важные части операционной системы хранятся в оперативной памяти, пока компьютер включен. Это позволяет ЦП иметь немедленный доступ к операционной системе, что повышает производительность и функциональность всей системы.
  • Когда вы открываете приложение, оно загружается в ОЗУ. Для экономии использования оперативной памяти многие приложения сначала загружают только основные части программы, а затем загружают другие части по мере необходимости.
  • После загрузки приложения все файлы, открытые для использования в этом приложении, загружаются в ОЗУ.
  • Когда вы сохраняете файл и закрываете приложение, файл записывается на указанное устройство хранения, а затем он и приложение удаляются из ОЗУ.

В приведенном выше списке каждый раз, когда что-то загружается или открывается, оно помещается в оперативную память. Это просто означает, что он был помещен во временное хранилище компьютера, чтобы ЦП мог легче получить доступ к этой информации.ЦП запрашивает необходимые данные из ОЗУ, обрабатывает их и записывает новые данные обратно в ОЗУ в непрерывном цикле. В большинстве компьютеров перетасовка данных между ЦП и ОЗУ происходит миллионы раз в секунду. Когда приложение закрывается, оно и все сопутствующие файлы обычно очищаются (удаляются) из оперативной памяти, чтобы освободить место для новых данных. Если измененные файлы не сохраняются на постоянное запоминающее устройство перед очисткой, они теряются.

Один распространенный вопрос о настольных компьютерах, который возникает все время, звучит так: "Зачем компьютеру нужно так много систем памяти?"

Операционную систему иногда называют «первой программой», позволяющей запускать другие программы. Однако обычно он хранится в виде файла (или, чаще, набора файлов) на диске. Как запускается эта «первая» программа?

Передняя панель PDP–11/70

Операционная система загружается в процессе начальной загрузки, более кратко известном как загрузка. Загрузчик — это программа, задачей которой является загрузка более крупной программы, например операционной системы.

Когда вы включаете компьютер, его память обычно не инициализируется. Следовательно, нечего бегать. Ранние компьютеры имели аппаратное обеспечение, которое позволяло оператору нажатием кнопки загружать последовательность байтов с перфокарт, перфоленты или ленточного накопителя. Переключатели на передней панели компьютера будут определять источник данных и целевой адрес памяти. В некоторых случаях программное обеспечение загрузчика было жестко подключено как энергонезависимая память (на ранних компьютерах это была сетка проводов с разрезами в соответствующих местах, где требовался 0-бит).

В ранних системах миникомпьютеров и микрокомпьютеров оператор компьютера использовал переключатели на передней панели компьютера, чтобы переключать код для загрузки более крупной программы, программируя каждую ячейку памяти, а затем запуская программу. Эта программа может делать что-то простое, например считывать последовательные байты в память с бумажной ленты, прикрепленной к телетайпу.

В более поздних системах постоянная память будет содержать небольшой загрузчик, обладающий базовыми интеллектуальными возможностями для чтения, скажем, первого сектора (512 байт) диска.

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

Загрузчик часто выполняет некоторую инициализацию ядра системного оборудования, а затем загружает операционную систему. После загрузки операционной системы загрузчик передает ей управление и больше не нужен. Операционная система сама инициализируется, настроит системное оборудование (например, настроит управление памятью, установит таймеры, установит прерывания) и при необходимости загрузит драйверы устройств.

Чтобы конкретизировать пример процесса загрузки, давайте взглянем на 32-разрядные Intel-совместимые ПК (через некоторое время мы перейдем к 64-разрядным системам). Эта архитектура известна как IA-32 (32-разрядная архитектура Intel) и определяет набор инструкций большинства микропроцессоров Intel, начиная с Intel 80386, представленного в 1986 году. Она по-прежнему поддерживается в новейших процессорах Intel.

Ожидается, что ПК на базе IA-32 будет иметь BIOS (базовую систему ввода/вывода, которая включает прошивку загрузчика) в энергонезависимой памяти (в прошлом ПЗУ и флэш-память NOR в наши дни). BIOS является потомком BIOS ранних систем CP/M, поскольку содержит низкоуровневые функции для доступа к некоторым базовым системным устройствам, таким как дисковый ввод-вывод, чтение с клавиатуры и доступ к видеодисплею. Он также содержит код для загрузки загрузчика этапа 1.

Когда ЦП сбрасывается при запуске, компьютер начинает выполнение в ячейке памяти 0xffff0 (архитектура IA–32 использует форму адресации сегмент:смещение; сегмент кода устанавливается на 0xf000, а указатель инструкции устанавливается на fff0 ) .

Процессор запускается в реальном режиме, что дает ему доступ только к 20-битному адресному пространству памяти и обеспечивает прямой доступ к вводу-выводу, прерываниям и памяти (в игру вступают 32-битная адресация и виртуальная память). при переключении процессора в защищенный режим). Адрес 0xffff0 фактически находится в конце ПЗУ BIOS и содержит инструкцию перехода в область BIOS, содержащую код запуска.

При запуске BIOS выполняет следующую последовательность действий:

  1. Самопроверка при включении питания (POST)
  2. Определить BIOS видеокарты (чипа) и выполнить его код для инициализации видеооборудования.
  3. Обнаружение любых других BIOS устройств и вызов их функций инициализации
  4. Отображение начального экрана BIOS
  5. Выполните краткий тест памяти (узнайте, сколько памяти в системе)
  6. Установите параметры памяти и накопителя
  7. Настройка устройств Plug & Play (обычно устройств с шиной PCI)
  8. Назначить ресурсы (каналы DMA и IRQ)
  9. Определить загрузочное устройство

Когда BIOS идентифицирует загрузочное устройство (обычно это один из нескольких дисков, помеченных как загрузочный диск), он считывает блок 0 с этого устройства в ячейку памяти 0x7c00 и переходит туда.

Этап 1: основная загрузочная запись

  • Загрузчик первого этапа (≤ 440 байт)
  • Подпись диска (4 байта)
  • Таблица разделов диска, которая определяет отдельные области диска (16 байт на раздел × 4 раздела)

Этап 2: Загрузочная запись тома

После того как BIOS передает управление началу MBR, который был загружен в память, код MBR сканирует свою таблицу разделов и загружает загрузочную запись тома (VBR) для этого раздела. VBR — это последовательность последовательных блоков, начиная с первого блока диска назначенного раздела. Первый блок VBR идентифицирует тип и размер раздела и содержит начальный загрузчик программы (IPL), который представляет собой код, загружающий дополнительные блоки, составляющие загрузчик второй ступени. В системах, производных от Windows NT (например, Windows Server 2012, Windows 8), IPL загружает программу NTLDR, которая затем загружает операционную систему.

Одна из причин, по которой низкоуровневым загрузчикам сложно загрузить полную ОС, особенно такую, которая может состоять из нескольких файлов, заключается в том, что для этого требуется возможность анализировать структуру файловой системы. Это означает понимание того, как располагаются каталоги и имена файлов и как найти блоки данных, соответствующие конкретному файлу. Без большого количества кода гораздо проще просто читать последовательные блоки. Загрузчик более высокого уровня, такой как Microsoft NTLDR, может читать форматы файлов NTFS, FAT и ISO 9660 (CD).

За пределами Windows

Существует множество вариантов загрузки других операционных систем на ПК с процессором Intel. Одним из популярных загрузчиков в системах Linux является GRUB или GRand Unified Bootloader. GRUB также является многоэтапным загрузчиком. BIOS, разумеется, делает то же, что и всегда: идентифицирует загрузочное устройство, загружает основную загрузочную запись и передает управление этому только что загруженному коду. В GRUB MBR обычно содержит загрузчик первого этапа, называемый GRUB Stage 1. Этот загрузчик этапа 1 загружает GRUB Stage 2. Загрузчик этапа 2 предоставляет пользователю выбор операционных систем для загрузки и позволяет пользователю указать любую дополнительные параметры загрузки для этих систем (например, установить максимальный объем памяти, включить отладку). Затем он считывает ядро ​​выбранной операционной системы и передает ему управление.

Особая проблема с использованием GRUB для загрузки Windows заключается в том, что Windows не совместима с мультизагрузкой. Мультизагрузка — это спецификация Free Software Foundation по загрузке нескольких операционных систем с использованием одного загрузчика. В этом случае GRUB имитирует обычный процесс загрузки Windows. Он загружает загрузчик, который обычно находится в MBR (или запускает программу меню загрузки Windows). С этого момента GRUB исчезает, Windows понятия не имеет, что произошло, и вступает во владение собственный процесс загрузки Windows.

До свидания, BIOS. Здравствуй, UEFI

Поскольку 64-разрядные архитектуры пришли на смену 32-разрядным, BIOS стал выглядеть довольно устаревшим. Intel намеревалась создать спецификацию преемника BIOS, в котором не было бы ограничений на выполнение кода запуска в 16-битном режиме с 20-битной адресацией. Эта спецификация называется Unified Extensible Firmware Interface или UEFI. Хотя он разработан Intel, с 2005 года им управляет Unified EFI Forum. Он используется во многих новых 64-разрядных системах, включая Mac, которые также имеют устаревшую поддержку BIOS для запуска Windows.

Загрузка с UEFI

Благодаря UEFI больше нет необходимости в основной загрузочной записи для хранения загрузчика этапа 1; UEFI умеет анализировать файловую систему и загружать файл сам по себе, даже если этот файл не занимает смежные блоки диска. Вместо этого UEFI считывает таблицу разделов GUID (глобальный уникальный идентификатор) (GPT), которая находится в блоках сразу после блока 0 (где MBR все еще находится по устаревшим причинам). GPT описывает структуру таблицы разделов на диске. Исходя из этого, загрузчик EFI идентифицирует системный раздел EFI. Этот системный раздел содержит загрузчики для всех операционных систем, установленных на других разделах устройства. Для систем Windows с поддержкой EFI UEFI загружает Диспетчер загрузки Windows (bootmgfw.efi). Для более старых 64-разрядных систем NT EFI загружал IA64ldr.Для Linux есть много вариантов. Двумя распространенными являются использование версии GRUB (Grand Unified Bootloader) с поддержкой EFI и загрузка файла, такого как grub.efi, или загрузка EFI load load elilo.efi, загрузчик EFI.

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

Все наше обсуждение до сих пор было сосредоточено на загрузке с архитектурой на базе ПК Intel (включая архитектуры, совместимые с IA-32/IA-64, например, от AMD). Это доминирующая архитектура в современных ПК (от ноутбуков до серверов), но существует очень много устройств не Intel, особенно встроенных устройств, таких как сотовые телефоны. А что с ними?

Существует множество реализаций процесса загрузки. Многие встроенные устройства не загружают операционную систему, но уже хранят ее в энергонезависимой памяти (например, во флэш-памяти или ПЗУ). Те, которые загружают ОС, такие как телефоны Android на базе ARM, например, будут выполнять код в постоянной памяти (обычно во флэш-памяти NOR), когда устройство включено. Этот загрузочный код встроен в ASIC ЦП на некоторых устройствах, поэтому вам не нужна отдельная микросхема флэш-памяти на плате.

При перезагрузке системы (включая включение питания) процессор находится в режиме супервизора (SVC), а прерывания отключены. В системах на базе ARM процессор начинает выполнение по адресу 0x00000000. Флэш-память, содержащая код запуска, отображается на адрес 0x00000000 при сбросе. Этот код выполняет различные инициализации, включая настройку таблицы векторов исключений в DRAM и копирование кода приложения из ROM в DRAM (в DRAM код выполняется быстрее). Код переназначает DRAM на адрес 0, тем самым скрывая флэш-память (процессор имеет бит REMAP для изменения отображения флэш-памяти). Затем инициализируется система памяти. Это включает в себя настройку защиты памяти и настройку системных стеков. Затем инициализируются устройства ввода/вывода, а процессор переключается в пользовательский режим. Загрузочная прошивка обнаруживает загрузочный носитель, загружает и запускает загрузчик второго уровня (при необходимости). Загрузчик второго этапа часто представляет собой GRUB для больших систем или uBoot для встроенных систем. Этот загрузчик второго этапа загружает операционную систему и передает ей управление.

Старые версии систем Apple Macintosh на базе PowerPC, начиная как минимум с OS 8, а также с OS X, основывались на Open Firmware. Открытая прошивка была разработана Sun и использовалась в компьютерах, отличных от Intel Sun. Как только Apple перешла на системы Intel, она приняла UEFI в качестве встроенного ПО на уровне загрузки.

Старые компьютеры Mac

Открытая прошивка хранится в ПЗУ и, как и BIOS ПК, запускается при включении питания. Поскольку Open Firmware была разработана как независимая от платформы, она реализована на Forth (простой язык на основе стека) и скомпилирована в байт-коды, а не в машинные инструкции. Прошивка содержит интерпретатор байт-кода.

В отличие от BIOS, Open Firmware предоставляет пользователю процессор командной строки, из которого можно редактировать параметры конфигурации системы, такие как уменьшение объема физической памяти, отладка системы или даже запуск сервера telnet, чтобы вы могли взаимодействовать с прошивкой и процессом загрузки с удаленного компьютера через соединение Ethernet.

Перед загрузкой операционной системы Open Firmware создает дерево устройств, исследуя компоненты на основной плате и устройствах расширения.

Как и BIOS ПК, Open Firmware содержит драйверы устройств, которые в процессе загрузки встроенного ПО могут использоваться для доступа к диску, клавиатуре, монитору и сети. Однако все эти драйверы реализованы в FCode, системе байт-кода Forth. Также как и BIOS, эти драйверы используются только в процессе загрузки. Сама операционная система имеет собственные драйверы среды выполнения.

В отличие от BIOS, Open Firmware может анализировать файловые системы HFS/HFS+ (исходная файловая система на компьютерах Mac), поэтому вы можете использовать интерпретатор команд Open Firmware для загрузки загрузочного файла с жесткого диска и его запуска. По умолчанию Open Firmware загружает файл из системного раздела. В системах OS 9 это был файл с именем «Mac OS ROM» в папке System. В системах OS X он загружает /System/Library/CoreServices/BootX. BootX — это загрузчик, который затем загружается в ядро.

Макинтош сегодня

Mac использует UEFI для своей системной прошивки.

При запуске Mac первым выполняется код BootROM. При этом устанавливаются драйверы EFI для соответствующих аппаратных устройств, инициализируются некоторые аппаратные интерфейсы, проверяется наличие достаточного объема памяти и выполняется краткая самопроверка при включении питания.В отличие от BIOS ПК, который ничего не знал о файловых системах и мог только читать необработанные блоки диска, UEFI на Mac был расширен для анализа файловых систем FAT (устаревшие DOS/Windows) и HFS+ (родной Mac) на диске. Он считывает GPT (таблицу разделов GUID) для идентификации разделов диска. Загрузочный том по умолчанию хранится в NVRAM.

Вместо указания пути к загрузчику заголовок тома HFS+ (данные в начале файловой системы HFS+) указывает на благословенный файл или благословенный каталог (см. команду bless. Если каталог благословлен, это указывает прошивке EFI искать в этом каталоге загрузчик. Если файл благословлен, это указывает прошивке EFI загружать этот файл в качестве загрузчика (есть дополнительные варианты, такие как загрузка с несмонтированного тома).

По умолчанию загрузчик находится в /System/Library/CoreServices/boot.efi в корневом (часто единственном) разделе диска.

Кроме того, прошивка поддерживает загрузку загрузчика второго этапа или ядра с сетевого сервера (сервера сетевой загрузки).

При загрузке файла boot.efi на экране компьютера отображается металлический логотип Apple. Загрузчик загружает ядро, а также основные расширения драйверов, которые затем запускают launchd, выполняющий различные сценарии и программы запуска. После загрузки ядра под логотипом Apple появляется вращающаяся шестеренка. Когда ядро ​​запускает первый процесс, launchd, экран становится синим.

Описание запуска OS X можно найти в статье Что такое Mac OS X.

Для поддержки загрузки операционных систем на основе BIOS, таких как более старые системы Windows и системы Linux, использующие GRUB или другие загрузчики с поддержкой BIOS, EFI устанавливает компонент «модуль поддержки совместимости» (CSM) из микропрограммы системы. Затем запускается процесс загрузки на основе BIOS. Этот модуль поддержки совместимости загружается только тогда, когда пользователь выбирает Windows в качестве операционной системы по умолчанию для загрузки. Процесс загрузки теперь представляет собой стандартную загрузку на основе BIOS. Основная загрузочная запись (MBR) загружается и выполняется, которая затем находит и загружает загрузочную запись тома раздела Windows (или Linux).

Справочники по загрузке Mac

Ссылки на Mac OS X:

    , Справочная библиотека Mac OS X, Apple Inc. , Справочная библиотека Mac OS X, Apple Inc. , HT2674, Apple Inc. , © 2007 Apple Inc. , Проект rEFIt Sourceforge

Это обновленная версия исходного документа, написанного 14 сентября 2010 г.

© 2003-2015 Пол Кржижановский. Все права защищены.

С вопросами или комментариями по этому сайту обращайтесь к Полу Кржижановски, gro.kp@ofnibew

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

Любые мнения, выраженные на этой странице, не обязательно отражают мнение моих работодателей и могут даже не отражать мое собственное.

Безопасная загрузка – это стандарт безопасности, разработанный представителями индустрии ПК, который помогает гарантировать, что устройство загружается с использованием только программного обеспечения, которому доверяет производитель оригинального оборудования (OEM). При запуске ПК микропрограмма проверяет подпись каждой части загрузочного программного обеспечения, включая драйверы микропрограммы UEFI (также известные как дополнительные ПЗУ), приложения EFI и операционную систему. Если подписи действительны, ПК загружается, а микропрограмма передает управление операционной системе.

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

Информацию о том, как работает процесс безопасной загрузки, включая доверенную загрузку и измеряемую загрузку, см. в разделе Безопасность процесса загрузки Windows 10.

Требования к безопасной загрузке

Для поддержки безопасной загрузки необходимо предоставить следующее.

< td>Система должна защищать от отката прошивки до более старых версий.
Требования к оборудованию Подробности
UEFI версии 2.3.1 Errata C переменные Переменные должны быть установлены на SecureBoot=1 и SetupMode=0 с базой данных сигнатур (EFI_IMAGE_SECURITY_DATABASE), необходимой для загрузки предварительно защищенной машины, и включая PK, установленный в действительной базе данных KEK. Для получения дополнительной информации выполните поиск системных требований System.Fundamentals.Firmware.UEFISecureBoot в загружаемом PDF-файле спецификаций и политик программы совместимости оборудования Windows.
UEFI v2.3.1 Section 27< /td> Платформа должна предоставлять интерфейс, соответствующий профилю UEFI v2.3.1, раздел 27.
База данных сигнатур UEFI Платформа должна поставляться с правильными ключами в базе данных сигнатур UEFI (db), чтобы разрешить загрузку Windows. Он также должен поддерживать безопасные аутентифицированные обновления баз данных. Хранение безопасных переменных должно быть изолировано от работающей операционной системы, чтобы их нельзя было изменить без обнаружения.
Подписание встроенного ПО Все компоненты встроенного ПО должны быть подписаны используя как минимум RSA-2048 с SHA-256.
Диспетчер загрузки При включении питания система должна начать выполнение кода встроенного ПО и используйте криптографию с открытым ключом в соответствии с политикой алгоритма для проверки подписей всех образов в последовательности загрузки, вплоть до диспетчера загрузки Windows включительно.
Защита от отката
EFI_HASH_PROTOCOL Платформа предоставляет EFI_HASH_PROTOCOL (согласно UEFI v2.3.1) для разгрузки криптографические хэш-операции и EFI_RNG_PROTOCOL (определен Microsoft) для доступа к энтропии платформы.

Сигнатурные базы данных и ключи

Перед развертыванием ПК вы, как OEM-производитель, сохраняете базы данных безопасной загрузки на ПК. Сюда входят база данных подписей (db), база данных отозванных подписей (dbx) и база данных ключей регистрации ключей (KEK). Эти базы данных хранятся в энергонезависимой памяти встроенного ПО (NV-RAM) во время производства.

База данных сигнатур (db) и база данных отозванных сигнатур (dbx) содержат список подписантов или хэшей образов приложений UEFI, загрузчиков операционной системы (таких как Microsoft Operating System Loader или Boot Manager) и драйверов UEFI, которые могут быть загружается на устройство. Список отозванных содержит элементы, которые больше не являются доверенными и не могут быть загружены. Если хэш изображения есть в обеих базах данных, база данных отозванных подписей (dbx) имеет приоритет.

База данных ключей регистрации ключей (KEK) — это отдельная база данных ключей подписи, которую можно использовать для обновления базы данных подписей и базы данных отозванных подписей. Microsoft требует, чтобы указанный ключ был включен в базу данных KEK, чтобы в будущем Microsoft могла добавлять новые операционные системы в базу данных сигнатур или добавлять заведомо неверные образы в базу данных отозванных сигнатур.

После добавления этих баз данных и окончательной проверки и тестирования встроенного ПО OEM-производитель блокирует редактирование встроенного ПО, за исключением обновлений, подписанных с помощью правильного ключа, или обновлений, сделанных физически присутствующим пользователем, использующим меню встроенного ПО, и затем генерирует ключ платформы (PK). PK можно использовать для подписи обновлений KEK или отключения безопасной загрузки.

Вам следует обратиться к производителю микропрограммы за инструментами и помощью в создании этих баз данных.

Читайте также: