給定 vmlinuz 和 initrd.gz,我如何找出核心將從哪裡載入 /(根)文件系統?
我正在嘗試各種 Linux 安裝方式(從 iso、flash、iso on flash、kernel on flash、root FS in iso-file on flash …)並且想了解發生了什麼。
我的問題是:考慮到來自發行版(vmlinuz 和 initrd)的建構核心和 ramfs 文件,是否有可能找出他們將在哪裡尋找“/”文件系統?是否可以在不重新編譯核心的情況下進行配置?
還有一個:當核心從 .iso-filesystem 創建的 loopback 設備載入根文件系統時,我該如何配置這個過程?謝謝!
編輯: 事實上,GRUB 配置包含 GRUB 根目錄,它不是真正的核心根文件系統位置,而只是一個包含 GRUB 的所有物的文件夾。
真正的根在
init
腳本中配置,如此處initrd
所述。這就是 Debian 核心如何在硬碟驅動器上找到一個 ISO 文件,從它啟動時 - initramfs 找到它: http: //www.debian.org/releases/stable/i386/apas02.html.en#howto-getting-images-hard -磁碟;請注意,GRUB 配置不包含對 ISO location 的任何引用。
它由您的引導載入程序在引導時給出,例如 Grub。
要查看您的核心是使用哪些參數啟動的,請執行以下操作:
$ cat /proc/cmdline
對我來說,這輸出:
BOOT_IMAGE=/vmlinuz-3.5.0-13-generic root=/dev/mapper/crypt-precise--root ro
因此 initrd/initramfs 將嘗試將我的
/dev/mapper/crypt-precise--root
(加密的 LVM)邏輯卷掛載為/
.您可以重新配置 Grub 以使用相同的核心(多重引導)從您的硬碟載入其他作業系統,或者通過
e
在選擇(尚未引導)Grub 條目的同時按下來編輯此行執行時。對於最近基於 Debian 的發行版,永久更改它的工作方式如下:(
請注意,您可能無法再次啟動到原來的作業系統!)在文件中
/etc/default/grub
設置一些GRUB_CMDLINE_LINUX="root=/dev/mydevice"
自己並通過執行更新 Grubupdate-grub
。但是,我建議您配置多重引導,否則無法再次輕鬆更改或更新您的 Grub 配置。