initial Ram Disk 【轉貼】心的距離
initrd==>initial Ram Disk。initial沒什麼好說的,ram disk就比較有趣了。先看看WiKi怎麼說:
A RAM disk is a software layer that enables applications to transparently use RAM, often a segment of main memory, as if it were a hard disk or other secondary storage.
==>是一個軟體層,使得應用程式可"transparently"用RAM,通常就是主記憶體的一塊,然後把這塊ram disk當做storage來用。
首先,transparently很難翻,理解為不透過其他介面/操作,意即直接在ram上存取,而不須搬動資料 (在電腦的世界,程式必須要在ram裡才能執行)。這樣來看,好處就顯而易見了: ram的速度快,performance高 (相對於disk)。缺點呢?沒電資料就不見了。當然也有人做了一些改進缺點的事,不過那是另一個story了 (quote from Jeff.)。
而在kernel document中把initrd介紹為: 提供載入一塊ram disk的能力,誰載入呢?就是boot loader (lilo, grub, etc),因此是由boot loader來做此initialize的動作。這塊ram disk會先被mount成當時的rootfs,也可執行程式 (主要是init)。等到initial好了,就可以把真正的rootfs mount起來。從這段話來看,initrd的功能大概是完成mount rootfs之前的前置工作。有什麼要準備?又為什麼要initrd準備呢?這就值得好好討論一下了 (有請initrd大師--Chris Yang,整個他寫的)。
使用initrd的流程大概是:
1. bootloader負責載入kernel和initrd。
2. kernel解開initrd,並釋放initrd所佔的memory。
3. mount initrd /dev/ram0
4. 執行init
5. mount 真的正rootfs
6. chroot,執行/sbin/init
【轉貼】心的距離
解開 initrd
1.# file initrd.img-2.6.26-1-686
initrd.img-2.6.26-1-686: gzip compressed data, from Unix, last modified:
2.# mv initrd.img-2.6.26-1-686 initrd.img-2.6.26-1-686.gz
3.# gunzip initrd.img-2.6.26-1-686.gz
4.# file initrd.img-2.6.26-1-686
initrd.img-2.6.26-1-686: ASCII cpio archive (SVR4 with no CRC)
5.# cpio -id < initrd.img-2.6.26-1-686
修改後打包
# find . | cpio -o -H newc | gzip > path/filename
避開 .git 打包
# find -path ./.git -prune -o -print | cpio -o -H newc | gzip > path/filename
避開2個以上檔案打包
#find ./ \( -path ./.git -o -path ./ecsHistory.txt \) -prune -o -print | cpio -o -H newc | gzip > path/filename
沒有留言:
張貼留言