编译linx内核

来源:互联网 发布:深圳快乐彩开奖数据 编辑:程序博客网 时间:2024/05/17 23:37

第一步:当前2.6内核的安装(获取)
  首先,所有Linux内核的官方版本可以在http://kernel.org/.   找到。通过镜像站点下载内核程序可以比较快捷迅速些。kernel.org   镜像站点列表:http://kernel.org/mirrors   。
  然后下载GnuPG   ,它主要用于检验新的内核程序的真实性和合法性。(http://www.kernel.org/signature.html.)
第二步:熟悉已有文件
  至少需要熟悉顶级README文件、Documentation目录中的change文件,它们都是分布式的Linux内核源代码。
  因为2.6.0-test是内核发展中的一个阶段(2.6.0没有扩展名-test,即是2.6的最初版本),所以其顶级README文件引自2.5开发内核的README文件。你将从这个文件中获得许多成功编译Linux内核的技巧。(具体内容见附1)
  “Documentation/Changes”文件列出了发展2.5内核的新需求,提供了新内核程序升级的软件列表。(主要内容见附2)
  第三步:升级系统内每个change文件的版本
  新的2.6内核的升级工作涉及到许多实用程序的升级。对于某些change文件中列出的实用程序也不必担心,它们或许只是某种文件系统的特殊例子而已。但是,下面的文件还是必须至少要满足到下表给出的的最低版本:
Name:   Minimum   version:   How   to   find   version:  
Gnu   C   Compiler   2.95.3   gcc--version  
Gnu   Make   3.78   make--version  
binutils   2.12   ld-v  
util-linux   2.10o   fdformat--version  
module-init-tools   0.9.9   depmod-V  
procps   2.0.9   ps--version  
[procps   2.x]   [procps   .x]  
  (若有变动,参见“Documentation/Change”中的最新更新。具体可见附2)
  下面的实用程序是文件系统中的特殊程序。若运行ext2   或ext3,那么就必须升级e2fsprogs。若运行jfs,就必须升级jfsutils,等等。如:
Name:   Minimum   version:   How   to   find   version:  
e2fsprogs   1.29   tune2fs  
jfsutils   1.0.14   fsck.jfs   -V  
reiserfsprogs   3.6.3   reiserfsck–V   2> &1|   grep   reiserfsprogs  
xfsprogs   2.1.0   xfs_db   -V  
nfs-utils   1.0.5   showmount   --version  
  另外,少数实用程序当你用到它时才需要升级的有:
Name:   Minimum   version:   How   to   find   version:  
pcmcia-cs   3.1.21   Cardmgr   -V  
quota-tools   3.09   Quota   -V  
PPP   2.4.0   ppd--version  
isdn4k-utils   3.1pre1   Isdnctrl   2> &1   |   grep   version  
oprofile   0.5.3   oprofiled--version  
  如果首次运行ALSA,请访问http://www.alsa-project.org/获取最新的alsa-lib   和   alsa-utils。
第四步:配置新内核
  这里,你所注意到的首要变化之一就是新的结构体系的形成。旧的TK/Tcl“xconfig”结构由新的QT“xconfig”所取代。当然,GTK“gconfig”也行。
  2.6内核配置包括:
  Make   config  
  与2.4内核配置“config”相似,做为简单的配置方法,它仅仅要求你选择每个配置选项。需要“bash”。
  Make   menuconfig
  与2.4内核配置的“menuconfig”相似。
  Make   xconfig
  新的默认的图形化的配置系统,利用了QT库。它非常方便易用。
  Make   gconfig
  该选项是xconfig的新的克隆,用GTK库代替了QT库。不幸的是,在测试中发现其中有bug。运行时会不停的重复提示同样的错误信息。
  Make   oldconfig
  在内核升级中,该选项非常有用。乍一看它有点象简单的“make   config”,实际上,oldconfig是读取和自动响应设置当前的.config设置。它向你提示新的配置选项的功能。如要用,只需简单地复制入你的old.config文件,再运行“make   oldconfig”即可。
  (注:首次配置2.6内核时,查看Linux代码顶级README文件时请注意以下技巧:   ①多余的驱动将增大内核,在一定条件下会导致问题的出现
  ②内核hacking配置信息的选择常常导致内核更庞大更缓慢,甚至导致内核的不稳定。因此在回答“development”、“experimental”或“debugging”特征时多数选择“N”。)
  ALSA:
  从2.4版本到2.6版本的升级,这就要使用到ALSA(Advanced   Linux   Sound   Architecture即:新的   Linux   音频体系结构)。它取代了OSS(Open   Sound   System)。配置内核时,选定ALSA的OSS   API效法选项(SND_OSSEMUL、SND_MIXER_OSS和SND_PCM_OSS)和适当的声音驱动(PCI   驱动)。最后,下载和安装最新的alsa-lib和alsa-utils。
 第五步:创建新内核
  创建2.6内核比2.4的更容易些,不必进行“make   dep”这一步。创建新的内核,进行“make   bzlmage”。如果选择了编译模块,那么还需要运行“make   modules”和“make   modules_install”。可以一起进行:“make   bzlmage   &&   make   modules   &&   make   modules_install”。
  第六步:安装新内核
  创建了内核,需要将之复制到一个位置,若x86的机子,其位置路径就是“arch/i386/boot”。拷贝该文件和新的体系.map到根目录/boot下。例如:
  #   pwd
  /usr/src/linux-2.6.0-test4
  #   mv   arch/i386/boot/bzImage   /boot/bzImage-2.6.0-test4
  #   mv   System.map   /boot/System.map-2.6.0-test4
  #   cd   /boot
  #   rm   System.map
  #   ln   –s   System.map-2.6.0-test4   System.map
  拷贝了新内核后,然后是使用grub和lilo配置根loader。有个发现就是新的2.6内核比用同样版本的gcc编译的2.4内核更大,或许是在编译时选了更多选项的缘故吧。
  -rw-r--r-- 1   root    root    1094390   Aug   12   20:30   bzImage-2.4.21-ck3
  -rw-r--r-- 1   root    root    1639129   Aug   27   22:06   bzImage-2.6.0-test4
  第七步:确认数据的备份
  这一步,你不用做任何或许会破坏到硬盘数据的事,但下一步即是启动新内核,最后一次请确认硬盘重要数据已备份。   第八步:试用新内核
  现在,重启计算机,测试新编译的2.6内核。如果所有步骤正确,将会出现内核启动信息:initstate=3,新的内核很快就出现。如果安装了ALSA,可以检验声音驱动:   'cat   /proc/asound/cards '。例如:
  $   cat   /proc/asound/cards
  0   [Live]:EMU10K1   -   Sound   Blaster   Live!  
  Sound   Blaster   Live!   (rev.5)   at   0x18e0,   irq   11
  如果出现以上信息,说明声音程序没运行,启动“alsamixer”并确认驱动已经开启。另外发现还需开启“Master”和“PCM”   (/dev/dsp),声音程序才能正常运作
附1
  README——Linux   内核2.5.xx(部分数据)
  讲述了内核的安装方法和出错的处理方法。
  内核的安装
  安装了所有必须的资源后,将内核解压缩在许可目录下(如主目录):
  gzip   -cd   linux-2.5.XX.tar.gz   |   tar   xvf   -     (XX为新内核的版本号)
  注:不得用/usr/src/linux
  通过补丁升级2.5.xx版本。
  gzip   -cd   ../patch-2.5.xx.gz   |   patch   -p1或bzip2-dc   ../patch-2.5.xx.bz2   |   patch   -pl或linux/scripts/patch-kernel   linux
  删除旧的.o文件及其附属文件  
  cd   linux
  make   mrproper
  软件需要
  编译和运行2.5.xx内核必须要升级各种软件包的新版本。参见./Documentation/change中需要的最低版本。
  编译内核
  ⑴确定gcc   2.95.3版本以上
  ⑵   make   bzImage   (如果用磁盘启动则插入A盘再进行make   bzdisk)
  ⑶   make   modules   (若编译部分modules,则在“make   modules_install”后执行)
  ⑷   保留一份内核的备份件
  ⑸   启动新内核
  新内核的拷贝。编译后的新内核在.../linux/arch/i386/boot/bzImage可找到,将之拷贝到可启动的位置。若是软盘驱动的,将内核的bzImage文件拷贝到/dev/fd0形成可启动的软驱。若是硬盘启动,则用LILO(/etc/lilo.conf)。内核映象文件常常是/vmlinuz、/boot/vmlinuz、/bzImage或/boot/bzImage。保存新的内核映象文件覆盖旧的,然后再运行LILO,就可以启用新内核了。
  重新设置LILO是运行/sbin/lilo的关键。你可通过编辑/etc/lilo.conf来指定旧的内核映象(即是/vmlinux.old)的出口以避免新内核运行出现问题。LILO重设后,所有准备工作就都做好了,然后就是关闭系统,重启计算机。
  注:如果需要改变缺省的root驱动、video   方式、ramdisk大小等等,可在内核映象中用“rdev”程序(或LILO的引导选项)。不必重新编译内核来改变这些参数。
  ⑹重新启动新内核

原创粉丝点击