sinit をLinux(PC上)のinit
として設定しようとしています。現時点での私の目標は、そこから1つのtty/bash
を実行することです。カーネルはすでにcmdline
に対してroot=/dev/sda2
を取得しているため、特別なマウントは必要ありません。
/sbin/init
としてsinit
バイナリがあり、次に何をすべきかわかりません。いくつかのスクリプトを配置する必要があることは知っていますが、sinit
がそれらを実行したり、bash
に関連付けたりする方法がわかりません。
含まれているマニュアルページsinit.8とREADMEは私にとって非常に説明的です。しかし、ソースを調べるときの簡単な紹介:
/sbin/init
はカーネルによってpid1として開始されます/bin/rc.init
スクリプトを個別の子プロセスとして実行するための初期環境を準備します/bin/rc.init
を個別のプロセスとして実行するため、/bin/rc.init
にはそのポイントを超えてシステムを初期化するコマンドが含まれますpoweroff
スクリプト名として/bin/rc.shutdown
を実行させ、SIGINTは、スクリプト内の操作モードを区別するために、initにreboot
nameを使用して同じスクリプトを実行させます。これらの2つのシグナルは、initがリッスンするシグナルにすぎないことに注意してください。含む SIGKILLとSIGSTOPは無視します。また、スーパーユーザーのみがinitにシグナルを送信できます。 Ctrl-Alt-Deleteを押すと、カーネルによってSIGINTが生成されますが、その場合に限ります(c-a-dでSIGINTを送信できるようにするために、initプロセスが通常行う特別なシステムコールがあります)。したがって、これのうち、sinit 提供しません:
ただし、sinitは機能する素敵なかわいい小さなinitです。組み込みシステムだけでなく、最新のデスクトップ環境に煩わされることのない単純なデスクトップシステムでも非常に優れていると思います。