Комментарии 15
Это все нафиг не нужно, простите, и давно уже. Система не стартует в 16-битном режиме, система не имеет фреймбуфера по адресу 0xB8000, все это вам криво эмулируется, а уже в 2020 году перестанет это делать.
Более того, ассемблер тут не нужен вообще и все можно написать прямо на Расте, а загрузчик вам не нужен никакой, достаточно свое ядро собрать в PE-файл.
Я понимаю, что статья обучающая и не про это, но целая гора забористого текста вместо
EFI_STATUS EFIAPI EntryPoint(EFI_HANDLE Handle, EFI_SYSTEM_TABLE *SystemTable)
{...поехали...}
с примечаниями вроде ; Тут хитрая магия, некогда объяснять
— это точно не то, чему надо учить новичков. BIOS умер, похороните его! Насилие над трупом — не наш метод!
OSDev wiki уже видели? Если нет, то там есть разделы Environment
и Booting and Setup
.
Напомню, что это перевод статьи 2015 года (мне серия статей показалась интересной). Ничего плохого в BIOS в 2018 году не вижу. Предполагаю, что после 2020 года (кстати почему он?) информация останется полезной. Касательно смены ассемблера на раст — я только всеми руками за, надо попробовать.
P.S Возможно, это не насилие, а любовь.
CSM (тот самый БИОС, который не насилие, а любовь) — дырявый, глючный, кривой как бараний рог шмат древнего кода на ассемблере, обмазаный сверху трамплинами в 16 битный реальный режим и обратно, сделаный ради одной цели — чтобы
Если серьезно и без сарказма, то CSM — это слой обеспечения совместимости с DOS, который до сих пор поддерживается и включен по умолчанию на машинах с Intel KabyLake и новее, у которых для ОС старше Windows 10 уже даже драйверов нет — настолько сильна инерция производителей железа. Если у вас нет древних видеокарт, каких-нибудь еще устройств с OptionROM (вроде рейд-контролеров внешних), то вы от выключения CSM и использования UEFI-загрузки только выиграете.
Долой легасню, даешь прогресс!
А производители ОСРВ будут довольны?
Ну там еще у производителей бызовых станций для мобильной связи поинтересоваться, о согласии с «Долой легасню, даешь прогресс!».
Это все нафиг не нужно, простите, и давно уже.
Начинать в 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 даже на ассемблере"? Нет, я понимаю, что это первая, подготовительная, часть из большого цикла, но заголовок забавно сочетается с остальным текстом...
Минимальный multiboot загрузчик