Linux Ram disk and initrd

转自: http://apps.hi.baidu.com/share/detail/14765588
      Initial RAM disk(initrd)

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

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

       使用initrd做为root filesystem装置

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

        initramfs

        Linus本人在Linux 2.6时代所提出的 "initramfs" ,是1种更好的 "root=" 做法。简单来说,initramfs就是kernel 2.6 的 initrd,initramfs是属于1种compressed ramfs(ram filesystem)的映像档。

        C链接库

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

你可能感兴趣的:(android)