Linux
整個核心是否在啟動時載入到記憶體中?
我通讀了這個流行的 IBM 文件(我在網上經常看到它)解釋了初始 RAM 磁碟的功能。
不過,我在概念化它的工作原理時碰壁了。
在文件中它說
引導載入程序(例如 GRUB)辨識要載入的核心並將該核心映像和任何相關的 initrd 複製到記憶體中
我已經很困惑了:它是將整個核心複製到記憶體中還是只是其中的一部分?如果整個核心都在記憶體中,那麼我們為什麼還需要初始 RAM 磁碟呢?
我認為 initrd 的目的是能夠擁有一個小型通用核心映像,並且 initrd 將在載入核心映像之前在其中安裝正確的模組。但是如果整個核心已經在記憶體中,為什麼我們需要 initrd?
這也帶來了另一件讓我困惑的事情——載入到核心中的模組在哪裡?所有核心模組都儲存在 initrd 中嗎?
整個核心在引導時載入到記憶體中,通常與
initramfs
現在一起載入。(仍然可以將系統設置為在沒有 的情況下啟動,initramfs
但這在台式機和伺服器上是不常見的。)的
initramfs
作用是提供掛載“真實”文件系統並繼續引導系統所需的功能。這涉及核心模組以及各種二進製文件:您至少需要udev
,也許需要一些網路,並kmod
載入模組。模組可以在啟動之後載入到核心中,因此
initramfs
. 它們可以儲存在任何地方:真實文件系統上的 ,如果您正在開發模組,則在開發樹中……initramfs
只需要包含掛載根文件系統所需的模組(包含其餘模組)。/lib/modules``initramfs