广州网站制作(信科网络),浅谈顺丰的电子商务网站建设,odoo 网站开发,wordpress 文章时间轴今天接着移植Linux 3.4.2内核#xff0c;接着上一篇文章#xff08;点击查看#xff1a;上一篇文章#xff09;我们完成了内核的串口启动打印输出#xff0c;但是无法挂载根文件系统#xff0c;我们看看启动后显示的是什么#xff1a; 从打印结构可以看出#xff0c…今天接着移植Linux 3.4.2内核接着上一篇文章点击查看上一篇文章我们完成了内核的串口启动打印输出但是无法挂载根文件系统我们看看启动后显示的是什么 从打印结构可以看出我们的分区不对在U-boot移植点击查看Uboot分区中我们已经对整个系统进行分区了现在打印说我们的分区不对一定是内核里也有分区的相关设置我们需要去修改内核 在common-smdk.c中具体怎么找到这个函数可以从串口打印找到关键字在内核中搜索看看关键字符串在哪里出现过这个技巧对于初不熟悉内核架构的人来说很管用有如下函数对应的分区的设置
/* NAND parititon from 2.4.18-swl5 */static struct mtd_partition smdk_default_nand_part[] {[0] {.name Boot Agent,.size SZ_16K,.offset 0,},[1] {.name S3C2410 flash partition 1,.offset 0,.size SZ_2M,},[2] {.name S3C2410 flash partition 2,.offset SZ_4M,.size SZ_4M,},[3] {.name S3C2410 flash partition 3,.offset SZ_8M,.size SZ_2M,},[4] {.name S3C2410 flash partition 4,.offset SZ_1M * 10,.size SZ_4M,},[5] {.name S3C2410 flash partition 5,.offset SZ_1M * 14,.size SZ_1M * 10,},[6] {.name S3C2410 flash partition 6,.offset SZ_1M * 24,.size SZ_1M * 24,},[7] {.name S3C2410 flash partition 7,.offset SZ_1M * 48,.size MTDPART_SIZ_FULL,}
};将分区修改为如下这样的 0x00000000-0x00040000 : “bootloader” 0x00040000-0x00060000 : “params” 0x00060000-0x00260000 : “kernel” 0x00260000-0x10000000 : “root” 即改为
/* NAND parititon from 2.4.18-swl5 */static struct mtd_partition smdk_default_nand_part[] {[0] {.name bootloader,.size SZ_256K,.offset 0,},[1] {.name params,.offset MTDPART_OFS_APPEND,//紧接着上一个分区.size SZ_128K,},[2] {.name kernel,.offset MTDPART_OFS_APPEND,.size SZ_2M,},[3] {.name rootfs,.offset MTDPART_OFS_APPEND,.size MTDPART_SIZ_FULL, //剩下的所有分区}};注释如果我们之前使用的及其ID是set machid 7CF本身使用的是set machid 16a查看之前的文章看相关内容点击查看之前的文章那么我们需要修改的地方是mach-mini2440.c文件与common-smdk.c在同一个目录中的结构体 /* NAND Flash on MINI2440 board */static struct mtd_partition mini2440_default_nand_part[] __initdata {[0] {.name u-boot,.size SZ_256K,.offset 0,},[1] {.name u-boot-env,.size SZ_128K,.offset SZ_256K,},[2] {.name kernel,/* 5 megabytes, for a kernel with no modules* or a uImage with a ramdisk attached */.size 0x00500000,.offset SZ_256K SZ_128K,},[3] {.name root,.offset SZ_256K SZ_128K 0x00500000,.size MTDPART_SIZ_FULL,},
};改为 /* NAND Flash on MINI2440 board */static struct mtd_partition mini2440_default_nand_part[] __initdata {[0] {.name bootloader,.size SZ_256K,.offset 0,},[1] {.name params,.offset MTDPART_OFS_APPEND,//紧接着上一个分区.size SZ_128K,},[2] {.name kernel,.offset MTDPART_OFS_APPEND,.size SZ_2M,},[3] {.name rootfs,.offset MTDPART_OFS_APPEND,.size MTDPART_SIZ_FULL, //剩下的所有分区}
};我们这里一直使用的是set machid 16a这个机器ID。
好了 重新编译内核用nfs挂载具体方法看上一篇文章内核启动显示如下 由此可知我们的分区已经正常了只是还缺少文件系统没有烧写。 我们先烧写一个简单的文件系统看一下能否正常启动系统 nfs 30000000 192.168.1.101:/work/nfs_root/fs_mini_mdev.yaffs2 nand erase.part rootfs nand write.yaffs 30000000 260000 889bc0 (这个889bc0大小是文件系统的大小根据实际情况修改)
烧写文件系统后下载内核启动 nfs 32000000 192.168.1.101:/work/nfs_root/uImage_new bootm 32000000
发现还是启动不了显示不支持yaffs2文件系统那么再试一下jffs文件系统是否可以 nfs 30000000 192.168.1.101:/work/nfs_root/fs_mini_mdev.jffs2 nand erase.part rootfs nand write.jffs2 30000000 260000 5b89a8
nfs 32000000 192.168.1.101:/work/nfs_root/uImage_new bootm 32000000 显示 文件系统已经挂载上去了但是无法启动init进程。
那么看来我们需要制作新的文件系统了我们新的内核不支持我们老的文件系统。
为了区分开制作文件系统我们放到下一篇文章点击链接查看下一篇文章点击查看
想一起探讨以及获得各种学习资源加我有我博客中写的代码的原稿 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题。