| 
		    
                    
   这里的ROMFS只读文件系统只是一种具体的文件系统类型,也是在嵌入系统中经常使用到的类型。  
  看完了上面的内容,以后你对出现的类似“kernel Panic:VFS:Unable to mount root fs on 0:00”的含义应该已经了解了。其中“VFS:”就是虚拟文件系统管理器操作时的输出信息了。  
  linux kernel内核文件名,它是在只读文件系统romfs上的一个组成部分。  
    
        
            
            
            Unzipping image from 0x4639DE60 to 0x90090000, size = 1316021 
             
             | 
         
    
 
  将romfs中的linux kernel解压缩到0x90090000,之后会从这个内存地址启动内核。romfs为压缩格式文件,使用压缩的只读文件系统,是为了保持制作出来的整个系统所占用的flash空间减小。这个内核的大小为1.3M左右,这也是目前大多数嵌入系统所使用的方法。  
    
        
            
            
            Inptr = 0x00000014(20) 
Inflating.... 
             
             | 
         
    
 
  释放,解压中。。。(变大,充气, 膨胀)  
    
        
            
            
            Outcnt = 0x0030e7c8(3205064) 
Final Inptr = 0x001414ad(1316013) 
Original CRC = 0xcbd73adb 
Computed CRC = 0xcbd73adb 
             
             | 
         
    
 
  做释放后的CRC检查:  
    
        
            
            
            Boot kernel at 0x90090000 with ROMFS at 0x46040000 
             
             | 
         
    
 
  kernel已经被从romfs中释放到内存地址0x90090000处,可以跳转到此处启动kernel了,这里是指定的kernel的起始地址  
  系统等待启动,后面将看到linux kernel的启动过程了。  
  第二部分 : linux内核初始化以及启动  
  第一节:start_kernel  
  Linux的源代码可以从www.kernel.org得到,或者你可以查看linux代码交叉引用网站:http://lxr.linux.no/ 进行在线的代码查看,这是一个很好的工具网站。  
  在start_kernel中将调用到大量的init函数,来完成内核的各种初始化。如:  
    
        
            
            
            page_address_init(); 
sched_init(); 
page_alloc_init(); 
init_IRQ(); 
softirq_init(); 
console_init(); 
calibrate_delay(); 
vfs_caches_init(num_physpages); 
rest_init(); 
             
             | 
         
    
 
  具体内容可以参考[http://lxr.linux.no/source/init/main.c]  
		    
                       
		      
		      
		   |