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内存中,然后启动系统。
- RAMDISK制作全纪录
- ramdisk 制作
- ramdisk制作
- Ramdisk制作
- 制作ramdisk
- 制作ramdisk
- ramdisk制作
- 制作ramdisk
- ramdisk制作
- ramdisk 制作
- ramdisk.image制作
- 制作ramdisk的全过程
- 制作ramdisk根文件系统
- busybox制作ramdisk全过程
- RAMDISK的制作
- Ramdisk文件系统的制作
- busybox制作ramdisk全过程
- Ramdisk文件系统制作
- JavaScript正则表达式
- flex中 event.target与 event.currentTarget的使用
- Ubuntu12.10下安装jdk6
- ububtu下maven安装经验
- 总结:QPixmap、QImage、QBitmap和QPicture
- RAMDISK制作全纪录
- sql--查询
- Android设置系统时间和时区
- 最近开发中遇到的“砖头”记录
- 距离今年考研还有一百天,我决定去考研,keep hungry keep foolish
- java文件上传下载
- 时间差和时间格式化
- C#实现Base64编码与解码
- 查询缺失的索引