Linux

如何製作一個 shell 以顯示在我自己的發行版(linux)中?

  • February 13, 2017

我對 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。

引用自:https://unix.stackexchange.com/questions/344576