Как стать автором
Обновить

Комментарии 15

Ребят, все прекрасно, только вот использовать древний интерфейс BIOS для загрузки в 2018 году — это настолько моветон, что страшно подумать.
Это все нафиг не нужно, простите, и давно уже. Система не стартует в 16-битном режиме, система не имеет фреймбуфера по адресу 0xB8000, все это вам криво эмулируется, а уже в 2020 году перестанет это делать.
Более того, ассемблер тут не нужен вообще и все можно написать прямо на Расте, а загрузчик вам не нужен никакой, достаточно свое ядро собрать в PE-файл.

Я понимаю, что статья обучающая и не про это, но целая гора забористого текста вместо
EFI_STATUS EFIAPI EntryPoint(EFI_HANDLE Handle, EFI_SYSTEM_TABLE *SystemTable)
{...поехали...} 
с примечаниями вроде
; Тут хитрая магия, некогда объяснять
— это точно не то, чему надо учить новичков.

BIOS умер, похороните его! Насилие над трупом — не наш метод!
А где можно почитать о модныхсовременных способах как построения, так и загрузки ядра ОС?

OSDev wiki уже видели? Если нет, то там есть разделы Environment и Booting and Setup.

Поддерживаю OSDev Wiki, но ссылка должна быть сюда.
Вообще, обучающих материалов по написанию EFI-приложений в сети довольно много, а загрузчиком ОС такие приложения становятся сразу же, как только в их коде появляется вызов ExitBS (т.е. «не нужен ты мне больше, EFI, теперь я здесь ОС»).
Вот этот еще цикл статей порекомендую, он на русском и для новичков.

Напомню, что это перевод статьи 2015 года (мне серия статей показалась интересной). Ничего плохого в BIOS в 2018 году не вижу. Предполагаю, что после 2020 года (кстати почему он?) информация останется полезной. Касательно смены ассемблера на раст — я только всеми руками за, надо попробовать.


P.S Возможно, это не насилие, а любовь.

Даже для 2015 года это все равно уже устарело до точки невозврата, а после 2020 этот набор костылей времен царя Гороха просто перестанет работать.

CSM (тот самый БИОС, который не насилие, а любовь) — дырявый, глючный, кривой как бараний рог шмат древнего кода на ассемблере, обмазаный сверху трамплинами в 16 битный реальный режим и обратно, сделаный ради одной цели — чтобы некрофилы любители старины могли дальше грузить свои загрузочные вирусы мультистадийные легаси-загрузчики из MBR.

Если серьезно и без сарказма, то CSM — это слой обеспечения совместимости с DOS, который до сих пор поддерживается и включен по умолчанию на машинах с Intel KabyLake и новее, у которых для ОС старше Windows 10 уже даже драйверов нет — настолько сильна инерция производителей железа. Если у вас нет древних видеокарт, каких-нибудь еще устройств с OptionROM (вроде рейд-контролеров внешних), то вы от выключения CSM и использования UEFI-загрузки только выиграете.

Долой легасню, даешь прогресс!
>>Долой легасню, даешь прогресс!

А производители ОСРВ будут довольны?
Ну там еще у производителей бызовых станций для мобильной связи поинтересоваться, о согласии с «Долой легасню, даешь прогресс!».
Не могу спорить с нуждами эмбеддеда и индустрии — там CSM будут поддерживать до последнего патрона, я уже писал об этом. Но тут то совсем другой случай, совместимость с далеким и славным прошлым не нужна от слова совсем, а ее продолжают на ассемблере писать…
Это все нафиг не нужно, простите, и давно уже.

Начинать в 2018 году учебный проект (который в ближайшие три года, может, и на реальном железе ни разу не запустят) с поддержки BIOS, может, и не имеет смысла (кстати, спасибо за ссылку, где указано, как включить поддержку UEFI в QEMU), но вот выкидывать эту поддержку на свалку из реальных продуктов, ИМХО, преждевременно. У меня, например, совсем недавно появился дома первый компьютер с поддержкой UEFI. Нет, я сидел не за еле живой системой, не тянущей ничего современного (про игры, правда, утверждать не буду) — это был вполне живой ноутбук с мобильным Core i3 первого поколения (2 ядра / 4 потока) и 8 Гб оперативки. Я бы, наверное, и ещё пару лет мог бы за ним поработать, машинка вполне мощная. Однако в нём, вроде, ничего кроме классического BIOS не было.

Выкидывать эту поддержку на свалку из реальных продуктов, ИМХО, преждевременно.

Поддержка настоящей EFI-загрузки без использования CSM появилась у массовых ОС для ПК в конце 2012 года, и ровно с этого момента для CSM пошел обратный отсчет.
Проблема с CSM в том, что на современном железе его поддержка — это непрерывная боль и страдания, а нужна она исключительно тем, кто никак не может сконвертировать свои диски в GPT и перестать запускать на своих системах Windows 7, Windows CE 6 или MSDOS 6.22. А так как современное (выпуска прошлого и нынешнего года т.е.) ни одну из этих систем уже официально не поддерживает и никогда не будет — CSM нужно было убить еще в прошлом году, а не тащить этот чемодан без ручки в светлое будущее. Я понимаю, кому он нужен, и для чего, но тут ребята совершенно новую ОС пишут, и им не нужно ничего из того, что предоставляет интерфейс BIOS, особенно потому, что EFI предоставляет и больше намного, и значительно более простыми средствами, не требующими ни ассемблера, ни магических констант, ни сборки ISO-образов, ни знакомства со спецификацией multiboot, такой же мертвой, как и сам CSM.

Вероятно, я плохо сформулировал свой комментарий. Когда ребята допишут свою ОС, о CSM, вполне возможно, уже и забудут все. А говорил я вообще про сохранение (пока) поддержки CSM в существующих ОС (на случай ещё достаточно мощного железа, но с древней прошивкой), я не имел в виду, что мне нужна поддержка CSM со стороны прошивки. Ну то есть, кому-то она, может, и нужна, но мне не особо. :) Кстати, читал ваш цикл статей про безопасность UEFI и всё думал: "Как же страшно было жить в 2015" — надеюсь, сейчас всё уже не так плохо? :)

НЛО прилетело и опубликовало эту надпись здесь
Процитирую сам себя:
У них там, к сожалению, нет поддержки GOP, потому что в Microsoft принципиально решили, что этот протокол поддерживать не будут. В результате при отключенном CSM Windows 7 загружается «вслепую», если загружается вообще.

"Истинный программист способен написать операционную систему на Rust даже на ассемблере"? Нет, я понимаю, что это первая, подготовительная, часть из большого цикла, но заголовок забавно сочетается с остальным текстом...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации