移值linux3.4.2内核之修改分区

前言

内核启动后的打印信息如下所示
移值linux3.4.2内核之修改分区_第1张图片
看到内核中有8个分区,但是我们的uboot只有4个分区

修改内核分区

移值linux3.4.2内核之修改分区_第2张图片
我们搜索"Boot Agent"字段,可以发现在以上文件出现过,我们可以断定应该是要修改common-smdk.c文件,因为它是一个比较通用的文件,我们进去查看该文件,可以看到里面有个数组smdk_default_nand_part[],内容如下所示:
移值linux3.4.2内核之修改分区_第3张图片
所以我们必须修改该数组,修改为和我们uboot对应分区一致的分区布局
移值linux3.4.2内核之修改分区_第4张图片
上面部分宏的定义,如下所示:
MTDPART_OFS_RETAIN: 填在offset里,表示先后保留多少size空间大小
MTDPART_OFS_NXTBLK: 填在offset里,表示从下一个块开始
MTDPART_OFS_APPEND: 填在offset里,表示该分区位置附加在上个分区结束的地址上
MTDPART_SIZ_FULL: 填在size里,表示剩下的内存size都归于该分区
编译完成后,开发板重新启动,发现下新的分区信息已经出现
在这里插入图片描述

烧写yaffs2文件系统

下载yaffs2文件系统到内存地址上,然后擦除nand的rootfs分区,将文件系统first_fs.yaffs写入该分区

OpenJTAG> nfs 30000000 172.16.245.101:/work/nfs_root/first_fs.yaffs2
OpenJTAG> nand erase.part rootfs
OpenJTAG> nand write.yaffs 30000000 260000  889bc0

设置启动参数,从nand的rootfs分区挂载根文件系统,然后启动内核

OpenJTAG> set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=yaffs2 
OpenJTAG> nfs 32000000 192.168.1.30:/work/nfs_root/uImage_new
OpenJTAG> bootm 32000000

启动后发现现在的内核并不支持yaffs格式的文件系统
移值linux3.4.2内核之修改分区_第5张图片

烧写jaffs2文件系统

在我们生成的.config文件中可以找到该内核是支持jaffs2文件系统的
移值linux3.4.2内核之修改分区_第6张图片
下载文件系统

OpenJTAG> nfs 30000000 172.16.245.101:/work/nfs_root/first_fs.jffs2
OpenJTAG> nand erase.part rootfs
OpenJTAG> nand write.jffs2 30000000 260000  $filesize
OpenJTAG> set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2

启动成功
移值linux3.4.2内核之修改分区_第7张图片

修改内核支持yaffs2文件系统

你可能感兴趣的:(移值linux3.4.2内核之修改分区)