RAMDISK制作全纪录

来源:互联网 发布:防拷贝软件 编辑:程序博客网 时间:2024/05/16 08:31

本文的平台是基于OK6410,其余平台的RAMDISK的制作过程一样样的。另外本文参考了http://blog.chinaunix.net/uid-25314474-id-376420.html大神的文章,再次表示感谢。

嵌入式RAMDISK文件系统的制作主要分为以下几个步骤:

1.制作根文件系统

2.编译内核

3.测试内核和文件系统的完整性

4.烧写至开发板并配置启动参数 

 

1.制作根文件系统

根文件系统使用的是国嵌的根文件系统下载地址http://download.csdn.net/detail/jason6765599/6319253

直接将压缩文件解压到/ramdisk/rootfs。

如果需要安装wireless-tool,只需将主机sbin目录下的iwcongfig和iwlist文件拷贝至/ramdisk/rootfs/sbin下,然后通过ldd.host iwconfig和ldd.host iwlist命令查看两个命令的依赖库,然后将依赖库拷贝至/ramdisk/rootfs/lib目录下。

         一切就绪之后,就要通过genext2fs命令来生成文件系统的镜像了。

         进入/ramdisk目录,其中的size为制作的ramdisk根文件系统的大小,千万要注意这个大小,size值需要和内核里面的配置移植,比如生成8m的文件系统,那么size=8192。

# genext2fs -b size -d /ramdisk/rootfsramdisk

         如果报错,则使用如下命令来查看文件系统的大小,size值不能够小于这个值的大小。

#du -h rootfs

然后压缩镜像文件。

# gzip -9 -f ramdisk

         生成了下载至开发板的镜像文件ramdisk.gz

2.编译内核

修改内核配置选项

进入飞凌内核源码目录,将.old.config配置文件拷贝至需要编译的内核目录下,然后配置内核:

#make menuconfig ARCH=arm

打开配置菜单,修改两个配置项,分别是:

a):General setup-->选择 InitialRAM filesystem and RAM disk...... 项

b):DeviceDrivers-->Block devices-->选择 RAM block device support 项

l  检查General setup-->Optimizefor size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。

l  修改(8192)Default RAMdisk size kbytes选项为(4096)Default RAM disk size kbytes, 之所以修改是因为我之后制作的ramdisk是4096KB大小的。当然如果你想制作8192KB大小的ramdisk,这里就要对应为8192了,以此 类推。但是最小系统嘛,是不用那么大的ramdisk的。此项的默认配置就是(4096),以前我改过这个配置,所以是(8192)了。如果这个大小和你做的ramdisk不匹配,则启动时仍然会出现kernel panic内核恐慌,提示ramdisk格式不正确,挂载不上ramdisk。

l  然后特别要注意的一点是,ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。所以一定要在make menuconfig ARCH=arm的时候进入File systems菜单,选上<*>Second extended fs support。以提供内核对ext2文件系统的支持。我以前添加过了ext2文件系统了,所以开始的时候在此没有说明,在此为了说明为什么有的人照着我的方法做了,但是仍然kernel panic,特别把这一步也加上。

然后保存配置退出。

这样就为内核添加好了ramdisk启动功能和ramdisk的驱动支持了。

最后编译内核:

#make zImage ARCH=armCROSS_COMPILE=arm-linux-

 

3.测试内核和文件系统的完整性

将制作好的根文件系统和内核镜像下载到RAM中运行,测试内核和文件系统的完整性。

首先修改uboot启动参数。

# set bootargs “initrd=0x51000000,0x500000 root=/dev/ram rw init=/linuxrc console=ttySAC0 mem=64M”

# tftp 0x52000000 uImage-ramdisk

# tftp 0x51000000 ramdisk.gz

#bootm 0x52000000

如果系统能够完整的启动,则可以把镜像烧写到开发板中了。

4.烧写至开发板并配置启动参数 

通过tftp烧写至flash中,注意镜像烧写的命令是nand write.e,uboot的烧写命令是nand write.uboot,uboot烧写至0-200000,kernel烧写至200000-700000,文件系统起始地址为700000,终止地址依据文件大小而定。

注意设定uboot启动参数:

setenv bootargs "initrd=0x51000000,0x500000 root=/dev/ram rw init=/linuxrc console=ttySAC0 mem=64M"

setenv bootcmd "nand read 0x520000000x200000 0x500000;nand read 0x51000000 0x700000 0x500000;bootm 0x52000000"

bootcmd是设置uboot从200000的地址空间将5M大小的镜像文件拷贝至内存52000000(kernel文件),从700000地址空间将5M大小的镜像文件(文件系统)拷贝至51000000内存中,然后启动系统。

原创粉丝点击