广州网站制作(信科网络),浅谈顺丰的电子商务网站建设,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语言数据结构等技术问题。