Kernel panic一定是在開發Embedded Linux常遇到的一段話,那到底是甚麼原因造成的?原因當然很多種,但在了解原因前我們一定要先理解流程。

更從各種搜尋會發現"init"的各種探討。因此我整理了一些流程,並直接可以從Kernel的SRC中發現一些端倪。

我希望用比較抽象的層級去理解這樣的流程,把關鍵的站點給抓出來,細節就給有需要的人去分析。

Linux Kernel: 5.4.0Rootfs: Yocto Project(openembedded)


核心進入點 Start_kernel()

同樣的資訊我就協助過濾,這邊先引用這一張圖

https://danielmaker.github.io/blog/linux/start_kernel.html這篇很讚,務必一探

其中我們關注:rest_init()

截圖來至於Ubuntu 18.04底下透過htop可以看到PID 1,居高臨下。

init起始位置到switch root

掛起Ramdisk後

至於Ramdisk是甚麼,簡單來說:他是最小需求的rootfs,可達到快速啟動的中間過程,詳細未來再開篇幅分享。

Kernel執行/init,附上init SRC

init會去讀取init.d這個folder。

同上.d這件事情可以了解一下,我的白話理解:其實就是config and script。

image.png