|
在LFS的时候,一个难点是如何设置内核。现在硬件日新月异,menuconfig里面的选项也是越来越多。如果设置的时候一不小心,编出来的内核可能就罢工了。比如,万一忘记设置SATA什么的,就会kernel panic. 另一方面,为了生成尽量精简的内核,我们又不希望弄一个包罗万有的内核。这尤其发生在CLFS 1.0需要reboot的时候,这时候我们编译的内核要尽量的小,最好连模块都不用支持,但要能启动。要达到这一目的,这需要你对于当前机器运行的硬件有精确了解。
好在,我们有一些久经考验的内核——从各种LiveCD、发行版上面,我们可以弄到一些内核,几乎可以运行在所有的硬件上。可惜,这些内核基本上都需要initrd来携带各种驱动模块。这样,除非我们一并使用那个initrd,否则我们无法使用这些现有内核。
好了,让我列出需求吧。
我们需要一个工具,它能枚举当前系统中安装的模块,并据此生成一个内核配置。但这不同于当前内核的配置,而是一个禁止了模块的配置。
这个配置除了禁止模块外,还要具有如下特性:
1. 仅包含足以编译CLFS的特性 (比如什么调试特性等统统禁止)
2. 除了启动必须的驱动外统统禁止 (一般来说,这包括磁盘驱动、文件系统驱动、显示驱动、键盘驱动)。其它如网络、音频甚至鼠标等一律禁止。
我知道通过lsmod可以得到模块列表,不过,我们能否从这个列表中得到相应的内核参数值,从而生成这个内核配置呢? |
|