荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: worldhero (一生,求索.), 信区: Linux
标  题: Linux编译内核详解(二)
发信站: BBS 荔园晨风站 (Sat Nov  4 13:06:31 2000), 转信

内核编译详解

新版本内核的获取和更新

Linux内核版本发布的官方网站是http://www.kernel.org,国内各大ftp上一
般都可以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内
核版本,另外一种是patch文件,即补丁。完整的内核版本比较大,比如linux-2.
4.0-test8.tar.bz2就有18M之多,网速快的用户可以下载使用。完整内核版本一般
是.tar.gz(.tgz)文件或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩
的文件,使用时需要解压缩。patch文件则比较小,一般只有几十K到几百K,极少
的会超过1M,网速慢的用户可以使用patch文件来升级内核。但是patch文件是针对
于特定的版本的,你需要找到自己对应的版本才能使用。
编译内核需要root权限,以下操作都假定你是root用户。请把你需要升级的内
核拷贝到/usr/src/下(下文中以2.4.0test8的内核的linux-2.4.0test8.tar.gz为
例),命令为

#cp linux-2.4.0test8.tar.gz /usr/src

让我们先来查看一下当前/usr/src的内容,注意到有一个linux的符号链接,
它指向一个类似于linux-2.2.14(对应于你现在使用的内核版本号)的目录。首先
删除这个链接:

#cd /usr/src
#rm -f linux

现在解压我们下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,请使用
下面的命令:

#tar -xzvf linux-2.4.0test8.tar.gz

如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的
命令

#bzip2 -d linux-2.4.0test8.tar.bz2
#tar -xvf linux.2.4.0.test8.tar

现在让我们再来看一下/usr/src下的内容,你会发现现在有了一个名为linux
的目录,里面就是我们需要升级到的版本的内核的源程序。还记得那个名为linux
的链接么?之所以使用那个链接就是防止在升级内核的时候会不慎把原来版本内核
的源程序给覆盖掉了。我们也需要同样处理:

#mv linux linux-2.4.0test8
#ln -s linux-2.4.0test8 linux

这样我们也有了一个名为linux的符号链接,就不用担心以后会把它覆盖掉了(也
许你会觉得重新建立linux的符号链接没有必要,但实际上这是必不可少的,下文
中会有介绍)。如果你还下载了patch文件,比如patch-2.4.0test8,你就可以进
行patch操作(下面假设patch-2.4.0test8已经位于/usr/src目录下了,否则你需
要先把该文件拷贝到/usr/src下):

#patch -p0 < patch-2.4.0test8

现在,我们已经把内核源程序升级到最新版本了,下面就让我们开始内核编译
的旅程吧。

准备工作

通常要运行的第一个命令是:

#cd /usr/src/linux;make mrproper

该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用
刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些
源程序编译内核,那么最好要先运行一下这个命令。
确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源
代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说
,使用的体系结构是i386)所需要的真正的include子目录。如:asm指向
/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照
下面的步骤进行:

# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi

这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接
后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含
着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们
上面又在/usr/src下"多余"地创建了个名为linux的链接了吧?

--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.36.85]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店