红联Linux门户
Linux帮助

内核基础知识及升级内核

发布时间:2006-05-28 10:07:36来源:红联作者:chentong
内核是整个*作系统的核心部分。它管理硬件之间的通讯,决定哪个进程运行,提供每一个进程运行所需的相对隔离的虚拟的地址空间。内核由引导程序(grub、lilo)装入系统。内核负责将驱动程序,模块装入系统。自行编译内核以后可以带来以下方面的好处:
极大的提高核心服务的运行速度
提供用户服指定的服务的内核直接支持
对适当的服务以模块化的形式动态支持
通过减少不必要的服务可以降低内核的内存需求
配置支持高端硬件,例如大于4G的内存,硬盘阵列,对称式多cpu
编译内核的建议:
只有在需要的时候才编译内核,直接编译进内核的
东西越少系统运行越快。如果你不需要声卡,你可以从内核移除对声卡的支持。通过移除你不需要的设备,你可以做到减小内核,在不改变设备的情况下提高系统运行的速度。为其它的硬件留下更多的可用资源。
总体而言将各种硬件的设备的驱动作为模块动态的加载和卸载是一个
较好的办法。模块是内核的扩展,虽然没有直接编译进内核,但是可以随需要加载和卸载。
内核概念:
对于系统管理员而言,对系统的内核应该有一定的了解,这样才能更好的编译内核。
单内核与模块化内核
单内核:所有的设备模块直接编译进内核
模块化内核:许多设备已模块的形式单独加载
单内核与设备的通讯速度快,模块化内核与硬件通信要通过模块列表,不行的是单内核过于庞大。大内核减少了可用的内存。有些系统甚至不能启动这样大的内核。Linux过去使用单内核,linux一度在装载模块化内核的时候由于某些硬件而产生问题。使用单内核则系统安装完成之后所有的驱动程序就已经装好了。模块化内核有极大的灵活性。你可以将几乎所有的驱动程序作为模块编译,这样在必要的时候这些模块就会被载入系统。模块化使得内核十分的小,这就减少了启动所需要的时间提高了系统整体性能。
如果linux装载模块的时候产生问题,你可以使用modprobe或者
insmod命令来手动装载模块。
升级内核:升级内合并不像看起来的那么难。你应该总是保留久的内核,以免由于新内核的错误而导致系统无法引导。对grub或者lilo而言新的内核就是一个新的*作系统。如果使用rpm包安装了新的内核,引导程序也自动被升级。如果你犯了一个比较大的错误,导致无法引导,你可以在重新启动后选择使用旧的内核。你应该保存内核配置文件这样你就可以轻松的将其拷贝到新的内核继续使用。详情后续部分将详细介绍。
/boot目录:
linux的内核存储在这个目录里。新的内核也必须存放于这个目录,才能够使用。该目录的莫人大小时100M,足够存储当前的内核以及升级内核的时候的附加内核。
/proc
目录:这个目录基于一个虚拟的文件系统。换句话说她不包含任何存储在硬盘上的文件,但它是查看计算机的一个窗口。如果你要查看当前的内存信息使用该命令:cat
/proc/meminfo
Ip forwarding:查看当前状态:cat
/proc/sys/net/ipv4/ip_forward,若输出为
1,则该功能已开启,若为0,则未开启。
开启ip forward:echo 1
>> /proc/sys/net/ipv4/ip_forward
阻止ping of death攻击:#echo 1 >>
/proc/sys/net/ipv4/tcp_syncookies
理解内核模块:
当你编译内核的时候,你可以将所有的需要的驱动程序编译成进内核,成为一个单内核。但是这样的内核太大了,并且需要很长的时间加载。大多数的系统管理员使用内核模块。内核模块并不直接编译进内核,而是根据需要动态的进行加载和卸载。如果和内核模块相关的硬件除了问题,你可以使用kudzu。这是一个自动检测和配置工具,一般在系统启动的时候自动运行,当然了你也可以手工运行这个工具来排除故障。Kmod是模块加载控制器,负责内核模块的加载和卸载。指定特别的选祥和参数可以修改/etc/modules.conf文件。大多数的硬件都可以自动检测到,对于未识别到的硬件可以执行:depmod
-a
手工加载模块使用:modprobe例:#modprobe pcnet32
查看当前加载的模块:#cat
/proc/modules或者#lsmod
卸载模块:rmmod -r pcnet32

升级内核

1、关于内核版本
内核版本号的形式一般都是这样的:x.x.x例如:2.4.21
第一个数字表示主版本号,第二个数字表示辅助版本号,第三个号码代表patch的号码。主版本号的变更往往意味着很大的改变,可能会有很多程序不能够在新的内核上使用。辅助版本号有两个含义:第一主版本内核的第x个版本,第二x若为奇数则表示该版本为正在开发中的版本,不适合生产使用,若为偶数则表示该版本为稳定的可靠版本,可以用于生产。最后一个号码代表patch即补丁的版本号。
2、升级内核
新的内核往往会包含着新的技术,意味着系统可以支持更多的设备,也意味着更好的稳定性和更快的性能。所以系统管理员可能会需要对内核进行升级。升级内核主要有两种方式:
1、
rpm包升级方式 从网上下载已经编译好的rpm内核软件
包,然后进行安装,例:rpm -ivh
kernel-2.4.21-8.i386.rpm
2、 使用内核的源码包编译安装。
这部分较为复杂,在后续章
节进行详细论述,此处略过。
3、内核补丁
为了使你的系统运行的更加的稳定、高效,你可能经常要给你的系统打补丁,例如从2.4.20到2.4.21。内核补丁可以很容易的从网上下载到。安装也很容易,例:
#zcat
pathch-2.4.22.gz | patch -p0
3、 制作引导盘
#mkbootdisk
“当前内核的版本号”
例:mkbootdisk 2.4.20
#dd if=/mnt/cdrom/images/bootnet.img
of=/dev/fd0
从光盘创建安装引导盘
4、
内核资源
linux的优点之一是你可以格局你的需要对内核自
由进行裁减编译,使之符合自己的需要。要编译内核就要先了解linux的源代码。一旦安装了源码包,你就会在/usr/src目录中看到如下子目录:
debug、redhat、linux-2.4、linux-2.4.21-4.EL。linux-2.4是linux-2.4.21-4.EL的符号链接文件。安装内核源码包使用如下命令
#mount
/mnt/cdrom
#rpm -Uvh /mnt/cdrom/RedHat/RPMS/kernel-source-*
或者你可以下载linux
tar file,即以tar.gz的形式发行的源码包。
4、 重新编译内核
将下载好的内核解压缩到:/usr/src/目录下
#cd
/usr/src/ 进入该目录
#ln linux-2.4.26 linux-2.4 创建该目录的符号链接文件
#cd linux-2.4
进入内核目录
修改Makefile文件,找到包含EXTAVERSION的行将其改为EXTRAVERSION=qun
#make mrproper
确保源文件的一致性
#make xconfig 选择需要编译进内核的功能
#make dep 解决依赖性
#make bzImage
生成内核
#make modules 编译内核模块
#cp usr/src/linux-2.4/arch/i386/boot/bzImage
/boot/vmlinuz-2.4.26qun
#make modules_install 安装内核模块
#mkinitrd
/boot/initrd-2.4.26qun.img 2.4.26qun 生成启动镜像文件
# cp
/usr/src/linux-2.4/System.map /boot/System.map-2.4.26qun
#vi /etc/grub.conf #
在最后部分添加如下行:
title Red Hat Linux (2.4.26qun)
kernel /vmlinuz-2.4.26qun ro
root=LABEL=/
initrd /initrd-2.4.26qun.img
:wq!
#reboot
重新启动后就可以看到刚刚安装好的内核了。
#对于2.6的内核而言,步骤就简单了很多只需要这几个命令:
make xconfig、make、make
install
文章评论

共有 14 条评论

  1. chambersqj 于 2009-10-15 23:00:42发表:

    对于2.6的内核而言,步骤就简单了很多只需要这几个命令:
    make xconfig、make、make
    install
    呵呵,进步啊!!谢谢楼主

  2. alp2502 于 2009-10-15 15:12:12发表:

    学习了

  3. 自在 于 2009-10-15 10:39:15发表:

    学习

  4. 59.25.9.* 于 2007-07-19 06:02:19发表:

    ringtones free

  5. 194.88.214.* 于 2007-07-19 06:02:13发表:

    http://www.ringtones-dir.net/get/ ringtones site. ringtones site, Free nokia ringtones here, Download ringtones FREE. From website .

  6. 194.88.214.* 于 2007-07-19 06:01:52发表:

    http://www.ringtones-dir.net/get/ ringtones site. ringtones site, Free nokia ringtones here, Download ringtones FREE. From website .

  7. 194.88.214.* 于 2007-07-19 06:01:40发表:

    http://www.ringtones-dir.net/get/ ringtones site. ringtones download: ringtones site, Free nokia ringtones here, Download ringtones FREE. samsung ringtones From website .

  8. 194.88.214.* 于 2007-07-19 06:01:24发表:

    http://www.ringtones-dir.net/download/ download ringtones. nokia ringtones: ringtones site, Free nokia ringtones here, Download ringtones FREE. http://www.ringtones-dir.net/free/ [link=http://www.ringtones-dir.net]ring tones[/link] From site .

  9. 194.88.214.* 于 2007-07-19 06:01:23发表:

    http://www.ringtones-dir.net/download/ download ringtones. nokia ringtones: ringtones site, Free nokia ringtones here, Download ringtones FREE. http://www.ringtones-dir.net/free/ [link=http://www.ringtones-dir.net]ring tones[/link] From site .

  10. 194.88.214.* 于 2007-07-19 06:00:54发表:

    http://www.ringtones-dir.net/download/ download ringtones. nokia ringtones: ringtones site, Free nokia ringtones here, Download ringtones FREE. http://www.ringtones-dir.net/free/ [link=http://www.ringtones-dir.net]ring tones[/link] From site .

  11. 194.88.214.* 于 2007-07-19 06:00:32发表:

    http://www.ringtones-dir.net/download/ download ringtones. nokia ringtones: ringtones site, Free nokia ringtones here, Download ringtones FREE. http://www.ringtones-dir.net/free/ [link=http://www.ringtones-dir.net]ring tones[/link] From site .

  12. dzjxj1 于 2006-07-22 12:09:33发表:

    支持,我顶顶

  13. nxfte 于 2006-07-17 15:36:37发表:

    受教了

  14. WW486 于 2006-07-06 22:25:19发表:

    受益非浅啊!