因为本文着重描述编译内核的步骤,关于内核的配置就不介绍了。本文使用:
~$ make O=/home/build/kernel localmodconfig
该命令为你的电脑创建一个与当前系统配置相同的的配置。命令执行,会出现一些选项,这些选项会添加一些模块和驱动,根据需要添加。具体的用法自己上网上找
一下,有很多介绍的。此命令执行完成后,/home/build/kernel/目录下不再为空,生成了makefile文件等一些配置文件项。
有不少资料提到命令:make defconfig,说会创建一个默认的配置,但是我最初编译内核的时候总是出错,没办法引导,黑白屏显示错误信息:
drm/i915 can't work without intel_agp module
mount:mounting none on /dev failed : no such device
could not mount the platform /dev/sda1
… ...
网上找了许多有关错误的说明以及解决办法,但是相关的不是很多,能解决问题的几乎没有。于是自己仔细分析了下原因,根据错误信息,应该是缺少相关模块,没
办法发现驱动和设备。于是仔细跟踪每一步编译过程,观察系统产生的变化,增加了哪些文件,修改了哪些文件信息。每次编译后,发现/lib/modules
/2.6.36/kernel/driver目录下只有很少的几个驱动文件夹,而原系统的相关目录/lib/modules/2.6.35-
generic/kernel/driver下有数十个文件夹。再进一步,发现实际是每次在编译模块的时候make modules
后终端只显示编译了3个module,也就是说编译的驱动模块太少了。最后,追根溯源,我觉得是内核配置出了问题,被选择添加进内核的功能模块太少了。但
是又不想过于繁重地选择内核的各个模块,在网上搜了一下,找到了 make localmodconfig命令以及简单用法。
也就是说我在用make defconfig 的时候出了问题,并没有选择足够的模块,但是README以及网上的说法都是说make
defconfig是可以的,我也不太清楚究竟问题出在哪,又不想一个一个地选择各个模块,因为毕竟不太清楚那些模块的具体作用,所以采用了make
localmodconfig的方法简单地定制模块。如果有哪位高手了解情况,请帮忙解答哈。
阅读(1646) | 评论(0) | 转发(0) |