Comments 16
Спасибо за статью, хоть она и сделана почти целиком из перевода документации (тоже делал такой однажды в далеком 2013 году).

Как Вы думаете, как скоро получится полностью уйти от Legacy?
Ответ сильно зависит от текущей ниши. В промышленности — лет через 15-20, на серверах — лет через 5, на десктопах — через 1-3 (Intel обещала перестать поддерживать CSM уже в этом году, но видимо передумает), на всяких нишевых устройствах вроде планшетов\смартфонов — давно уже избавились. Apple избавилась от CSM на своих x86-системах еще в 2015 году.
«BSP переводится в 32-битный защищенный режим»
«в то время как в UEFI все работает в 32-битном режиме.»
Так-то UEFI уже давно только x64
PEI на реальном железе до сих пор 32-битный, потому что в 64-битном режиме все указатели ровно вдвое длиннее, а место в кэше L2 совсем не резиновое. Переход из 32-битного в 64-битный режим выполняется драйвером DxeIplPei, последним из PEI-драйверов, в функции HandOffToDxeCore.
UEFI использует Microsoft x64 calling convention для 64-битного режима, поэтому указатели там все-таки 64-битные. Можно попробовать использовать x32 ABI для PEI (принципиально почти ничего не мешает), но настолько я знаю, у формата Portable Executable, в котором хранятся компоненты UEFI (а точнее, UEFI Platform Interface, стандарта на внутренние представления, файловую систему прошивки и т.п.) нет стандартных средств выразить факт «вот этот файл использует x32 ABI».
Речь ведь о полном отказе. А его кмк не будет, т.к. свободного UEFI не предвидится, а спрос видимо есть. Как и системы на устаревшем софте, не работающем под UEFI.
Проблема в том, что как только Intel и AMD откажутся поддерживать CSM на своем новом железе, эту поддержку придется взять на себя IBV, OEM или еще каким-то участникам рынка, и очень далеко не факт, что в результате получится что-то нормальное, а не кусок известно чего, ломающий ради совместимости с древними 16-битными загрузчиками половину прошивки.
Ну они может официально и откажутся, но вдруг найдётся кто-нибудь, у кого внезапно окажутся нужные ресурсы. Просто в качестве примера — искал когда-то драйвера под XP'64 для материнской платы на 1150 сокете — Intel на своём сайте уверяла, что такого не бывает, а на сайте Asrock в разделе серверных материнских плат вдруг нашлись.
IBM вон до сих пор OS/2 поддерживает, и в именитых клиентах недостатка нет. Legacy — страшная сила. Для мейнстрима же отказ от legacy, видимо, неизбежен и желанен.

на своих железках где это было возможно давно отказался от легаси и csm.
ещё бы железки типо raspberry и всяких планшетов перешли на uefi..

ещё бы железки типо raspberry и всяких планшетов перешли на uefi..

Зачем? Сложная громоздкая технология, тяжёлые кривые форматы...

Некоторые замечания:


PC-BIOS, именуемый ныне Legacy, предлагает работать в 16-битном real mode, адресует всего 1 МБ оперативной памяти

То-то одной из первых вещей, которые делает "legacy" BIOS, это расширение доступа до 4GB через так называемый unreal mode (который Intel так и не признал).
Подробности, например, в этой книге (есть и русский перевод, есть и файлами в Сети).


Вот с загрузчиком — да, серьёзнее — многошаговый bootstrapping через один сектор это нудно и в сложных случаях неустойчиво.


Смена способа адресации позволяет GPT работать с накопителями объемом до 9.4 ЗБ (9.4 * 1021 байт) против 2.2 ТБ у MBR.

Не смена способа адресации, а расширение с 4 до 8 байт адресов начала и конца. LBA использовался вместо CHS в старых таблицах, считаем, начиная с Windows 95.


Во-вторых, таблица разделов претерпела изменения, и теперь в пределах одного накопителя можно создать до 2**64 разделов

Смешно :)
Все обязаны поддерживать только 128 разделов.


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

На разных дисках. На одном не положено иметь больше одного ESP.


Как Вы думаете, как скоро получится полностью уйти от Legacy?

Встречный вопрос — когда процессоры x86 перестанут стартовать в 16-битном режиме? ;)

который Intel так и не признал
процессоры x86 перестанут стартовать в 16-битном режиме?
процессор начинает выполнять первую инструкцию в конце адресного пространства по адресу 0xFFFFFFF0
Лень конечно искать в мануалах, но как я понимаю фактически признал. Я думаю, что процессор стартует в реальном режиме, но с адреса 0xFFFFFFF0, задокументировано, получается unreal mode для сегмента кода.
Чтот комент не туда отправился, ответ netch80
Лень конечно искать в мануалах, но как я понимаю фактически признал. Я думаю, что процессор стартует в реальном режиме, но с адреса 0xFFFFFFF0, задокументировано, получается unreal mode для сегмента кода.

Для старта — да (таблица 9-1), но только для кодового сегмента и только 64KB. Для данных это уже не работает. А BIOS обычно расширяет доступ по DS и ES до 4GB этим приёмом.

Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
selectel.ru
Employees
201–500 employees
Registered

Habr blog