uefi Сравнение версий

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
uefi [2016/12/21 16:54]
[Что нужно для установки ОС, что бы она грузилась через UEFI?]
uefi [2016/12/22 21:18]
удалено
Строка 15: Строка 15:
 Проблемой BIOS принято считать то, что много работы он делает зря (чем затягивает процесс загрузки системы). Практически всю его работу по инициализации и поддержке оборудования компьютера все современные ОС попросту игнорируют и повторно инициализируют и далее работают через свои драйвера. Все, что дает BIOS, было реально востребовано только в ранних версиях DOS... Проблемой BIOS принято считать то, что много работы он делает зря (чем затягивает процесс загрузки системы). Практически всю его работу по инициализации и поддержке оборудования компьютера все современные ОС попросту игнорируют и повторно инициализируют и далее работают через свои драйвера. Все, что дает BIOS, было реально востребовано только в ранних версиях DOS...
  
-Другой проблемой являются ограничения,​ которые установлены для поддержки BIOS: это 16-ти разрядный реальный режим работы процессора с набором команд i8086, 1Мб адресуемого пространства памяти и периферия (клавиатура,​ видео адаптер,​ контроллер прямого доступа в память) совместимая с IBM AT. На сегодняшний день, требовать от 64-х разрядного многоядерного процессора совместимости с 16-разрядным i8086 - уже немного смешно,​ а требование совместимости по периферии с IBM AT уже даже не смешно,​ а очень грустно.+Другой проблемой являются ограничения,​ которые установлены для поддержки BIOS: это 16-ти разрядный реальный режим работы процессора с набором команд i8086, 1Мб адресуемого пространства памяти и периферия (клавиатура,​ видео адаптер,​ контроллер прямого доступа в память) совместимая с IBM AT. На сегодняшний день, требовать от 64-х разрядного многоядерного, многопоточного процессора совместимости с одноядерным и однопоточным ​16-разрядным i8086 - уже немного смешно,​ а требование совместимости по периферии с IBM AT уже даже не смешно,​ а очень грустно.
  
 ==== (U)EFI ==== ==== (U)EFI ====
-Идея отказаться от всего того ненужного,​ что делает BIOS, снять ограничения BIOS и сделать процесс инициализации и загрузки более гибким возникала уже очень давно, и различные попытки сделать это предпринимались,​ но IT-индустрия реально созрела к принятию нового общего стандарта загрузки персональных компьютеров только в начале этого века. В 2005 был создан консорциуму UEFI Forum, которому INTEL передал свою наработки по проекту Intel Boot Initiative (позже переименованному в EFI - Extensible Firmware Interface), начатому еще середине 90-х. Помимо Intel в консорциум вошли AMD, Apple, IBM, Microsoft и многие другие крупные IT-компании. Вместе с созданием консорциума спецификация EFI была переименована в UEFI (Unified Extensible Firmware Interface)((Не смущайтесь тем, что во многих местах UEFI упоминается как EFI - по сути это не совсем правильно,​ но по факту - речь об одном и том же.)).+Идея отказаться от всего того ненужного,​ что делает BIOS, снять ограничения BIOS и сделать процесс инициализации и загрузки более гибким возникала уже очень давно, и различные попытки сделать это предпринимались,​ но IT-индустрия реально созрела к принятию нового общего стандарта загрузки персональных компьютеров только в начале этого века. В 2005 был создан консорциуму ​[[http://​www.uefi.org/​|UEFI Forum]], которому INTEL передал свою наработки по проекту Intel Boot Initiative (позже переименованному в EFI - Extensible Firmware Interface), начатому еще середине 90-х. Помимо Intel в консорциум вошли AMD, Apple, IBM, Microsoft и многие другие крупные IT-компании. Вместе с созданием консорциума спецификация EFI была переименована в UEFI (Unified Extensible Firmware Interface)((Не смущайтесь тем, что во многих местах UEFI упоминается как EFI - по сути это не совсем правильно,​ но по факту - речь об одном и том же.)).
  
-Основные концепции положенные в основу UEFI - "​минималистичность",​ "​модульность"​ и независимость от процессора. Прошивка UEFI может быть собрана под 32-битный или 64-битный процессоры Intel, 32-х или 64-х битный ARM процессор,​ а также Intel Itanium процессоры. Кроме того UEFI имеет собственный менеджер загрузки и умеет работать с файловыми системами на диске (по умолчанию только FAT32) и умеет загружать драйвера для оборудования.\\+Основные концепции положенные в основу UEFI - "​минималистичность",​ "​модульность"​ и независимость от процессора. Прошивка UEFI может быть собрана под 32-битный или 64-битный процессоры Intel, 32-х или 64-х битный ARM процессор,​ а также Intel Itanium процессоры. Кроме того UEFI имеет собственный менеджер загрузки и умеет работать с файловыми системами на диске (по умолчанию только FAT32) и умеет загружать драйвера для ​поддержки различного ​оборудования ​и файловых систем.\\
 После включения компьютера и проведения первичного теста оборудования (на этом этапе разницы с BIOS нет) инициализируются только те подсистемы,​ которые необходимые для загрузки. После включения компьютера и проведения первичного теста оборудования (на этом этапе разницы с BIOS нет) инициализируются только те подсистемы,​ которые необходимые для загрузки.
  
 В некоторых режимах загрузки,​ которые обычно называют Fast-boot (или Fast-Startup) даже клавиатура может оставаться не инициализированной пока не загрузится ОС. Некоторые настройки Fast-boot могут отключать работу со всеми USB устройствами и не будет возможности даже выбрать с чего грузится компьютеру,​ ведь клавиатура не работает до тех пор, пока не загрузится ОС.  В некоторых режимах загрузки,​ которые обычно называют Fast-boot (или Fast-Startup) даже клавиатура может оставаться не инициализированной пока не загрузится ОС. Некоторые настройки Fast-boot могут отключать работу со всеми USB устройствами и не будет возможности даже выбрать с чего грузится компьютеру,​ ведь клавиатура не работает до тех пор, пока не загрузится ОС. 
  
-Причем,​ в отличии от BIOS, все компоненты которого записаны в постоянную(флеш) память,​ UEFI хранит часть своего кода на диске - в специальном разделе ESP((на самом деле ESP раздел может быть и на флеш-памяти и даже на сетевом хранилище,​ но эта экзотика (предусмотренная стандартом) вряд ли будет востребована простыми пользователями)). Это позволяет легко расширять,​ менять и обновлять код поддерживающий различные устройства компьютера без необходимости перепрограммировать постоянное ЗУ компьютера. А кроме драйверов для поддержки устройств на ESP разделе может хранится и поддержка протоколов,​ утилиты и даже собственная EFI-оболочка (shell), из-под которой можно запускать собственные EFI-приложения. Т.е. UEFI по сути - маленькая ОС (или псевдо-ОС). При этом загрузчик операционной системы - становится обычным приложением,​ которое исполняется в окружении,​ предоставляемом псевдо-ОС UEFI.+Причем,​ в отличии от BIOS, все компоненты которого записаны в постоянную(флеш) память,​ UEFI может ​хранить часть своего кода на диске - в специальном разделе ESP((на самом деле ESP раздел может быть и на флеш-памяти и даже на сетевом хранилище,​ но эта экзотика (предусмотренная стандартом) вряд ли будет востребована простыми пользователями)). Это позволяет легко расширять,​ менять и обновлять код поддерживающий различные устройства компьютера без необходимости перепрограммировать постоянное ЗУ компьютера. А кроме драйверов для поддержки устройств на ESP разделе может хранится и поддержка протоколов,​ утилиты и даже собственная EFI-оболочка (shell), из-под которой можно запускать собственные EFI-приложения. Т.е. UEFI по сути - маленькая ОС (или псевдо-ОС). При этом загрузчик операционной системы - становится обычным приложением,​ которое исполняется в окружении,​ предоставляемом псевдо-ОС UEFI.
  
 UEFI реализует свой менеджер загрузки,​ он поддерживает мульти-загрузку:​ позволяет выбирать загрузку из нескольких ОС и/или утилит. Загрузчик ОС - это просто efi-приложение,​ которое хранится на ESP разделе. В ESP может храниться много приложений,​ и пункты меню загрузки могут ссылаться каждый на свое приложение (или на одно, но с передачей разных параметров). Кроме того, UEFI поддерживает ассоциацию нажатия клавиш с пунктами загрузки (выбор пункта загрузки осуществляется в зависимости от того какая нажата клавиша в момент загрузки). Т.о. UEFI берет на себя большую часть задач, которые раньше могли решать только загрузчики ОС (типа GRUB). UEFI реализует свой менеджер загрузки,​ он поддерживает мульти-загрузку:​ позволяет выбирать загрузку из нескольких ОС и/или утилит. Загрузчик ОС - это просто efi-приложение,​ которое хранится на ESP разделе. В ESP может храниться много приложений,​ и пункты меню загрузки могут ссылаться каждый на свое приложение (или на одно, но с передачей разных параметров). Кроме того, UEFI поддерживает ассоциацию нажатия клавиш с пунктами загрузки (выбор пункта загрузки осуществляется в зависимости от того какая нажата клавиша в момент загрузки). Т.о. UEFI берет на себя большую часть задач, которые раньше могли решать только загрузчики ОС (типа GRUB).
Строка 31: Строка 31:
 Архитектура UEFI позволяет также загрузить драйвера устройств (необходимые для работы ОС и для процедуры загрузки). Да и само ядро ОС можно загрузить (по крайней мере ядро Linux, собранное с опцией UEFISTUB) непосредственно из UEFI (т.е. устранить загрузчик из процесса загрузки). Такую возможность мы разберем более детально чуть позже. Архитектура UEFI позволяет также загрузить драйвера устройств (необходимые для работы ОС и для процедуры загрузки). Да и само ядро ОС можно загрузить (по крайней мере ядро Linux, собранное с опцией UEFISTUB) непосредственно из UEFI (т.е. устранить загрузчик из процесса загрузки). Такую возможность мы разберем более детально чуть позже.
  
-Как и в случае с BIOS, UEFI - это стандарт,​ реализацией которого занимаются разные поставщики решений. Поэтому в реализации UEFI стандарта в прошивках разных поставщиков могут несколько отличаться. Различия в реализации, как ​правило, касаются интерфейса утилиты ​настройки, а вот реализация методов работы ​самого ​UEFI в процессе загрузки различаться сильно не должна (по крайней мере при строгом следовании стандарту UEFI). ​Могут встречаться красивые графические ​утилиты настройки ​UEFI, иногда даже с поддержкой мыши (например от ASUS) или текстовые, с элементами псевдорафики, очень сильно напоминающих интерфейс настройки BIOS (например от AMI). Но значение имеет не способ оформления интерфейса,​ а те настройки,​ которые доступны для изменения через этот интерфейс.+Как и в случае с BIOS, UEFI - это стандарт, ​практической ​реализацией которого занимаются разные поставщики решений. Поэтому в реализации UEFI стандарта в прошивках разных поставщиков могут ​значительно отличаться ​ак визуально так ​и функциональным наполнением). Могут встречаться сильно урезанные по функционалу ​реализации (чаще в компьютерах выпущенных в 2000-х годах). Но базовые принципы ​работы UEFI в процессе загрузки различаться сильно не должны (он был определен и зафиксирован в самых ранних стандартах UEFI). ​Интерфейсы утилиты настройки ​могут исльно различаться, но значение имеет не способ оформления интерфейса,​ а те настройки,​ которые доступны для изменения через этот интерфейс.
 ==== Совместимость ==== ==== Совместимость ====
-Само собой, современные прошивки умеют эмулировать работу BIOS. Отвечает за совместимость с BIOS модуль CSM (Compatibility Support Module иногда он еще называется Legasy support). Когда CSM включен, то при загрузке ​он пытается найти загрузчик ОС в первом секторе диска (MBR) или в специальном служебном разделе (при GPT разбивке диска). Если код загрузчика найден,​ то CSM считает,​ что установлена ОС требующая поддержки BIOS режима,​ и прежде чем загрузить и запустить код из MBR, CSM проделывает все те же шаги инициализации оборудования,​ что предусмотрены для BIOS.+Само собой, современные прошивки умеют эмулировать работу BIOS. Отвечает за совместимость с BIOS модуль CSM (Compatibility Support Module иногда он еще называется Legasy support). Когда CSM включен ​и при загрузке ​загрузиться в UEFI не удалось,​ то CSM пытается найти загрузчик ОС в первом секторе диска (MBR) или в специальном служебном разделе (при GPT разбивке диска). Если код загрузчика найден,​ то CSM считает,​ что установлена ОС требующая поддержки BIOS режима,​ и прежде чем загрузить и запустить код из MBR, CSM проделывает все те же шаги инициализации оборудования,​ что предусмотрены для BIOS.
  
-Если вы планируете использовать загрузку в варианте UEFI, то работу этого модуля лучше запретить в системной утилите вашей материнской платы (Firmware setup utility). Кроме того, загрузка в режиме SecureBoot (о ней будет рассказано ниже) явно требует,​ что бы работа модуля CSM была запрещена. +Если вы планируете использовать ​только ​загрузку в варианте UEFI, то работу этого модуля лучше запретить в системной утилите вашей материнской платы (Firmware setup utility). Кроме того, загрузка в режиме SecureBoot (о ней будет рассказано ниже) явно требует,​ что бы работа модуля CSM была запрещена. 
-<note important>​Собственно использовать стазу оба варианта загрузки (для разных ОС) - не стоит. Лучше для всех ОС установленных на данном компьютере использовать один вариант загрузки:​ через CSM или UEFI.</​note>​+<note important>​Собственно использовать сразу оба варианта загрузки (для разных ОС) - не стоит. Лучше для всех ОС установленных на данном компьютере использовать один вариант загрузки:​ через CSM или UEFI.</​note>​
 ==== ESP раздел ==== ==== ESP раздел ====
 Отдельно стоит рассмотреть служебный раздел UEFI. Отдельно стоит рассмотреть служебный раздел UEFI.
Строка 47: Строка 47:
 При установке UBUNTU (с загрузкой через UEFI) служебный раздел ESP монтируется в /boot/efi. И на ESP разделе создается каталог EFI\ubuntu в котором размещается загрузчик((Виндовый загрузчик размещается в EFI\Microsoft\Boot\Bootmgfw.efi)) GRUB и/или Shim (о них - чуть позже). При установке UBUNTU (с загрузкой через UEFI) служебный раздел ESP монтируется в /boot/efi. И на ESP разделе создается каталог EFI\ubuntu в котором размещается загрузчик((Виндовый загрузчик размещается в EFI\Microsoft\Boot\Bootmgfw.efi)) GRUB и/или Shim (о них - чуть позже).
 <note important>​EFS раздел лучше создавать из установщика. Когда вы делаете его сами через gparted/​parted/​fdisk,​ то есть шанс сделать что-то не так (например выберете FAT16 вместо FAT32) и тогда UEFI не поймет,​ что это EFS раздел и не будет с него загружаться. Доверьте установщику выполнить работу,​ которую он умеет делать хорошо - делайте EFS раздел из установщика.</​note>​ <note important>​EFS раздел лучше создавать из установщика. Когда вы делаете его сами через gparted/​parted/​fdisk,​ то есть шанс сделать что-то не так (например выберете FAT16 вместо FAT32) и тогда UEFI не поймет,​ что это EFS раздел и не будет с него загружаться. Доверьте установщику выполнить работу,​ которую он умеет делать хорошо - делайте EFS раздел из установщика.</​note>​
 +
 ===== MBR и GPT ===== ===== MBR и GPT =====
 Еще одно "​новшество"​ в индустрии относится к таблице разделов диска. ​ Еще одно "​новшество"​ в индустрии относится к таблице разделов диска. ​
Строка 56: Строка 57:
  
 К чему я упомянул про таблицы разбиения дисков?​ А к тому, что, несмотря на то, что UEFI планировалось использовать только с GPT, а BIOS обычно работает с MBR (вернее код в MBR работает с таблицей разделов расположенной в конце MBR), но в реальной жизни и BIOS (вернее сказать CSM) научили понимать GPT, и для UEFI предусмотрели использование таблицы разделов из MBR. К чему я упомянул про таблицы разбиения дисков?​ А к тому, что, несмотря на то, что UEFI планировалось использовать только с GPT, а BIOS обычно работает с MBR (вернее код в MBR работает с таблицей разделов расположенной в конце MBR), но в реальной жизни и BIOS (вернее сказать CSM) научили понимать GPT, и для UEFI предусмотрели использование таблицы разделов из MBR.
 +<​note>​EFS раздел может быть также создан в таблице разделов формата ISO9660 (стандарт используемый для разметки CD/DVD оптических лисков). Это позволяет загружаться в режиме UEFI и с CD/​DVD.</​note>​
  
 Получившаяся в результате "​солянка"​ (из 4-х допустимых вариантов:​ UEFI + MBR, UEFI + GPT, BIOS/SCM + MBR и BIOS/SCM + GPT) создает некоторую путаницу и недопонимание. Давайте попробуем во всем этом разобраться более детально. Получившаяся в результате "​солянка"​ (из 4-х допустимых вариантов:​ UEFI + MBR, UEFI + GPT, BIOS/SCM + MBR и BIOS/SCM + GPT) создает некоторую путаницу и недопонимание. Давайте попробуем во всем этом разобраться более детально.
Строка 284: Строка 286:
 <note warning>​ВНИМАНИЕ,​ если вы организовали загрузку GRUB (или другого загрузчика что вы используете) на основе только своего собственного ключа, то внимательно следите за обновлениями:​ при обновлении GRUB вам необходимо подписать новую версию GRUB своим ключом,​ иначе он не загрузится в Secure Boot режиме.</​note>​ <note warning>​ВНИМАНИЕ,​ если вы организовали загрузку GRUB (или другого загрузчика что вы используете) на основе только своего собственного ключа, то внимательно следите за обновлениями:​ при обновлении GRUB вам необходимо подписать новую версию GRUB своим ключом,​ иначе он не загрузится в Secure Boot режиме.</​note>​
  
-<​note>​Собственно ISO образ UBUNTU - гибридный,​ на нем в мастер запись стандарта ISO9660 (CD/DVD формат дисков) внедрена MBR запись. И код 0-вой стадии загрузки grub-pc прописан как в MBR так и в загрузочную запись ISO9660. А кроме этого в MBR и в таблице разделов ISO9660 определен ​EFS раздел ​с загрузчиком SHIM/GRUB помещенным по пути EFI\BOOT\BOOTx64.EFI - т.е. пути определенному стандартом UEFI как путь к загрузчику по умолчанию.+<​note>​Собственно ISO образ UBUNTU - гибридный,​ на нем в мастер запись стандарта ISO9660 (CD/DVD формат дисков) внедрена MBR запись. ​ 
 +Используется ​одновременно два загрузчика:  
 +  ​isolinux (вариант загрузчика [[https://​ru.wikipedia.org/​wiki/​Syslinux|syslinux]]) он используется для загрузки в BIOS режиме и размещается в MBR и специальной ​загрузочной записи ISO9660 ​стандарта, подробнее - [[http://​wiki.osdev.org/​El-Torito|тут]]). 
 +  - grub (вариант grub-efi) он используется для загрузки ​в UEFI режиме
 + 
 +EFS раздел ​(необходимый для ​загрузки в UEFI режиме) прописан и в таблицу записей в MBR, и в каталог записей iso9660 формата. По UEFI стандарту загрузчик по умолчанию ​должен находится в EFS разделе по пути: EFI\BOOT\grubx64.efi
  
 Такой "​винегрет"​ позволяет грузиться с такого образа в следующих режимах:​ Такой "​винегрет"​ позволяет грузиться с такого образа в следующих режимах:​
-  ​- Элемент нумерованного списка- в режиме BIOS/SCM +  - в режиме BIOS/SCM 
-    - как с CD/DVD (0-вая фаз grub-pc ​берется из загрузочной записи ISO9660 стандарта,​ подробнее - [[http://​wiki.osdev.org/​El-Torito|тут]]+    - как с CD/DVD (код isolinux ​берется из загрузочной записи ISO9660 стандарта,​ подробнее - тут) 
-    - как с HDD/​USB-Flash (0-вая фаза grub-pc ​берется из MBR)+    - как с HDD/​USB-Flash (код isolinux ​берется из MBR)
   - в режиме UEFI   - в режиме UEFI
     - как с CD/DVD (EFS раздел находится в каталоге записей ISO9660, и оттуда запускается EFI\BOOT\BOOTx64.EFI)     - как с CD/DVD (EFS раздел находится в каталоге записей ISO9660, и оттуда запускается EFI\BOOT\BOOTx64.EFI)
     - как с HDD/​USB-Flash (EFS раздел находится в таблице разделов MBR, и оттуда запускается EFI\BOOT\BOOTx64.EFI)     - как с HDD/​USB-Flash (EFS раздел находится в таблице разделов MBR, и оттуда запускается EFI\BOOT\BOOTx64.EFI)
  
-В EFI\BOOT\BOOTx64.EFI ​на самом деле ​лежит не GRUB, а SHIM (это для загрузки в режиме SecureBoot),​ а сам grubx64.efi (начальная стадия grub-efi) лежит рядом (EFI\BOOT\grubx64.efi) и его запускает SHIM.+Кстати в EFI\BOOT\BOOTx64.EFI лежит не сам ​GRUB, а SHIM. Сам grubx64.efi (начальная стадия grub-efi) лежит рядом (EFI\BOOT\grubx64.efi) и его запускает SHIM. (SHIM имеет валидную подпись ключом от MicroSoft).
  
 Такой образ легко записать на флешку простой командой: ​ Такой образ легко записать на флешку простой командой: ​