Kernel panic一定是在開發Embedded Linux常遇到的一段話,那到底是甚麼原因造成的?原因當然很多種,但在了解原因前我們一定要先理解流程。
更從各種搜尋會發現"init"的各種探討。因此我整理了一些流程,並直接可以從Kernel的SRC中發現一些端倪。
我希望用比較抽象的層級去理解這樣的流程,把關鍵的站點給抓出來,細節就給有需要的人去分析。
Linux Kernel: 5.4.0Rootfs: Yocto Project(openembedded)
同樣的資訊我就協助過濾,這邊先引用這一張圖
https://danielmaker.github.io/blog/linux/start_kernel.html這篇很讚,務必一探
其中我們關注:rest_init()
PID 0 -> Schedule (Kernel)
PID 1 -> User thread parent. 沒錯,你我學平行處理,一定要有源頭控管。
PID 2 -> Kernel thread parent. 不只User,Kernel也需要。
截圖來至於Ubuntu 18.04底下透過htop可以看到PID 1,居高臨下。
至於Ramdisk是甚麼,簡單來說:他是最小需求的rootfs,可達到快速啟動的中間過程,詳細未來再開篇幅分享。
init會去讀取init.d這個folder。
同上.d這件事情可以了解一下,我的白話理解:其實就是config and script。