![sucklessを使用した実際の「sinit」初期化[閉じる]](https://linux33.com/image/83587/suckless%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%80%8Csinit%E3%80%8D%E5%88%9D%E6%9C%9F%E5%8C%96%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
設定しようとしています。サインLinuxへinit
(PCから..)。今私の目標は、tty/bash
そのうちの1つを実行することです。カーネルはroot=/dev/sda2
すでにcmdline
。
sinit
バイナリファイルがありますが、/sbin/init
次に何をすべきかわかりません。いくつかのスクリプトを適切な場所に配置する必要があることを知っていますが、sinit
スクリプトを実行する方法やbash
。
答え1
含まれているsinit.8のマニュアルページとreadmeファイルは私にとって非常に役立ちます。しかし、ソースコードを見ると、簡単な概要をお知らせします。
/sbin/init
pid 1でカーネルによって起動されるsinitデフォルトの実行可能ファイル/bin/rc.init
スクリプトを別のサブプロセスとして実行するための初期環境を準備します。/bin/rc.init
別々のプロセスで実行されるため、その/bin/rc.init
時点以降にシステムを初期化するコマンドが含まれています。- 無限ループに陥り、ゾンビプロセスを捕捉し、終了コードをどこにも読みません。
- 無限ループにあるときに信号によって中断される可能性があります。受信する信号がSIGUSR1とSIGINTであることを定義します。 SIGUSR1 は init が
/bin/rc.shutdown
スクリプト名で実行されることを強制しpoweroff
、SIGINT は init がreboot
名前で同じスクリプトを実行するように強制し、スクリプト内の動作モードを区別します。これら2つの信号はinitが聞く信号です。含むSIGKILLとSIGSTOPを無視します。そしてスーパーユーザーだけがinitに信号を送ることができます。 SIGINTはCtrl-Alt-Deleteを押すとカーネルによって生成されますが、そのようにマークされている場合にのみ生成されます(initプロセスは通常CADでSIGINT転送を有効にするために特別なシステムコールを実行します)。
だから、しかも、sinit使用不可:
- 初期化スクリプト
- 制御モード(実行レベルなど)、2つの単純なコマンドのみ
しかし、sinitは素晴らしいとかわいい小さなinitです。現代のデスクトップ環境の手間をかけずに、単純なデスクトップシステムだけでなく、組み込みシステムでもうまく機能すると確信しています。