我是 LINUX 和 java 编程的新手。 我有一个服务器和客户端应用程序。Sever 是使用在 Windows 机器上运行的 C# 编程开发的。目前我已经用java开发了运行在Linux机器上的客户端应用程序。但现在我需要客户端应用程序在 LINUX 操作系统启动时启动。我不想使用任何 LINUX 现有操作系统,如 Ubuntu 或任何其他操作系统,我需要编译我的 Linux 内核并运行这个客户端 Java 应用程序。 如果可能的话,我从哪里开始???
1 回答
这取决于您的客户端代码在做什么。如果它的要求非常低,那么您可以捆绑一个 linux 内核(来自任何发行版)、一个引导加载程序、一个 JRE 和您的客户端代码。JRE 和客户端代码应该进入一个文件系统,也许是一个初始的 ram fs,这样您就不必担心磁盘文件系统。如果您从源代码编译内核,您甚至可以提供一个包含 initramfs 内容的目录,这样您就可以直接将其构建到内核中。然后将 JRE 调用作为 init=
参数插入内核命令行。同样,如果您从源代码编译内核,您可以在其中包含部分命令行。
以上假设您根本不需要用户空间工具。对于大多数现代系统来说,这是一个越来越不恰当的假设,因为用户空间工具用于加载驱动程序、固件、设备配置以及启动和运行系统所需的一百万个其他工作。因此,您可能必须提供最小的用户空间。查看busybox以了解实现此目的的方法。许多嵌入式 linux 设备选择了这条路线。
如果您的客户端应该能够呈现图形用户界面,那么您还需要一个 X 服务器。你也可以从源代码编译它,但是这里涉及到所有不同的驱动程序,以及所有不同的依赖项,我建议在这里构建一个现有的发行版。debootstrap
例如,可用于创建最小的 Debian 或 Ubuntu 安装,可用作进一步定制的起点。这是我为自己的一个项目选择的路线。
我不想使用任何 LINUX 现有操作系统,如 Ubuntu 或任何其他操作系统,我需要编译我的 Linux 内核
如果不使用功能齐全的 linux 环境进行开发,我认为创建自定义 Linux 安装(以上述形式之一)的可能性很小。如果您对多重引导设置感到不自在,您可以在虚拟化环境中运行您的 linux 构建环境,例如使用qemu或virtualbox。