Как заставить программу работать под BIOS? - PullRequest
0 голосов
/ 26 августа 2018

Я искал информацию об этом, но ничего не нашел.

Идея такова:

Если я пишу программу на C или на любом другом языке, что еще мне нужно сделать, чтобы она была распознана в BIOS и запущена как программа DOS или просто программа-подсказка?

Я получил эту идею после того, как я загрузил флешку с окнами, используя ISO и Rufus, которые поместили некоторый код во флешку, чтобы BIOS распознал его и запустил, поэтому я хотел бы сделать то же самое с программой мой, например.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

На самом деле BIOS будет мертв в ближайшие два года (INTEL не будет поддерживать BIOS после этой даты), поэтому вы можете изучить стандарт UEFI.UEFI из v2.4 позволяет писать и добавлять пользовательские приложения UEFI.(Кстати, «традиционные» настройки BIOS на компьютерах UEFI часто реализуются как пользовательское приложение UEFI).

0 голосов
/ 26 августа 2018

Интересное, но довольно сложное упражнение!

BIOS будет извлекать определенную зону из загрузочного устройства, которая называется основной загрузочной записью. В «нормальной» ситуации с ОС и одним или несколькими разделами MBR необходимо выяснить, где найти ОС, загрузить ее в память и передать управление ей. В это время начинается обычная последовательность загрузки, и несколько позже ОС будет работать и сможет взаимодействовать с вами. Более подробную информацию о начальных мероприятиях можно найти здесь

Теперь, в образовательных целях, это не является строго необходимым. Вы могли бы написать MBR, который просто читает в фиксированной части диска (в BIOS есть функции, которые позволяют считывать сырые сектора с диска, диск можно рассматривать как просто набор секторов, каждый из которых содержит 512 байтов информации) и запускает этот код. Вы можете найти MBR * 1007 с открытым исходным кодом здесь и в основном в любой ОС с открытым исходным кодом.

Это была "легкая" часть, потому что теперь вы, вероятно, хотите сделать что-то интересное. Если вы не хотите взаимодействовать с каждой частью оборудования самостоятельно, вам придется полагаться на сервисы, предоставляемые BIOS, для взаимодействия с клавиатурой, экраном и диском. Традиционно лучшим источником информации об услугах BIOS является список прерываний Ральфа Брауна .

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

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

...