Linux
如何製作一個 shell 以顯示在我自己的發行版(linux)中?
我對 Linux 很感興趣,並且一直在研究它。我剛剛學會了從原始碼編譯 Linux 核心並使用 Grub 引導它,這使您可以使用核心的外殼。
現在,一旦核心被載入到記憶體中,它就會搜尋
init
來載入它。我的議程是調出一個外殼(普通使用者可以使用它bash
)。那麼,我怎樣才能把它帶進來呢?
我是否需要配置 init 來載入 bash shell 或者我可以做些什麼?
我正在建構自己的發行版,我只需要發行版有一個外殼(bash),沒有別的。
唔。這應該不難實現,但它也很複雜:)
你可以簡單地按照 Alexander 的建議 (
init=/bin/bash
) 做,你會做得很好。init 程序是核心呼叫的,它啟動了你所有的使用者空間。包括登錄終端。如果你的 init 只是產生了那個 bash 終端,你就沒事了。但是,如果該終端崩潰或退出,init 應該進行清理。如果您從終端啟動的某些程序死亡,則需要清理。如果他們死了,那麼他們的孩子需要一個新的父程序,這將是你的 init。
我強烈建議您花 10 分鐘時間閱讀這篇文章,它非常友好地概述了它的
init
作用:http://tilde.town/~elly/userland.txt
然後,您將更深入地了解執行自己的 init 需要什麼。
該連結的相關部分說:
我們只需要做一件事:提供一個初始二進製文件以在以下任一路徑啟動:/sbin/init、/etc/init、/bin/init 或 /bin/sh。此程序 (init) 以 pid 1 執行。
init程序需要做兩件事:
- 從不退出(如果 init 退出,核心會崩潰)
- 收割殭屍程序
然後文本的其餘部分實現了一個簡單的 init。