為什麼我的自訂核心在 mknod 步驟中啟動失敗?

為什麼我的自訂核心在 mknod 步驟中啟動失敗?

我想在 Ubuntu 下建立一個自訂核心。我配置並建立了新核心。新核心沒有 initrd 並且來自 vanilla 來源。我僅使用它所需的驅動程式來建立這個新的整體核心。

當我嘗試啟動新核心時,我陷入了這個mknod步驟。它嘗試mknod新設備,例如/dev/sda1 /dev/vca4.它失敗是因為根分割區以只讀方式掛載。

我認為問題是我丟失了一些關於我的硬體的東西。如果我使用預設的 Ubuntu 核心啟動,則不會遇到任何問題。誰能幫助我理解為什麼會發生這種事?

答案1

啟動時,根檔案系統幾乎總是以唯讀方式安裝,以便您可以fsck在其上運行。完成後,通常會使用以下命令重新掛載根檔案系統以進行讀寫:

mount / -o remount,rw

不過,由於您使用的是 Ubuntu,編譯核心應該比這簡單得多。如果您還沒有使用它,我建議您使用它kernel-package來編譯核心。只需取得軟體包和核心原始碼,解壓縮,然後說出類似的內容

make-kpkg -j3 --initrd binary

然後,這將建立.deb您可以按照通常方式安裝的軟體包(dpkg -i SOME-FILE.deb

答案2

您應該有一個devtmpfstmpfs安裝在/dev並由其管理udev;因此,無論 . 的狀態如何,該目錄都是可寫入的/。在 Ubuntu 上,這通常由 initramfs 設定;你用你的核心構建並加載了一個嗎?

相關內容