initrd 簡述
時間:2017-01-04作者(zhe):華清(qing)遠(yuan)見(jian)
initrd是在Linux系(xi)統(tong)引(yin)(yin)導(dao)過程(cheng)中(zhong)掛載的(de)(de)一個(ge)臨時根文件(jian)系(xi)統(tong),用來支(zhi)持兩階段的(de)(de)引(yin)(yin)導(dao)過程(cheng)。initrd 文件(jian)中(zhong)包含了各種可執行程(cheng)序(xu)和驅動程(cheng)序(xu),它們可以用來掛載實際的(de)(de)根文件(jian)系(xi)統(tong),然后再將這個(ge) initrd RAM 磁盤(pan)卸載,并(bing)釋放內存。 initrd 與內(nei)核(he)(he)綁定在一(yi)起,并作(zuo)為內(nei)核(he)(he)引導過程(cheng)的(de)一(yi)部(bu)分進行加(jia)載(zai)(zai)。內(nei)核(he)(he)然后會將(jiang)這個(ge)(ge) initrd 文(wen)(wen)(wen)件作(zuo)為其兩階(jie)段引導過程(cheng)的(de)一(yi)部(bu)分來(lai)加(jia)載(zai)(zai)模(mo)塊,這樣才能稍后使用(yong)真正的(de)文(wen)(wen)(wen)件系(xi)統,并掛載(zai)(zai)實際的(de)根文(wen)(wen)(wen)件系(xi)統。initrd 中(zhong)包含了實現這個(ge)(ge)目標所需要(yao)(yao)的(de)目錄和(he)可(ke)執行程(cheng)序的(de)小集合,如在initrd解壓后的(de) ./bin 目錄中(zhong)有一(yi)組很少(shao)但卻(que)非常必要(yao)(yao)的(de)應用(yong)程(cheng)序,包括 nash(即 not a shell,是一(yi)個(ge)(ge)腳本解釋(shi)器)、insmod(用(yong)來(lai)加(jia)載(zai)(zai)內(nei)核(he)(he)模(mo)塊)和(he) lvm(邏輯(ji)卷管理工具)。 在(zai)桌面(mian)或服務器(qi) Linux 系統(tong)(tong)(tong)中(zhong),initrd 是一個臨時的文(wen)(wen)件系統(tong)(tong)(tong),而在(zai)嵌入式系統(tong)(tong)(tong)中(zhong),initrd則有(you)可(ke)能是永(yong)久的根文(wen)(wen)件系統(tong)(tong)(tong)。對于(yu)傳統(tong)(tong)(tong)的 Linux 系統(tong)(tong)(tong)來(lai)說,initrd 映像(xiang)是在(zai) Linux 構建(jian)過(guo)程中(zhong)創建(jian)的。有(you)很多(duo)工具,例如 mkinitrd,都可(ke)以用來(lai)使用必要的庫和模(mo)塊自動構建(jian) initrd,從而用作與(yu)真實的根文(wen)(wen)件系統(tong)(tong)(tong)之間(jian)的橋梁。 而在很多基(ji)于 Linux 的嵌入式系(xi)統(tong)上,可以按照下(xia)面的步驟來構建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
發表評論
|