我正在尝试设置西尼特作为init
Linux 的(在 PC 上..)。我现在的目标只是tty/bash
从中运行一个单曲。不需要特殊的安装,因为内核已经获得了 a 的root=/dev/sda2
a 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。我敢打赌它在嵌入式系统以及简单的桌面系统上都非常好,没有现代桌面环境的麻烦。