initrd 簡述
時間:2017-01-04作者:華清遠見
initrd是在Linux系統引導過程中掛載的一個臨時根文件系統,用來支持兩階段的引導過程。initrd 文件中包含了各種可執行程序和驅動程序,它們可以用來掛載實際的根文件系統,然后再將這個 initrd RAM 磁盤卸載,并釋放內存。 initrd 與內核綁定在一起,并作為內核引導過程的一部分進行加載。內核然后會將這個 initrd 文件作為其兩階段引導過程的一部分來加載模塊,這樣才能稍后使用真正的文件系統,并掛載實際的根文件系統。initrd 中包含了實現這個目標所需要的目錄和可執行程序的小集合,如在initrd解壓后的 ./bin 目錄中有一組很少但卻非常必要的應用程序,包括 nash(即 not a shell,是一個腳本解釋器)、insmod(用來加載內核模塊)和 lvm(邏輯卷管理工具)。 在桌面或服務器 Linux 系統中,initrd 是一個臨時的文件系統,而在嵌入式系統中,initrd則有可能是永久的根文件系統。對于傳統的 Linux 系統來說,initrd 映像是在 Linux 構建過程中創建的。有很多工具,例如 mkinitrd,都可以用來使用必要的庫和模塊自動構建 initrd,從而用作與真實的根文件系統之間的橋梁。 而在很多基于 Linux 的嵌入式系統上,可以按照下面的步驟來構建initrd。 dd if=/dev/zero of=/tmp/initrd.img bs=$BLKSIZE count=$RDSIZE mke2fs -F -m 0 -b $BLKSIZE /tmp/initrd.img $RDSIZE mount /tmp/initrd.img /mnt/initrd -t ext2 -o loop=/dev/loop0
mkdir /mnt/initrd/bin
pushd /mnt/initrd/bin
cp -a /dev/console /mnt/initrd/dev
發表評論
|