网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 内核 > 文章  
Linux操作系统的内核编译内幕详解
文章来源: 赛迪网开发者论坛 文章作者: IHH 发布时间: 2005-09-21   字体: [ ]  
 

  如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。

  如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。

  内核编译详解

  新版本内核的获取和更新

  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

 
推荐文章
·浅谈关于Linux系统内核的源代码
·打造适合自己Slackware机器的内
·自己动手做一个最小的Linux kern
·一个Linux爱好者的2.6.11内核编
·定制Linux系统内核,发挥Linux潜
·如何编译一个操作系统内核-Ubunt
·重新编译Linux操作系统的内核指
·快速编译Linux内核需要的模块方
·编译内核以使其支持PS并口改装手
·编译支持NTFS的Linux系统内核模
·配置、编译Linux系统内核的实用
·Linux操作系统的内核编译详细步
·Linux基础知识:内核编译-内核管
·教你一招,给Linux内核补IPVS补
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·Linux中的Ramdisk与Init
·Linux 初始 RAM 磁盘(i
·一个Linux爱好者的2.6.1
·自己动手做一个最小的Li
·如何在Linux系统中添加
·如何编译一个操作系统内
·udev轻松上路
·Linux2.6内核驱动移植
相关文章
·Linux操作系统的内核编
·Linux基础知识:内核编
·让你的Linux内核重编译
·教你一招,给Linux内核
·配置、编译Linux系统内
·编译支持NTFS的Linux系
·精华:升级Linux操作系
·编译内核以使其支持PS并
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统