QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2922|回复: 1

RHEL AS 4下内核编译详解

[复制链接]
发表于 2006-1-10 16:17:39 | 显示全部楼层 |阅读模式
本稿专供中国Linux公社,如须转载,请注明出处并保留作者信息

RHEL AS 4下内核编译详解
作者:Parh     MSN space: http://spaces.msn.com/members/paulparh/
               Blog: http://blog.donews.com/Parh/

前言  RHEL AS 4是redhat 公司的一个优秀的发行版,十分稳定。同时也十分易用。但易用同时也意味着更傻瓜化。安装过程的简化省去了许多的麻烦,对内核的配置少到没有。这固然方便了普通的用户。但如果追求更高效的内核或更新的硬件支持,就需要自己来编译内核了。笔者近日因为显卡的需要而编译安装了最新的2.6.14的内核,编译过程中详细查看了内核压缩包内的readme文件,参考了一些技术文档,现在将详细过程写出来,希望能供大家参考。

一、准备  首先下载内核的压缩包,注意,需要完整的压缩包,而不是文件名里有patch的那种,那种是用来升级的。用升级包来升级的话出错就进不了系统,无法调整所以风险较大,这里不予讨论。将压缩包解压后得到类似linux-2.6.14的文件夹,将这一文件夹移动到 /usr/src/ 下。此时确保你已经正确安装gcc,编译工作马上就可以开始了。

二、编译  

[paul@ParhWorkStation ~]$ su                
Password:
  获得root的权限。

[root@ParhWorkStation paul]#cd /usr/src/linux-2.6.14           
  进入内核目录。

[root@ParhWorkStation linux-2.6.14]#make mrproper
  清除从前编译遗迹,注意这一步必不可少,少了这一步会导致编译出错。                     

[root@ParhWorkStation linux-2.6.14]#make gconfig
  打开图形化的配置菜单,Gnome的用户执行make gconfig(基于Gtk),KDE的用户执行make xconfig(基于Qt)。当然还可以选择make menuconfig或make config,如果你想体验一下linux前辈们的辛苦的话。
  在配置的过程中,有几点要提一下。配置的选项大部分是对硬件的支持,你一定对自己电脑的硬件很熟悉,那么那些多余的乱七八糟的驱动就可以去掉了。每一次对选项的双击会使选项遵循由Y-->M-->N的循环,Y是编译进内核,M是编译成模块,N是不进行编译。Y的话是钩,M的话是杠,N的话就是空的啦。编译进内核的话就是只要系统在跑,编译的功能就在运行,而编译成模块则是用的着的时候才加载到内核中运行,用不着的时候可以从内核中卸载,以释放内存,这显然是Linux内核的一个巨大优点。因此一般的硬件驱动都可以编译成模块,只有几个例外,其中就有硬盘控制器的驱动。
  为什么硬盘控制器不能编译成模块  当你最初引导内核的时候,引导的其实是一个驻留在/boot下的内核的压缩镜像,由这个镜像挂载硬盘分区和文件系统,进而读取分区上的数据,同时加载模块。如果没有将硬盘控制器驱动编译进内核,内核就无法读取分区,更不可能加载模块了!怎么?还没理解?想想先有鸡还是先有蛋吧!
  因此,要特别注意选项里对SCSI或是IDE硬盘的支持,根据自己的情况将选项选为Y,同时建议将主分区(即挂载在/上的分区)分区格式的支持也编译进内核。例如ext3。
  在新的内核中ntfs分区格式的支持已经包括,很好用。
  另外要提的一点是'development', 'experimental', 'debugging'这几个在'kernel hacking'下的选项,除非你真的需要,(不过反过来,如果你需要的话就不会来看本文这么初级的文章了)不要选它们。它们会使你的内核更大,也更慢。
  配置好之后可以选择 'Save as...'l来以文本的形式备份所作的配置,这样如果需要再次编译,就不用重新一项项选了。最后保存,关掉窗口。

[root@ParhWorkStation linux-2.6.14]#make
  开始编译,这时可以吃点零食犒劳一下,或者去床上数几只绵羊。这个过程会持续一会儿,长度与你电脑的内存成反比。如果实在不耐烦,考虑加内存吧。

[root@ParhWorkStation linux-2.6.14]#make modules_install
  编译好后执行这个命令安装模块,这个过程快多了。好了,编译就到这里。

三、安装

[root@ParhWorkStation linux-2.6.14]#cp /usr/src/linux-2.6.14/arch/i386/boot/bzImage /boot/vmlinuz-2.6.14
[root@ParhWorkStation linux-2.6.14]#cp System.map /boot/System.map-2.6.14
  这是将编译过程中产生的镜像复制到/boot分区下,使Grub(假定你安装时选择默认的引导器)能够引导。

[root@ParhWorkStation linux-2.6.14]#/sbin/new-kernel-pkg --mkinitrd --depmod --install 2.6.14
  redhat提供这么一个工具用来生成引导时的initrd文件,里面包含了启动系统的初始信息。同时,--install参数更新了/boot/grub/grub.conf 中的信息,添加了新内核的引导项。如果你不满意默认的引导标题等等,可以自己vim /boot/grub/grub.conf,那个配置文件可读性很强的,不会有问题。
  
如果有激活SELinux,那么请vim /etc/selinux/config,将SELinux disable掉,因为新内核可能无法加载SELinux。

四、重新启动

[root@ParhWorkStation linux-2.6.14]#reboot
  废话一句。

结束语
  恭喜!你现在应该已经能运行新内核了!好好玩吧!
  如果在RHEL AS 4上编译有什么问题的话,尽量提出来,最好把错误信息也贴上来,大家可以讨论,相互学习。  

    评论和讨论也可前往 http://blog.donews.com/Parh/archive/2006/01/10/689634.aspx
发表于 2006-3-17 15:57:22 | 显示全部楼层
AS4在安装时先那个才能在完装后在/usr/src 下面有核的文件夹?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-3-29 13:04 , Processed in 0.066542 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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