現實世界中使用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.

相關內容