我正在嘗試設置西尼特作為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。我敢打賭它在嵌入式系統以及簡單的桌面系統上都非常好,沒有現代桌面環境的麻煩。