Linux

整個核心是否在啟動時載入到記憶體中?

  • March 11, 2021

我通讀了這個流行的 IBM 文件(我在網上經常看到它)解釋了初始 RAM 磁碟的功能。

不過,我在概念化它的工作原理時碰壁了。

在文件中它說

引導載入程序(例如 GRUB)辨識要載入的核心並將該核心映像和任何相關的 initrd 複製到記憶體中

我已經很困惑了:它是將整個核心複製到記憶體中還是只是其中的一部分?如果整個核心都在記憶體中,那麼我們為什麼還需要初始 RAM 磁碟呢?

我認為 initrd 的目的是能夠擁有一個小型通用核心映像,並且 initrd 將在載入核心映像之前在其中安裝正確的模組。但是如果整個核心已經在記憶體中,為什麼我們需要 initrd?

這也帶來了另一件讓我困惑的事情——載入到核心中的模組在哪裡?所有核心模組都儲存在 initrd 中嗎?

整個核心在引導時載入到記憶體中,通常與initramfs現在一起載入。(仍然可以將系統設置為在沒有 的情況下啟動,initramfs但這在台式機和伺服器上是不常見的。)

initramfs作用是提供掛載“真實”文件系統並繼續引導系統所需的功能。這涉及核心模組以及各種二進製文件:您至少需要udev,也許需要一些網路,並kmod載入模組。

模組可以在啟動之後載入到核心中,因此initramfs. 它們可以儲存在任何地方:真實文件系統上的 ,如果您正在開發模組,則在開發樹中……initramfs只需要包含掛載根文件系統所需的模組(包含其餘模組)。/lib/modules``initramfs

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