Linux Ram disk and initrd

zlsh00 2011-11-22

转自:http://apps.hi.baidu.com/share/detail/14765588

InitialRAMdisk(initrd)

RAMdisk是存在于内存中的虚拟磁盘,也就是将RAM拿来当成磁盘使用。在EmbeddedLinux的应用中,我们通常会将ramdisk当成暂存目录来使用。例如将/dev/ram1附挂到/tmp目录,以便能让应用程序存放暂时性档案。/dev/ram?为ramdisk的devicefile。由于整个rootfilesystem是从真正的储存装置读取并加载至ramdisk,因此有1个重要的特性是对filesystem所做的任何修改,都不会影响到真正rootfilesystem的内容。

initrd全名为initializeRAMdisk,是1个特殊的RAMdisk。bootloader会将initrd载至内存,Linuxkernel则可在/dev/ram0找到initrd。initrd会在Linuxkernel开机前就加载,initrd正式的用途是用来存放开机时所需要的驱动程序(因rootfilesystem尚未mount进来)。在EmbeddedLinux应用上,我们会利用initrd来存放整个档案系统(rootfilesystem),也就是将rootfilesystem制作成ext2或romfs格式(或其它档案系统)的映像文件,并在开机时由bootloader加载内存,initrd均位于/dev/ram0。要使用RAMdisk与initrd,必须将Linuxkernel的CONFIG_BLK_DEV_RAM以及CONFIG_BLK_DEV_INITRD)。

使用initrd做为rootfilesystem装置

将initialRAMdisk当成rootfilesystem来使用,是在EmbeddedLinux应用上是相当常见的技巧,如果我们想将initialRAMdisk当成存放rootfilesystem的装置来使用,在开机时,只需要配合root=的kernel开机参数即可。

initramfs

Linus本人在Linux2.6时代所提出的"initramfs",是1种更好的"root="做法。简单来说,initramfs就是kernel2.6的initrd,initramfs是属于1种compressedramfs(ramfilesystem)的映像档。

C链接库

在C链接库方面,除了标准的glibc也被广泛应用在嵌入式系统领域外,也有一些专门针对嵌入式系统应用所发展的C链接库,像是uClibc以及Dietlibc。但是由于现在的ARM9处理器计算效能都很快,平台也多搭载大容量NAND闪存,所以许多实作都直接使用libc来实作rootfilesystem。

相关推荐