一, Ram Disk 就是將內(nèi)存中的一塊區(qū)域作為物理磁盤來使用的一種技術(shù),。 使用時內(nèi)核配置:兩個選項(xiàng):第一個設(shè)定Ramdisk個數(shù),,默認(rèn)16個;第二個是設(shè)定Ramdisk的大小,,設(shè)定16MDevice
Drivers [*] Block
devices
<*>
(16) (16384) Default RAM disk size (kbytes) 另外:設(shè)置RAM disk 支持 General
setup [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 二,,
initrd全稱是 initial RAM
disk
,,它提供一種讓核心可以簡單使用Ramdisk的能力,,簡單的說,這些能力包括: 格式化一個 Ramdisk,; 加載文件系統(tǒng)內(nèi)容到Ramdisk,; 將Ramdisk作為根文件系統(tǒng); 而Linux啟動階段的Ramdisk相當(dāng)于一個未格式化的硬盤分區(qū),,核心可以直接將initrd的內(nèi)容釋放到一個未初始化的Ramdisk里,,這個過程與Ghost恢復(fù)一個分區(qū)的過程十分相似。于是,,相應(yīng)的內(nèi)容被加載到相應(yīng)的Ramdisk中,,同時,這個Ramdisk也被格式化成某種由initrd格式所表達(dá)的分區(qū)格式,。 initrd支持的格式
· ·
·
· 三,, 如果核心選擇了Gzip支持(通常這是默認(rèn)的,在init/do_mounts_rd.c中定義的BUILD_CRAMDISK宏)還可以使用Gzip壓縮的initrd,。相關(guān)的代碼可以在核心源碼 drivers/block/rd.c:identify_ramdisk_image 中找到,。 四,
initrd有兩種格式,,initrd-image和initrd-cpio,。 辦法一
通過ramdisk來制作的方法比較簡單(以ext2文件系統(tǒng)為例): 辦法二
通過loop設(shè)備來制作initrd的過程: 辦法三
bash# dd if=/dev/zero
of=../initrd.img bs=512k count=5
辦法四(新式INITRD:cpio-initrd的制作) # find . | cpio -c -o > ../initrd.img 解壓initrd 五,, Redboot啟動,。 下載initrd 0x01000000-0x01258831 下載zImage 0x00100000-0x002f82f7 啟動命令 exec -r 0x1000000 -s 0x258831 -c "root=/dev/ram rw console=ttymxc0,115200" 六, 辦法三制作,,也就是initrd-image可以成功啟動: Kernel command line: root=/dev/ram rw console=ttymxc0,115200 checking if image is initramfs...it isn't (no cpio magic); looks like an initrd Freeing initrd memory: 2402K RAMDISK: Compressed image found at block 0 RAMDISK: ran out of compressed data out of input data VFS: Mounted root (ext2 filesystem). Freeing init memory: 140K Mounting /proc and /sys Starting the hotplug events dispatcher udevd Synthesizing initial hotplug events Setting the hostname to aigo_R&D Mounting filesystems initrd-cpio無法啟動: Kernel command line: root=/dev/ram rw console=ttymxc0,115200 checking if image is initramfs...it isn't (out of input data); looks like an initrd Freeing initrd memory: 2376K RAMDISK: Compressed image found at block 0 RAMDISK: ran out of compressed data out of input data List of all partitions:
1f00
1f01
1f02
1f03
1f04
1f05
1f06
1f07 No filesystem could mount root,
tried: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) |
|