| 
		    
                    
   现在看出来了,的确是8M(这同时说明,EXT2文件系统本身要占用一定的存储空间,相比之下minix文件系统要少些),这个空间是在编译核心时就确定下来了,在配置Ramdisk时,有一个叫 Default RAM disk size 的参数决定默认情况下Ramdisk的大小。可以通过核心命令行参数(ramdisk_size)来改变这个值,例如要设置Ramdisk的大小为16M,在grub中可以用: 
# grub.conf -
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Redice Linux
        root (hd0,0)
        kernel /vmlinuz ro root=LABEL=/ hdc=ide-scsi ramdisk_size=16384
        initrd /initrd
 
  这样,Ramdisk的大小就变成16M了。这个参数是Ramdisk直接编译到核心时才能使用的,如果Ramdisk编译为模块,则应该使用模块参数来设置Ramdisk的大小: 
redice # insmod rd rd_size=16384 
 
    
        
            |   | 
               | 
            
             编译到核心时,可以通过下面的一些核心命令行参数来配置Ramdisk: 
            
                - ramdisk_size - ramdisk的大小(Kbytes); 
 
                - ramdisk - 与ramdisk_size的作用相同; 
 
                - ramdisk_blocksize - ramdisk的块大小,默认情况为1024; 
 
             
            当以模块的形式译时,模块支持以下几个加载参数: 
            
                - rd_size - 同上面的ramdisk_size或ramdisk参数; 
 
                - rd_blocksize - 同上面的ramdisk_blocksize; 
 
             
             | 
              | 
         
    
 
  initrd 
  上面已经提到,Ramdisk需要先格式化然后理能使用。那么,如果核心希望使用ramdisk该如何做呢?于是initrd产生了,initrd全称是 initial RAM disk ,它提供一种让核心可以简单使用Ramdisk的能力,简单的说,这些能力包括: 
    - 格式化一个 Ramdisk; 
 
    - 加载文件系统内容到Ramdisk; 
 
    - 
    
将Ramdisk作为根文件系统;  
     
 
  我们可以将initrd形像的比作Norton Ghost备份的硬盘分区,而Linux启动阶段的Ramdisk相当于一个未格式化的硬盘分区,核心可以直接将initrd的内容释放到一个未初始化的Ramdisk里,这个过程与Ghost恢复一个分区的过程十分相似。于是,相应的内容被加载到相应的Ramdisk中,同时,这个Ramdisk也被格式化成某种由initrd格式所表达的分区格式。 
  initrd与Ghost备份的分区有许多相似之处,例如,它有一定的大小,包含分区上的文件系统格式等。initrd支持的格式包括: 
    - Ext2文件系统; 
 
    - Romfs文件系统; 
 
    - cramfs文件系统; 
 
    - minix文件系统; 
 
 
  如果核心选择了Gzip支持(通常这是默认的,在init/do_mounts_rd.c中定义的BUILD_CRAMDISK宏)还可以使用Gzip压缩的initrd。相关的代码可以在核心源码 drivers/block/rd.c:identify_ramdisk_image 中找到。 
		    
                       
		      
		      
		   |