linux怎么查看CF卡的格式,构建CF卡Linux系统的几个常见难题

关于如何在cf卡上构建,从网上可以找到很多文章,如:许德新 《嵌入式Linux在PC104平台上的构建与实现》等等。这里主要介绍我在cf卡上构建linux系统中碰到的问题和方法。采用硬件是:板子是研祥 104-1621CLDN,bios是AMI的,内核2.6.28.10。采用的方法是linux from scratch(LFS)。在此过程中遇到的主要有:

一 bios的

在cf卡上建立好根文件后,在cf卡上安装grub引导程序,然后把编译好的内核bzImage 拷贝到/boot/下,修改/boot/grub/menu.lst/。理论上来现在至少应该能够出现grub的menu画面了,可是bios自检过后出现错误:

searching for boot record from ide-0..  not found

boot failure

reboot and select proper boot device or insert boot media in selected boot device

然后怀疑是grub没有装成功,就重装了grub

grub> setup (hd1)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/reiserfs_stage1_5" exists... yes

Running "embed /boot/grub/reiserfs_stage1_5 (hd1)"...  19 sectors are embedded

.

succeeded

Running "install /boot/grub/stage1 (hd1) (hd1)1+19 p (hd1,0)/boot/grub/stage2

/boot/grub/menu.lst"... succeeded

Done.

问题仍然存在,说明问题在其他地方。然后进入bios进行设置,由于cf卡在linux就相当于一个的硬盘,所以修改ide的相关设置,发现问题在于PCI/Plug an d Play Setup选项下PCI IDE BusMaster  必须设置为Disabled 才能进入grub画面。

二 启动内核的过程中出现-not syncing :vfs:unable to mount root fs on unknown-block(0,0)

这个问题的本质原因是根文件系统所在的硬件的驱动程序没有编译进kernel或者在initrd.img 中也没有把硬盘或者cf卡的驱动程序作为模块加入。还有一种是在grub或者lilo的设置中 root=/dev/sd* 或者 /dev/hd* 的设置有误。这导致内核无法识别硬盘或cf卡。所以,建议在编译内核的时候特别细心,找出硬盘是属于ata的,还是pci的,或者scsi的,然后选择相应的选项。如果很难确定硬盘或cf卡的类型,则建议先全部选上,这样先保证能够进入系统,然后用dmesg | less 查看相应的硬盘或者cf卡的硬件信息,接下来再重新选择它们的驱动,把不要的去掉。

三 内核启动过程中出现很多的错误信息

我的cf是Kinston ELITE PRO CF CARD 8GB的,应该是不支持DMA模式,所以出现重复以下错误,导致启动时间变长了很多.

ide:failed opcode was :unknown

hdc:dma disabled

hdc:dma_timer_expiry: dma status (0x21)

hdc: dma timeout error

在网上了很长时间,多数介绍使用hdparm 来启动或者关闭cf卡的DMA模式,或者是在kernel /boot/bzImage-ok1 root=/dev/hdc1 rw 中加入ide=nodma,可是这对我的cf卡并不起作用。煞费苦心后,终于在 这个网页上找到答案。在查看了./Documentation/kernel-parameters.txt和./Documentation/ide/ide.txt后发现 需要传递个内核的参数不是ide=nodma 而是ide_core.nodma=1.0 这里1.0指的就是我的cf卡对应的接口号和设备号。这样 kernel /boot/bzImage-ok1 root=/dev/hdc1 rw ide_core.nodma=1.0 就没有DMA的错误信息了。ide_core还有一些其他的选项,具体参阅内核的文档 ./Documentation/ide/ide.txt。

总而言之,搞了一个多月虽然很辛苦,但也学了不少东西。总结一下就是:善于使用google的搜索可以减少找到答案的时间,而且尽量使用英文关键字,因为作使用英文的人毕竟比用中文的多;多查看内核自带的文档里面有很多好东西;多跟内行的人交流(逛论坛,QQ群);无论作什么事一定要逻辑清楚,有耐心。山穷水复疑无路,柳暗花明又一村。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值