一、什么是ramdisk
ramdisk文件系统是Linux众多文件系统中的一种。它通过将文件系统加载到内存,提高访问效率,并且掉电不保存,使得文件系统有只读的特性。ramdisk有两种,一种是格式化并加载(initrd),缺点是大小固定;另一种就是ramdisk,2.4版本之后才支持,大小随空间增大或缩小。使用ramdisk的另一个好处就是将内核和文件系统放一起了,节省了flash空间,对嵌入式产品开发来说是一个非常值得使用的方式。
二、使用ramdisk
1.内核配置使用ramdisk,并配置文件系统所在目录
进入内核目录,make menuconfig修改一下配置项:
General Setup
---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(rootfs)Initramfs source file(s)
需要注意的是,指定的rootfs根文件目录下需要创建软连接init指向sbin/init(在rootfs目录中执行 ln -s init sbin/init),因为Linux内核启动时,发现如果使用了ramdisk文件系统,则会检测根目录下是否有init文件,没有则启动失败。
修改之后,执行make uImage即可生成使用ramdisk文件系统的Linux内核了。
2.指定ramdisk地址和大小
在产品开发中,我们需要对内存的地址范围使用做严格的控制,所以当然需要限制ramdisk文件系统使用的内存空间。方法很简单,就是在uboot的bootargs启动参数中传入initrd=0x50000000,0x1000000,即ramdisk地址从0x50000000开始16M空间。