Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48698
  • 博文数量: 8
  • 博客积分: 448
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-11 16:00
文章分类
文章存档

2012年(8)

分类: LINUX

2012-10-16 09:08:08

    前几天开始了我的linux开发生涯。。。由于之前都是做cortex-m3开发的,虽然也有些任务调度、消息队列管理等,但是,发现比起linux这样的操作系统的,以前的东西真的是小巫见大巫呀。。。不过,也不能说以前的东西是没用的,那些是基础,是基石!相信这些基石能让我在今后的linux道路上走得更加稳妥与快速。
 
    刚入门的我,开始很彷徨,因为,以前的编译,都是IDE集成了,直接一个按钮,现在呢,连交叉编译环境都是要一步步搭建,对于新人来说,貌似都很陌生,在这里,个人觉得,一定不能着急也不能担心别人看不起你而不敢问一些简单的问题。不懂就问,但是,需要是细心查阅几遍后发现还真的不懂后再问。这点,也要告诫自己,之前就是有些问题,其实是不细心以及着急而忽略了一些关键点,进而浪费了一些时间。
 
    需要多做笔记,哪怕一些简单的命令操作,觉得有必要,都可以记录。因为,刚开始的时候,肯定是到处看资料,信息量很大,同时,也会让自己的大脑磁盘空间产生很多碎片,无法串联起来,因此,记录,就类似于FAT表,可以让自己那么多零碎的知识点链接起来。
   
     在学习过程中,非常感谢tekkamanninja大侠耐心的给与解答遇到的问题!!
 
    目前使用的开发模式是在xp下安装virtualbox虚拟机,用的是ubuntu12.04,linux内核用的是2.6.28.7,编译器开始用的是4.4.3,后面换成了4.3.2。接下去一个个介绍遇到的问题与解决办法。
 
    问题1:构建个共享文件夹与虚拟机共享,老不成功。
    按照网上的做法,具体可以参见网上很详细方法,这里只是简要介绍:
    1.先把virtualbox的中的共享目录myshare选择自动分配
    2.需要在/mnt/下mkdir一个自己要挂载共享文件夹的文件夹,我这里名字是winshare
    3.这个也就是之前一直没有成功的地方。在/etc/fstab中最后地方添加一个语句:myshare /mnt/winshare vboxsf rw, defaults 0 0
这里的myshare是windows下的共享文件夹的名字
    之前不成功的原因在于:“最后的地方”这里我弄错了,我是直接另起一行,老是不成功,后来发现应该是在最后一个字节的地方再敲回车
    
    u-boot可以引导内核了,但是根文件系统一直无法挂载上,在这个过程中,反反复复修正了好多个问题,其中有自己粗心的原因,也有是太外行的原因。
    问题2:粗心引起的问题
    VFS: Unable to mount root fs via NFS, trying floppy.
    VFS: Cannot open root device "nfs" or unknown-block(2,0)
    我是要从nand flash中挂载根文件系统的,结果,由于我的u-boot的启动参数粗心配置错了,把bootargs写成了bootarg,于是,其实bootargs还是没有被改掉,沿用了u-boot-2010-3这个tekkamanninja大侠修改的版本中的,因此出错,这里非常感谢@tekkamanninja的耐心解答。

    问题3:挂载根文件系统的时候,出现了好多坏块等错误,mkyaffs2image引起的。

    yaffs: auto selecting yaffs2
    block 2 is bad

    VFS: Mounted root (yaffs filesystem).
    Freeing init memory: 144K
    Warning: unable to open an initial console.
    Kernel panic - not syncing: No init found.  Try passing init= option to kernel.

    等导致无法正常挂载文件系统的问题

    发现,应该是mkyaffs2image这个工具的问题。我下载过多个版本的mkyaffs2image,有的是仅仅单个mkyaffs2image,也有是usr/sbin/下有两个,一个是mkyaffs2image,一个是mkyaffs2image-128M,后来发现,单个的往往有问题,因为我nand flash是256M的,因此,需要的是大容量的制作,不然会导致oob方面的错误。这类内容,网上搜索“mkyaffs2image-128M OOB”可以很多参考。

    我发现这个问题的方法是用了我之前的mkyaffs2image去制作光盘提供的文件系统为镜像,结果发现居然也有坏块,于是,我用mkyaffs2image-128M制作后,就发现不会有坏块了。

    问题4:编译器4.4.3编译出来的根文件系统无法挂载。

    接着,我用mkyaffs2image-128M这个编译我按照网上制作根文件系统方法制作的根文件系统,却出现了新的错误

    Kernel panic - not syncing: Attempted to kill init!
    这个问题,网上大部分说的是编译器在内核编译的时候EABI选项如果没有选择默认是关闭EABI的,而在编译根busybox的时候是默认打开的。但是,我查了好多遍,发现我的内核选项里都是有打开的。网上说的编译器是4.3.x版本的,于是,我怀疑是不是在编译器4.4.3编译busybox的反而没有打开,导致了与我内核打开了进而出现不匹配呢?刚好这个时候同事说换个编译器试看看,于是,我换成了4.3.2的,果然,成功!!!
 
    问题5:根文件系统挂载成功,ls的出现
 
     1;34mbin[0m [1;34mhome[0m [1;34mmnt[0m [1;34msample[0m
     这样的乱码,网上说是DNW不支持彩色的原因,我用的busybox是1.13.3版本的,于是我在busybox1.13.3目录下make menuconfig想取消掉Coreutils --->下找到ls相关的Allow use of color to identify file types把前面的*给去掉
但是,1.13.3这个版本下,这些选项都无法进行取消选择,于是,我到下载了1.20.2这个版本,就可以了。
 

 
阅读(4097) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~