是否可以使用Delphi或Pascal创建可启动(MBR应用程序)应用程序(我知道我们不能使用vcl,RTL和其他东西,因为它们依赖于操作系统),但我至少可以使用Readln和writeln。
如果是真的!!!我们可以在其他操作系统下运行该程序。 但我知道PE(windows)和ELF(Linux)格式是不同的。但至少我可以做一些小修改。
答案 0 :(得分:9)
值得一提的是,PE是一种比ELF更加多样化的格式。 不仅要修改几个字节......整个布局和库访问是多种多样的,绑定是完全不同的。
为了在控制台模式下启动Delphi应用程序,您可以放置一个小型DOS系统(例如,查看FreeDOS),然后使用例如DWPL运行您的Delphi应用程序。 DWPL允许使用WDOSX DOS扩展器作为核心,使用Delphi 5-7运行本机32位保护模式DOS程序。我在一些带有网络适配器的旧硬件中使用它,它就像一个魅力。如果您对此感兴趣,我可以发布一些DWPL的更新代码。
对于此类目标,您应该查看Free Pascal。从本质上讲,您可以根据需要将其自定义。甚至还有使用FPC编写的各种操作系统草案。例如,参见Toro或ClassiOS - 最新使用Delphi可执行文件作为源。
您可以看到Toro from here的启动代码,以及使用它创建的“main program”源代码。
但对于直接启动应用程序,启动并不是那么困难。真正的问题是硬件层。 BIOS几乎不提供访问权限。 只是为了网络层,您必须查看EtherBoot站点,以获得一些低级别的网络访问......但是手动重写所有这些驱动程序可能非常耗时! / p>
简而言之:所有那些“纯粹的pascal”操作系统只是理论上的,运行控制台和一些低性能网络(模拟像NE2000这样的不良网络适配器)。所以那些“pascal”操作系统只是概念的证明。远离工作解决方案!但是,在所有情况下,非常好的技术挑战都非常鼓舞人心。
为什么重新发明轮子?如果您想要一个轻快的系统,请使用自定义Linux内核。
然后使用CrossKylix将您的Delphi应用程序(没有用户界面)编译到Linux中,甚至更好的Free Pascal。
答案 1 :(得分:3)
你并没有真正在MBR中放置“应用程序”。
MBR的整个大小为512字节,其中只能使用446代码。
如果你甚至没有操作系统来委派功能,那么祝你好运。基本上你在MBR中可以做的就是放置代码来启动引导装载程序。
这是一个反汇编MBR的页面:
http://www.dewassoc.com/kbase/hard_drives/master_boot_record.htm
答案 2 :(得分:2)
为什么必须编写启动加载程序?
您可以使用现成的引导程序(如GRUB)并从中链接您的PE可执行文件。
当然,这是非常古老而多毛的东西,但在过去的好日子里,人们做了这个赢得PE格式的可执行文件和DOS Extender。
对于本世纪更多的东西,为什么不制作自己的可启动REACTOS磁盘,并添加自己用Delphi编写的PE可执行文件来处理“用户shell”?
您也可以(但这需要许可)使用Windows PXE。我认为像BartPE这样的项目可能属于合法的灰色方面,或者至少是未经许可的。因此,使用ReactOS的完全独立的自助服务终端PC的完全无MS的解决方案(reactos)可能更适合您。
您可以编写自己的操作系统吗?你自己的UI层?你自己的视频设备驱动?我不这么认为。所以使用DOS和TurboPascal,或ReactOS和PE win可执行文件。或者您可以使用FreePascal并在非常轻量级的可移植Linux内核和根文件系统上构建您的应用程序。