可启动程序

时间:2013-11-25 02:50:28

标签: java c++ bootloader

我是一名前端开发人员,希望进入Java或C ++等其他语言。我对一个程序有一个想法,只是想找到答案。我想要做的是构建一个程序并直接启动到该程序。例如,我有一台旧电脑,我擦干净硬盘。所以他们目前没什么。甚至不是操作系统。我想构建一个程序,我可以安装到硬盘驱动器,一旦启动就会直接启动到程序中。这会被视为操作系统吗?

6 个答案:

答案 0 :(得分:2)

不,不。除非您想花费很多年,否则请为您的显卡,硬盘控制器,USB控制器,dma控制器以及计算机上的所有其他硬件编写驱动程序。

你想要的是一个最小的操作系统,它只包括内核和一个运行时库,它启动你的程序,而不是启动它。一个最小的Linux,如从头开始的linux或bsd将是一个很好的起点。

答案 1 :(得分:2)

首先,您需要确定您的计划需要什么。我的意思是应该在Protected mode中操作,或者你的例程很小,所以在进入保护模式之前就足够了(即在real mode中)。

在这里你可以做三件事

  1. 修改bootloader以将执行跳转到您的代码。然后您的代码可以恢复正常的操作系统初始化。
  2. 修改您的os内核早期初始化代码以便在进入保护模式之前执行您的代码

  3. 我认为如果os部分正在运行,你的代码不会受到损害。因此,您可以在完全内核初始化之前编写例程。

    现在请注意,对于后两点,您需要修改内核,这并不容易(甚至不总是可行)

    现在第一种方法的问题是:没有任何东西可以为你准备,甚至不是普通的c库或 divice drivers ,所以你必须手工编写每一个原始代码这是粗糙的。​​


  4. 这在java中是不可能的。因为jvm不适合你。

    Booting Stages


    现在实际上:有很多小的可用操作系统,使用其中一个并根据您的需要进行修改。使用this link获取可用内容的完整列表。

答案 2 :(得分:1)

首先,Java是正确的。如果没有大量的工具构建,你不可能在Java中做到这一点。 Java根本不适合这项任务。

您可以使用C ++或C语言编写。您正在寻找的搜索术语是操作系统开发。从技术上讲,这可能不会被认为是开发操作系统,因为它不会运行其他程序,但是有关如何完成启动过程并建立最小环境的信息将最容易在操作类别中找到系统开发。可以在OS Dev Wiki找到一些合理的启动资源。

或者,您可以使用现有的小型开源操作系统并修改启动序列完成后的操作。如果你的程序打算做更多的事情而不仅仅是在文本模式下使用键盘和屏幕,那么需要有设备驱动程序。因此,根据项目的不同,更改现有操作系统可能是最简单的路径,因为您不需要为要使用的任何设备编写自己的设备驱动程序。

答案 3 :(得分:1)

Java无法在没有Environment的情况下运行。如果你想在没有操作系统的情况下在你的机器上运行程序,那么Java是一个错误的选择。 C ++程序可以在没有OS的情况下运行,但是用C ++编写可启动程序很困难。 如果你想编写自己的可启动程序,你应该使用程序集进行启动和加载功能,有一些知识可以使用低级别的硬件。

答案 4 :(得分:0)

您必须拥有一个操作系统,因此您的程序将是操作系统(或者您必须使用另一个程序并为此编写)。在C ++中肯定是可能的,但是用java编写操作系统是不可能的。

答案 5 :(得分:0)

除非你想在(例如)Open FirmwareForth中写一些内容或者说ROM BASIC。您可能有资格成为boot loader。您的申请可能符合operating system的条件。在我看来,它和现代环境完全取决于它为托管应用程序提供了多少功能。在给定现代计算机的情况下,我不确定像FreeDOS这样的东西会被认为是一个操作系统(没有先发制人的任务调度或GUI)(无论如何我都不在乎这一点)。