initrd (inital ramdisk) 是啟動系統所需要載入的檔案系統。下圖為 kernel 到 initrd 的流程圖。
kernel 會先在記憶體中製造一個 rootfs 當作臨時的空間供系統使用,然後將 initrd 當作是一個系統將其 mount 到 rootfs 上啟動。當 initrd 被載入後,必須做為 user 與 file system 的仲介,這需要有該檔案系統的模組及其他所有額外必須先被載入的模組,而此時提供適當的模組以讓開機流程繼續下去的就是 initrd。
在 initrd 中有以下幾個最要的觀念:
在 initrd 建立好相關的檔案系統配置後,便開始慢慢轉向到載入作業系統的部份,下圖為 initrd 轉移到作業系統各階段的任務與實際使用上的關聯性。
越接近硬體的部份在愈下方,而作業系統是在最後才會被載入的,所以在最上面,而在操作作業系統時,大多是透過額外的機制去存取硬體,如:設備檔或sysfs等。因此,initrd 自然是從硬體層往上循序漸進,在將所有的硬體層部署完成後,以可以進入作業系統的部份。
參考書目:邱世華.《Linux 作業系統之奧義》.稅知文化
沒有留言:
張貼留言