LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1046|回复: 3

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

[复制链接]
发表于 2007-11-16 14:06:42 | 显示全部楼层 |阅读模式
在LFS的时候,一个难点是如何设置内核。现在硬件日新月异,menuconfig里面的选项也是越来越多。如果设置的时候一不小心,编出来的内核可能就罢工了。比如,万一忘记设置SATA什么的,就会kernel panic. 另一方面,为了生成尽量精简的内核,我们又不希望弄一个包罗万有的内核。这尤其发生在CLFS 1.0需要reboot的时候,这时候我们编译的内核要尽量的小,最好连模块都不用支持,但要能启动。要达到这一目的,这需要你对于当前机器运行的硬件有精确了解。

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

好了,让我列出需求吧。

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

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

我知道通过lsmod可以得到模块列表,不过,我们能否从这个列表中得到相应的内核参数值,从而生成这个内核配置呢?
发表于 2007-11-16 17:08:41 | 显示全部楼层
lsmod 大概不行,内核里面还有别的驱动。

仿照xpe方式,需要:

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

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

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

第 2、3 条不容易实现。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-16 18:25:29 | 显示全部楼层
Post by pdfan;1783335
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 19:13:39 | 显示全部楼层
此外,“内核里还有别的驱动”这也可以通过访问系统的config文件来实现。目前的内核可以把编译时的配置作为一个特殊文件放在文件系统中(这本身也是一个编译选项,但绝大部分发行版都是用这个选项来编译)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表