將 initramfs 嵌入到現有核心中

將 initramfs 嵌入到現有核心中

是否可以將 initramfs 映像嵌入到現有核心中,而無需重新編譯整個核心?我沒有資源來做這件事。

答案1

initramfs 可以在建置時嵌入到核心中(當然,這可以從 menuconfig 中選擇 rootfs 樹)。並且對於某些特定情況很有用。請注意,一旦嵌入,最終二進位檔案中的任何專有 rootfs 工具都可能會破壞 GPL。但除非你的 initramfs 只包含一些 busybox 的東西,否則應該不會有任何問題。

答案2

通常沒有人會將 initramfs 映像整合到核心中,據我所知,這甚至是不可能的(不根據概念重寫程式碼),至少它不是有意的。

initrd 始終是單獨的資料流(檔案),與核心一起載入以幫助啟動,它是可選的,但幾乎總是包含在現代 gnu/linux 發行版中

所以你不必問自己如何嵌入它的問題,而是如何更改它的問題,所以看看你的引導程式配置,通常你應該確定 3 件事(也主要按這個順序)

  • 核心映像(引導程式到核心映像(大多數情況下是檔案)以將其載入到 RAM 中的東西
  • 命令列(也寫入ram 的字串,供核心存取和使用它(就像在作業系統內給出參數,但在其外部只是編寫和調用(彙編程式碼)))(這個東西大多數時候都有一些root=/ dev/xy ro 任何選項
  • initrd 映像(初始 ramdisk 的可選映像,在內核加載到 ram 後加載,然後內核將其用作虛擬磁碟,主要用於(但也有一些實時系統完全在其中運行)在 root 之前協助啟動fs 被找到並安裝(就像磁碟緩慢且流暢(磁碟順序、scsi 內容、從網路啟動、檔案系統加密、fsck 失敗時恢復緊急shell 等)

所以要回答你的問題,如果你的引導程式無法直接使用 initrd 並且你無法替換它,只需加載另一個引導程式(例如非常古老的東西仍然可以將 grub 作為內核加載),否則只需更新引導程式配置中單獨的initrd 檔案的路徑。

順便說一句,如果您使用grub2,請不要直接編輯配置,它是由update-grub 使用/etc/default/grub 和/etc/default/grub.d/ 中的資料產生的,在grub 舊版上您仍然可以直接編輯menu.lst啟動分區,但 grub2 對此來說太複雜了,您仍然可以直接編輯內容,但之後很可能會被覆蓋,所以這不是一個好主意...

相關內容