3.3.4 配置内核支持模块

在嵌入式系统中,由于外围设备相对比较固定,因此,在编译内核时,基本可以确定内核需要支持哪些特性,例如支持哪些硬件、支持哪些文件系统等。而对于用在PC系统上的内核,因为个人计算机中包含的硬件千差万别,为了提供更好的兼容性,各家Linux发行版的内核都尽可能地包含更多的功能,支持更多的硬件。但是,如果所有的功能模块和驱动全部编译进内核映像,势必造成内核极其庞大。以作者使用的Ubuntu12.10发行版为例,其内核映像大小为5MB,而该发行版中包含的内核模块的尺寸约为100MB左右。也就是说,如果把全部的模块都编译进内核映像,内核映像的尺寸大约要增加100MB,而其中绝大部分模块在特定的一台机器上是根本不会用到的。

除了尺寸上的考虑外,更大的灵活性也是一方面。比如,开发人员在开发某个驱动时,如果使用模块机制,只需单独编译驱动,然后动态加载,即可进行调试;而不必重新编译整个内核,甚至重启系统。

因此,在我们编译的内核中,启用内核的动态加载模块特性。下面是配置内核支持模块机制的步骤。

1)执行make menuconfig,出现如图3-9所示的界面。

3.3.4 配置内核支持模块 - 图1

图 3-9 配置内核支持模块(1)

2)在图3-9中,选中菜单项"Enable loadable module support",允许内核动态加载模块,出现如图3-10所示的界面。

3.3.4 配置内核支持模块 - 图2

图 3-10 配置内核支持模块(2)

3)在图3-10中,选中"Module unloading",允许内核动态卸载模块。