只运行 Linux 内核和用户程序

6 linux startup embedded

是否可以只在系统上运行 Linux 内核而不是操作系统来加载我的程序?

我想使用带有 Linux 内核的 Raspberry Pi。我正在尝试在 Raspberry Pi 上创建服务器和客户端程序,为此我只需要一个可以在网络驱动程序上运行的内核。

我希望树莓派在我打开它时只运行我的程序。我不想要操作系统的其余部分。

Gil*_*il' 3

当Linux内核启动时,它运行该程序/sbin/init(位于initrdinitramfs之后)如果有的话,并且可以使用init 参数配置位置。init程序有一个特殊的作用:它永远运行(有一个特殊的规则可以防止它被杀死,即使使用 SIGKILL),它采用孤儿进程,当然它应该启动(和监视)其他进程程式。

\n\n

您可以将自己的程序指定为 init。那么运行什么就完全取决于你了。

\n\n

然而,如果你这样做,你会损失很多。例如,如果没有物理访问,您将无法以任何方式重新配置您的设备(例如更改网络配置或修改引导加载程序设置),除非您提供程序来执行此操作。我建议您至少运行一组最少的工具:

\n\n
    \n
  • BusyBox,这是一套系统工具,包括 init 实现、shell 和其他命令行工具。无论如何,您可能至少需要一些 BusyBox 工具在启动时设置网络(ifconfigroute、 \xe2\x80\xa6)。
  • \n
  • IPtables,基本的防火墙配置工具,不包含在 BusyBox 中。
  • \n
  • Dropbear是一个 SSH 服务器,它允许您远程登录您的设备。
  • \n
  • 可能还有其他小工具,特别是NTP客户端(用于设置时钟)和dnsmasq(DNS 缓存)。
  • \n
\n\n

所有这些工具的占用空间都很小 \xe2\x80\x94\xc2\xa0 它们可以轻松容纳大约 10MB 的 RAM 和 3MB 的压缩存储,这对于 Raspberry Pi 来说可以忽略不计。在 RPi 上,将系统降低到低于普通嵌入式 Linux 的水平并没有什么好处。仅使用 Linux 内核来引导一个程序对于非常有限的设备很有用,但 RPi 至少比该值高两个数量级。

\n\n

对您来说最简单的方法是使用众多嵌入式 Linux 发行版之一。或者,您可以使用像Buildroot这样的工具来构建自定义系统 \xe2\x80\x94\xc2\xa0 这对于小型系统很有用,但对于 RPi 来说有点大材小用。

\n