Linux 版 (精华区)

发信人: jonny (san), 信区: Linux
标  题: 第25章 修改内核(2/3)
发信站: 紫 丁 香 (Mon Aug 24 15:01:33 1998), 转信


                    使用新内核代码

    将压缩的文件解压在 /usr/src中会新建一个子目录/usr/src/linux,
这将覆盖你以前版本的内核代码。在解压之前,重命名或拷贝任何存在的
/usr/src/linux(或者新版本内核使用的任何名称)文件,这样万一出了
问题还有一个备份的版本。
    解压了内核源代码后,你需要创建两个到 /usr/include目录的符号
链接(如果它们还没有创建或安装程序没有设置)。通常,链接需要下列命令:
 ln -sf /usr/src/linux/include/linux  /usr/include/linux
 ln -sf /usr/src/linux/include/asm    /usr/include/asm
如果目录名不同于你的 Linux版本,替换掉 /usr/src/linux。没有这些
链接,升级或安装新内核的过程无法进行。
    解压完源代码和建立了链接之后,你就可以开始编译了。要进行编译你
必须有一个版本的 gcc 或 g++(GNU C 和 C++编译器)或其他兼容的
编译器。你可能需要检查一下源代码文档看看你是否有正确版本的编译器;有时
新内核中添加了一些旧版本的 gcc 或 g++ 不支持的特性。
    检查文件 /usr/src/linux/Makefile(或者你的源代码所在的任何
路径的Makefile)。这个文件有一行定义了 ROOT_DEV,Linux引导时作为
根文件系统的设备。通常这行如下:
        ROOT_DEV=CURRENT
如果你有其他值,确保它是符合你的文件系统配置的。如果Makefile没有值,
将它设置成如上行所示。
    编译过程开始于你进入 /usr/src/linux目录并发出如下的命令:
        make config
这将调用 C 编译器的 make 程序。对于 Linux 的不同版本这个过程稍微
不同,因此要检查源代码提供的安装说明。
    config程序提出一系列问题,并提示你回答在编译开始之前必须确定的
配置问题。这些问题可能如你正使用的驱动器、CPU、任何分区、或像CD-ROM
等设备的类型。尽可能回答好这些问题。如果你不能确定,选择缺省的或感觉
最合理的。最坏的情况是你必须重来一次,如果系统不能正确运行的话。(你有
紧急引导盘,对吧?)。
    接下来,你必须设置所有源代码的依赖性(dependencies)。这个步骤
通常被省略,但如果没有对每一个软件版本执行这个过程可能会引起许多问题。
发出下列命令:
        make dep
如果你正安装的软件没有 dep 文件,检查安装说明确保依赖性被其他步骤正确
处理。
    现在你终于可以编译新内核了。启动这个过程的命令是
        make Image
这将编译源代码并在当前目录(通常为 /usr/src/linux)中生成内核映像
文件。如果你想创建一个压缩的内核映像,你应该用下列命令:
        make zImage
但并不是所有的版本或内核的升级支持压缩的内核映像编译。
    这个过程的最后步骤是将新的内核映像文件拷贝到引导(boot)设备或
引导软盘。要将新内核放到软盘上,可用下面的命令:
        cp Image /dev/fd0
    必要时用不同的设备驱动器在硬盘文件系统的其他地方放置内核。如果你
打算用 LILO 来引导操作系统,你可以用安装程序或 /usr/lilo/lilo程序
来安装新内核。不要将新内核覆盖旧的引导盘中的内核。如果新内核不能引导,
你可能还要用旧的引导盘来引导你的系统。
    现在剩下的只是重起机器,看看新内核是否正常装载。如果你有任何问题,
从软盘引导,恢复旧的内核,再重头来一次。检查源代码中的说明,找出你可能
遇到的问题或遗漏的步骤。

                    将设备加入内核

    你可能想将新的设备驱动程序或特殊的软件加入的内核中而不经过升级
内核本身的过程。当你添加了需要在系统引导过程中加载的像多端口板或可选
设备时,这个过程通常是必须的。你也可以将一些安全软件链入内核中。
    附加的内核软件通常提供安装说明,但是,常规的过程是在能找到内核
编译程序的目录(如 /usr/src)中查找源代码的。通知 make 程序将新的
代码加入到内核中可能需要修改 Makefile。你或安装脚本能作这些修改。
由于这个原因一些软件提供自己的 Makefile。
    接着,在将新软件加入后开始编译内核。步骤与前面章节中所述的相同,
将内核安装在引导的地方,或用 LILO 来设置。一般说来,全过程要 10 分钟
左右并且不会出现什么问题,除非修改内核的人作了过多的工作。确保修改工作
提供的源代码适合你的 Linux内核版本。

                    升级库

    大多数 Linux系统上的软件被设置成使用共享库(一系列被许多程序使用
的子程序)。当你升级系统或执行应用程序时,屏幕上出现消息
        Incompatible library version
这表示库已经被更新并需要重新编译。大多数库都是向后兼容,因此现存的软件
在库升级后也应能完全运行。
    库的升级不如内核的升级来得频繁,而且能在相同的地方找到升级软件。
通常有文档指导你如何升级到库的最新版本,或有一个文件解释新版本的操作
系统内核需要哪些库。大多数升级库都是压缩的文件,除了目标目录通常是
/lib,/usr/lib和/usr/include外,解压过程和内核源代码的相同。格式
为libc.so.version的共享库映像文件安装到目录/lib中。
    你可能需要在文件系统内改变符号链接,使它们指向最新版本的库。例如,
如果你以前的版本是libc.so.4.4.1,后来升级到libc.so.4.4.2,你必须
改变在 /lib 中设置的符号链接使之指向这个文件。命令为
  ln -sf /lib/libc/so/4/4/1  /lib/libc.so.4
其中链接命令中的后面部分是在 /lib 中的当前库文件。你的库的名字也可能
不同,因此请先核对目录或版本、安装说明。
    你可能也要用相同的方式改变文件 libm.so.version 的符号链接。
不要删除符号链接;如果你这么做,所有依赖与共享库(包括ls)将无法运行。

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: dip9.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.889毫秒