Chinaunix首页 | 论坛 | 博客
  • 博客访问: 669624
  • 博文数量: 183
  • 博客积分: 9166
  • 博客等级: 中将
  • 技术积分: 1920
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-31 16:17
文章分类

全部博文(183)

文章存档

2010年(159)

2009年(24)

分类: LINUX

2010-04-24 11:49:29

RT 
这确实是个问题  make menuconfig 的时候驱动里东西太多 不知道我自己的硬件型号 更不知道该选什么样的驱动了  默认的几乎把所有的驱动都编译到模块里了  那样没用的东西就太多了

现在该做的就是:1、找出自己自己上所有硬件的型号 包括芯片在内
                            2、 make menuconfig 的时候把需要的驱动一个一个挑出来

非常繁杂的工作。。。。


今天做了这些任务(我发到了西邮邮件列表里了):
--------------------------------------------------
在linux kernel in a nutshell 中找到了这样一段代码 (P51)


#/bin/bash
#
#find_all_modules.sh
#

for i in `find /sys/ -name modalias -exec cat {} \;`; do
/sbin/modprobe  -config /dev/null --show-depends $i ;
done | rev |cut -f 1 -d '/' | rev | sort -u


执行之后找到了所有驱动所需要的模块 列表如下:

agpgart.ko 
ata_generic.ko 
ata_piix.ko 
atl2.ko 
button.ko 
cdrom.ko 
ehci-hcd.ko 
evbug.ko 
evdev.ko 
fb_ddc.ko 
hid.ko 
i2c-algo-bit.ko 
i2c-core.ko 
i2c-i801.ko 
intel-agp.ko 
intel-rng.ko 
iTCO_vendor_support.ko 
iTCO_wdt.ko 
libata.ko 
nvidiafb.ko 
nvidia.ko 
nvidia_legacy.ko 
nvidia_new.ko 
pata_acpi.ko 
pci_hotplug.ko 
pcspkr.ko 
processor.ko 
psmouse.ko 
scsi_mod.ko 
sd_mod.ko 
serio_raw.ko 
shpchp.ko 
snd-hda-intel.ko 
snd-hwdep.ko 
snd.ko 
snd-page-alloc.ko 
snd-pcm.ko 
snd-timer.ko 
soundcore.ko 
sr_mod.ko 
thermal.ko 
uhci-hcd.ko 
usbcore.ko 
usbhid.ko 
usbkbd.ko 
vgastate.ko 


我现在要怎么根据这些内核模块找出我所需要的驱动类型 然后在重新编译内核时 在config里一个一个找出来?


-----------------------------------------------------


我找到了所有驱动模块,但不知具体驱动型号。路过的给支个招吧!^_^

================================找到了解决方案=====================================

自动生成config

配置内核的人都清楚要选择内核的配置项是一件比较麻烦的事:要是多选了吧,内核体积可能变大,编译时间会变长;要是选少了吧,恐怕系统连启动都启动不了。所以一般我们的做法是拿过系统提供的 config 来直接make oldconfig。

但这么做并不是很好,因为发行版通常为了照顾不同配置的机器而选中了很多的模块,这样一来对本机器没有用的东西也会被编译进来,从而导致编译时间变长,这还是次要,关键是模块数量会增多,内核体积也有可能变大。

理想的情况是我们根据本系统运行时加载的模块来决定到底选中哪些模块。问题就来了,我们怎么才能知道自己的系统需要哪些模块不需要哪些模块呢?

为了解决这个问题,Steven Rostedt写了一个脚本,叫作,来解决这个问题。而且他已经把此脚本提交到内核,见scripts/kconfig/streamline_config.pl。这样一来,我们就可以通过 make localmodconfig 或 make localyesconfig 来生成我们真正需要的最小的config了。不同的是,后者会把系统正在使用模块编译进内核,而前者不会,它只会保留系统使用的模块而且继续以模块的形式存在。

这个脚本不复杂,原理也很简单,通过 lsmod 找出正在使用的驱动, 然后通过解析所有的Makefile中的obj-$(CONFIG_XXX) += xxx.o模式来找到驱动对应的CONFIG_*,不过还要解决依赖性的问题。


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