Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25643
  • 博文数量: 9
  • 博客积分: 198
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-10 12:34
文章分类
文章存档

2011年(5)

2010年(4)

最近访客

分类:

2011-02-24 22:51:47

在做ppc移植的时候发现,内核没有认出光驱来。 在suse系统下用hwinfo --cdrom 查出用的是pata_sl82c105这个模块。跟据自已2.6.27的内核在中找到相应的文件是drivers/ata/pata_sl82c105.c .原以为把这个东西build-in就行了。make menuconfig 配置内核选项。 输入“/sl82c105”. 找到
Symbol: BLK_DEV_SL82C105 [=n]                                            
   Prompt: Winbond SL82c105 support                                         
     Defined at drivers/ide/Kconfig:623                                    
     Depends on: IDE [=n] && PCI [=y] && (PPC [=PPC] || ARM [=ARM])         
     Location:                                                            
       -> Device Drivers                                                    
         -> ATA/ATAPI/MFM/RLL support (IDE [=n])                            
     Selects: IDE_TIMINGS [=n] && BLK_DEV_IDEDMA_PCI [=n]
看上去真的是没有选上。 当时高兴死了。 这不选上后就解决问题了吗。 后来我进去查了半天没有找出来,不管怎么选上都没有办法让BLK_DEV_SL82C105为Y。一气之下,直接到到crux的光盘上的config过来(它的内核是2..6.32的,我的是27.54的),make menuconfig 一看,我去了。还是"n" 。更可爱的是自已对着它的config,直接改自已的config ,还好make menuconfig后没有出现错误,而且make后也没有问题,重新弄iso后发现还是进不去,后来让它进sda6,查后了一下/proc/ide/中有一个hda,dmesg也发现内核中有hda的信息,这都明了内核已经认出cdrom来了,但是为什么/dev下却没有呢,想来想去没有办法,(其实前面直接改config的方法是很错误的,是乱改的,虽然认出了cdrom让自已高兴了一下)后来在网上查到金步国先生的文章《linux设备简介》中说到“.....从 2.6.19 版本开始,内核引入了新的ATA驱动,将SATA/PATA硬盘统一使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了。具体说来也就是你在编译内核的时候不要再使用"ATA/ATAPI/MFM/RLL support"下面的驱动,而是使用更新的"Serial ATA and Parallel ATA drivers"驱动。” 我在 ATA/ATAPI/MFM/RLL support 下面看了半天选了又选还是没有办法。 没有想到在Serial ATA and Parallel ATA drivers下面有“Winbond SL82C105 PATA support ”这就是我想要的。
  上面的help。内容是在./drivers/ata/Kconfig指定的。通常的时候,当找到驱动时,有的时候对config的名字并不是驱动名。 所以要找到这个驱动对应目录下的Kconfig来查看,内核选项中的名称,这样就能根据自已硬件来选上合适的驱动。但对于我这次没有想到是因为2.6.19...后不一样了。
  有的时候,要編一个模块还会有依赖的。如果这个模块的依赖没有选上,那这个模块是不能被编出来的。在suse中找到pata_sl82c105 用modinfo pata_sl82c105查看这个模块依赖于libata.ko。在查看libata还依赖于scsi的模块。都要在make menuconfig中配上。 用make path/xxx.ko编上。 depmod -a 一下。 用/etc/init.d/udev start. 把所要的模块加上去。可用lsmod 查看, 是否加上。 更让人兴奋的时/dev/hda出来了。mount后正是自已的光盘环境。
  上面说的用到的指令有:hwinfo  (查看硬件信息,可以查出设备的型号,驱动)。在内核中find . -name  "*xxxxx*"找出模块文件。vi Kconfig (找出模块在内核的对应名称)。modinfo (查看模块信息,里面的依赖关系很有用)。make menuconfig(配置好config).make /drives/XXXXX/XX.ko(编出要的模块)。depmod -a (让modprobe知道这个模块)。insmod和modprobe(插入模块)。多看内核的help,还有内核下的文档文档。找出config.加油!!!
  


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