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

Posted 勇士后卫头盔哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移值linux3.4.2内核之修改分区相关的知识,希望对你有一定的参考价值。

前言

内核启动后的打印信息如下所示

看到内核中有8个分区,但是我们的uboot只有4个分区

修改内核分区


我们搜索"Boot Agent"字段,可以发现在以上文件出现过,我们可以断定应该是要修改common-smdk.c文件,因为它是一个比较通用的文件,我们进去查看该文件,可以看到里面有个数组smdk_default_nand_part[],内容如下所示:

所以我们必须修改该数组,修改为和我们uboot对应分区一致的分区布局

上面部分宏的定义,如下所示:
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格式的文件系统

烧写jaffs2文件系统

在我们生成的.config文件中可以找到该内核是支持jaffs2文件系统的

下载文件系统

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

启动成功

修改内核支持yaffs2文件系统

以上是关于移值linux3.4.2内核之修改分区的主要内容,如果未能解决你的问题,请参考以下文章

移值linux3.4.2内核之内核裁剪

移值linux3.4.2内核之内核裁剪

移值linux3.4.2内核之框架及初步修改

移值linux3.4.2内核之框架及初步修改

为linux3.4.2内核编写LED驱动

移植触摸屏驱动到linux3.4.2