+ -
当前位置:首页 → 问答吧 → 大家想想办法,如何完成这样一个LFS辅助工具

大家想想办法,如何完成这样一个LFS辅助工具

时间:2007-11-16

来源:互联网

在LFS的时候,一个难点是如何设置内核。现在硬件日新月异,menuconfig里面的选项也是越来越多。如果设置的时候一不小心,编出来的内核可能就**了。比如,万一忘记设置SATA什么的,就会kernel panic. 另一方面,为了生成尽量精简的内核,我们又不希望弄一个包罗万有的内核。这尤其发生在CLFS 1.0需要reboot的时候,这时候我们编译的内核要尽量的小,最好连模块都不用支持,但要能启动。要达到这一目的,这需要你对于当前机器运行的硬件有精确了解。

好在,我们有一些久经考验的内核——从各种LiveCD、发行版上面,我们可以弄到一些内核,几乎可以运行在所有的硬件上。可惜,这些内核基本上都需要initrd来携带各种驱动模块。这样,除非我们一并使用那个initrd,否则我们无法使用这些现有内核。

好了,让我列出需求吧。

我们需要一个工具,它能枚举当前系统中安装的模块,并据此生成一个内核配置。但这不同于当前内核的配置,而是一个禁止了模块的配置。

这个配置除了禁止模块外,还要具有如下特性:
1. 仅包含足以编译CLFS的特性 (比如什么调试特性等统统禁止)
2. 除了启动必须的驱动外统统禁止 (一般来说,这包括磁盘驱动、文件系统驱动、显示驱动、键盘驱动)。其它如网络、音频甚至鼠标等一律禁止。

我知道通过lsmod可以得到模块列表,不过,我们能否从这个列表中得到相应的内核参数值,从而生成这个内核配置呢?

作者: 地球发动机   发布时间: 2007-11-16

lsmod 大概不行,内核里面还有别的驱动。

仿照xpe方式,需要:

1。类似win pe的小型livcd启动盘

2。类似ta.exe的硬件检测工具,在livcd启动后检测生成系统设备列表文件。编辑系统设备列表文件,对每一设备设定as module 或者 in kernel

3。内核的make 支持,比如 “make devices <系统设备列表文件>"。

第 2、3 条不容易实现。

作者: pdfan   发布时间: 2007-11-16

引用:
作者: pdfan
lsmod 大概不行,内核里面还有别的驱动。

仿照xpe方式,需要:

1。类似win pe的小型livcd启动盘

2。类似ta.exe的硬件检测工具,在livcd启动后检测生成系统设备列表文件。编辑系统设备列表文件,对每一设备设定as module 或者 in kernel

3。内核的make 支持,比如 “make devices <系统设备列表文件>"。

第 2、3 条不容易实现。
第3条不需要实现。每个menuconfig选项,最终都会变成.config文件里面一个CONFIG_XXX的定义。因此我们只需要生成这个.config文件就可以了。

关于第1条,我们已经有很多这样的启动了。比如LFS Live CD等等。甚至可以直接拿商业Linux如Redhat的内核来用。

真正需要实现的是第二条。

作者: 地球发动机   发布时间: 2007-11-16

此外,“内核里还有别的驱动”这也可以通过访问系统的config文件来实现。目前的内核可以把编译时的配置作为一个特殊文件放在文件系统中(这本身也是一个编译选项,但绝大部分发行版都是用这个选项来编译)。

作者: 地球发动机   发布时间: 2007-11-17