现实世界中使用suckless的“sinit”init

现实世界中使用suckless的“sinit”init

我正在尝试设置西尼特作为initLinux 的(在 PC 上..)。我现在的目标只是tty/bash从中运行一个单曲。不需要特殊的安装,因为内核已经获得了 a 的root=/dev/sda2a cmdline

我有sinit二进制文件/sbin/init,我不知道下一步该做什么。我知道需要放置一些脚本,但我不明白sinit应该如何运行它们,或将它们与bash.

答案1

包含的手册页 sinit.8 以及自述文件对我来说非常解释。不过,当我查看源代码时,我会向您简要介绍一下:

  • sinit 主要可执行文件,/sbin/init由内核以 pid 1 启动
  • 它准备初始环境以将/bin/rc.init脚本作为单独的子进程运行
  • /bin/rc.init作为单独的进程运行,因此/bin/rc.init包含在该点之后初始化系统的命令
  • 它进入无限循环,捕获任何僵尸进程并将其退出代码读取到无处
  • 当它处于无限循环时,它可以被信号中断。它定义要监听的信号是 SIGUSR1 和 SIGINT。 SIGUSR1 强制 init/bin/rc.shutdown以脚本名称运行poweroff,而 SIGINT 强制 init 以reboot名称运行相同的脚本,以区分脚本内的操作模式。请注意,这两个信号只是 init 监听的信号,任何东西,包括它会忽略 SIGKILL 和 SIGSTOP。并且只有超级用户才被允许向 init 发送信号。当您按 Ctrl-Alt-Delete 时,SIGINT 由内核生成,但仅在这样说时才生成(init 进程通常会执行一个特殊的系统调用,以启用在 cad 上发送 SIGINT)

所以,除此之外,sinit不提供:

  • 初始化脚本(您必须编写自己的脚本或改编您的发行版提供的脚本)
  • 控制方式(如运行级别),只有两个简单的命令

然而,sinit 是一个很好用的、可爱的小 init。我敢打赌它在嵌入式系统以及简单的桌面系统上都非常好,没有现代桌面环境的麻烦。

答案2

事实证明,linux内核解析舍邦通过它自己。

因此,任何“Shebanged”脚本(具有二进制文件的完整路径)都可以用于sinit.

相关内容