Загрузочные и кроссплатформенные приложения с использованием Delphi или Pascal
Возможно ли создать загрузочное (Applications for MBR) приложение с использованием Delphi или Pascal (я знаю, что мы не можем использовать vcl, RTL и другие материалы, потому что они зависят от ОС), но могу ли я использовать хотя бы Readln и writeln.
Если это правда!!! Можем ли мы запустить программу под другой ОС. но я знаю, что форматы PE (windows) и ELF (Linux) разные. но, по крайней мере, с небольшой модификацией я могу это сделать.
3 ответа
Стоит сказать, что PE - очень разнообразный формат, чем ELF. Не только несколько байтов, чтобы изменить... весь макет и доступ к библиотеке разнообразны, а привязка полностью разнообразна.
Чтобы загрузить приложение Delphi в консольном режиме, вы можете установить небольшую систему DOS (например, взгляните на FreeDOS), а затем запустить приложение Delphi, используя, например, DWPL. DWPL позволяет запускать собственные программы DOS в 32-битном защищенном режиме с Delphi 5-7, используя расширитель WDOSX DOS в качестве ядра. Я использовал это на каком-то старом оборудовании с сетевым адаптером, и это работало как шарм. Если вы заинтересованы в этом, я мог бы опубликовать обновленный код DWPL.
Для таких целей вы должны взглянуть на Free Pascal. По своей природе вы можете настроить его для любой цели, которую вы хотите. Существует даже разнородный проект операционных систем, написанный с использованием FPC. См., Например, Toro или ClassiOS - последние используют исполняемые файлы Delphi в качестве источника.
Отсюда вы можете увидеть загрузочный код Toro и исходный код " основной программы".
Но для приложений с прямой загрузкой загрузка не так сложна. Настоящая проблема - аппаратный уровень. BIOS дает очень мало доступа к нему. Что касается сетевого уровня, вам придется взглянуть на сайты EtherBoot и тому подобное, чтобы получить низкоуровневый доступ к сети... но переписывание всех этих драйверов вручную может занять очень много времени!
Короче говоря: все эти "чисто паскальские" ОС носят только теоретический характер, работают с консолью и имеют низкую производительность сети (эмуляция плохого сетевого адаптера, такого как NE2000 или около того). Так что эти "паскальские" ОС являются лишь доказательством концепции. Далеко от рабочего решения! Но очень хорошая технологическая задача, во всех случаях, очень вдохновляющая.
Зачем изобретать велосипед? Если вам нужна легкая и быстрая система, используйте собственное ядро Linux.
Затем используйте CrossKylix для компиляции вашего приложения Delphi (без пользовательского интерфейса) в Linux или, что еще лучше, в Free Pascal.
Вы действительно не помещаете "приложения" в MBR.
Полный размер MBR составляет 512 байт, из которых вы можете использовать только 446 для кода.
Удачи в создании чего-то полезного в этом, если у вас еще нет ОС для делегирования функциональности. По сути, все, что вы можете сделать в MBR - это разместить код для запуска загрузчика.
Вот страница с разборкой MBR:
http://www.dewassoc.com/kbase/hard_drives/master_boot_record.htm
Почему вы должны написать загрузчик?
Вы можете использовать готовый загрузчик, такой как GRUB, и загружать из него исполняемый файл PE.
Конечно, это очень древняя и волосатая штука, но в старые добрые времена люди выигрывали исполняемые файлы формата PE и расширитель DOS.
Для чего-то большего в этом столетии, почему бы не сделать свой собственный загрузочный диск REACTOS и добавить собственный исполняемый файл PE, написанный на Delphi, для обработки "пользовательской оболочки"?
Вы также можете (но это потребует лицензирования) использовать Windows PXE. Я думаю, что такие проекты, как BartPE, вероятно, попадают на серую сторону легального или, по крайней мере, нелицензионного Таким образом, решение, полностью свободное от MS (Reactos) для полностью автономного ПК с киоском, с ReactOS, может быть больше, чем вы ищете.
Можете ли вы написать свою собственную операционную систему? ваш собственный уровень пользовательского интерфейса? ваши собственные драйверы видео устройств? Я так не думаю. Поэтому используйте DOS и TurboPascal или ReactOS и исполняемый файл PE win. Или вы можете использовать FreePascal и просто собрать свое приложение на очень легком портативном ядре Linux и корневой файловой системе.