分类: LINUX
2011-07-18 17:10:23
一、环境
Ubuntu 8.04
U-Boot 1.3.3(支持tftp)
二、过程
1、制作cramfs需要使用mkcramfs工具,首先 安装mkcramfs工具
$sudo apt-get install cramfsprogs
2、退到已做好的rootfs目录的上一级
~/rootfs$ cd ..
$mkcramfs rootfs/ rootfs.cramfs
即可生成rootfs.cramfs
3、启动u-boot,将rootfs.cramfs下载到ram并烧写到nand flash的某个分区上。
nand flash 的分区为:
Creating 6 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00030000 : "bootloader"
0x00030000-0x00200000 : "kernel"
0x00200000-0x00400000 : "ramdisk"
0x00400000-0x00800000 : "cramfs"
0x00800000-0x01000000 : "jffs2"
0x01000000-0x04000000 : "data"
我们可以将rootfs.cramfs烧写到0x400000上,对应的结点为/dev/mtdblock/3。
tftp 32000000 rootfs.cramfs
nand erase 400000 800000
nand write.jffs2 32000000 400000 200000
4、要从cramfs启动,可将u-boot的启动参数改为:
root="/dev/mtdblock/3" rootfstype="cramfs" console="ttySAC0",115200 init="/linuxrc" noinitrd mem="64M"
即可。
如果需要在其它文件系统中挂载该cramfs文件系统,可以这样做
#cd /tmp
#mkdir cramfs
#mount -t cramfs /dev/mtdblock/3 cramfs
注意:使用cramfs文件系统时,对内核进行配置时需要选上对cramfs的支持。
附:
这里说明下关于nand flash操作的几个常用命令的含义
nand write:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,则直接报错。
nand write.jffs2:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块。
nand read:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,则直接报错。
nand read.jffs2s:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,将对应坏块区域的缓冲填充0xff,然后跳过此坏块继续读取。
nand read.jffs2:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,直接跳过坏块。