linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 内核研究 >
栏目导栏
资料搜索
热门文章
·linux-2.6内核升级文档
·Linux源代码的注释
·linux2.6内核编译方法详述
·Linux操作系统内核编译详解
·Linux内核结构详解
·Linux配置与编译内核
·定时器
·Linux内核升级全攻略
·FC5(Fedora Core5)下编译内核总
·Ubuntu 6.06 dapper 内核编译初
·Linux 内核编译详解
·Linux内核管理基础知识概述
·Linux2.4升级到2.6内核升级指南
·第八章 设备驱动
·如何编译linux内核
最新文章
·Linux Kernel 最新稳定版2.6.2
·Kernel硬件中断的初始化流程
·Linux内核bootsplash功能的实现
·Linux内核2.6.25全新发布加入众
·Debian Linux系统编译内核标准
·Linux2.4内核和2.6内核对Initr
·2.6.24内核编译 initrd-2.6.24
·Qtopia应用程序与Linux内核数据
·Linux 2.6内核中sysfs文件系统
·Linux2.6内核驱动移植参考
·Andrew Morton:Linux内核的执法
·Fedora 8 Linux系统的内核配置
·Kernel中的irq.c函数
·Linux核心出现权限扩张及记忆体
·Linux 2.6本地权限提升漏洞
Google
 
linux-2.6内核升级文档
[ 作者:  加入时间:2005-11-25 10:46:58  来自: ]
 
做一件事情,首先要知道自己在干什么,而不是盲目得升级内核,现在升级内核有点泛滥,sigh
首先让我们先了解一下2.6内核的新特性

一、01.模块子系统(Module Subsystem)、统一设备模型(Unified Device Model)和 PnP 支持
模块子系统发生了重大变化。

02.稳定性有所提高
为了彻底避免内核加载或者导出正在被使用的内核模块,或者至少为了减少加载或者卸载模块的同时使用该模块的可能性
(这有时会导致系统崩溃),内核加载和导出内核模块的过程都得到了改进。

03.统一设备模型
统一设备模型的创建是 2.6 内核最重要的变化之一。它促进了模块接口的标准化,其目的是更好地控制和管理设备,例如:

更准确地确定系统设备。
电源管理和设备电源状态。
改进的系统总线结构管理。

04.即插即用(PnP)支持
1.1.1 和 1.1.2 小节中提及的变化使得运行 2.6 内核的 Linux 成为一个真正即插即用的 OS。
例如,对 ISA PnP 扩展、遗留 MCA 和 EISA 总线以及热插拔设备的 PnP 支持。

05.内核基础设施的变化
为了区别以 .o 为扩展名的常规对象文件,内核模块现在使用的扩展名是 .ko。
创建了新的 sysfs 文件系统,当内核发现设备树时就会描述它。
内存支持,NUMA 支持
支持更大数量的 RAM
2.6 内核支持更大数量的 RAM,在分页模式下最高可达 64GB。

06.NUMA
对非一致内核访问(Non-Uniform Memory Access - NUMA)系统的支持是 2.6 内核中新出现的。

07.线程模型,NPTL
相对于 v2.4 的 LinuxThreads,在版本 2.6 中新出现的是 NPTL(Native POSIX Threading Library)。
NPTL 为 Linux 带来了企业级线程支持,提供的性能远远超过了 LinuxThreads。它所基于的用户与内核线程的比率是 1:1。

在 2003 年 10 月,GNU C 程序库 glibc 中融入了 NPTL 支持,Red Hat 率先在 Red Hat Linux 9 和
Red Hat Enterprise Linux 中使用定制的 v2.4 内核实现了 NPTL。

08.性能改进
新的调度器算法
2.6 Linux 内核引入了新的 O(1) 算法。在高负载情况下它运行得特别好。新的调度器基于每个 CPU 来分布时间片,
这样就消除了全局同步和重新分配循环,从而提高了性能。

内核抢占(Kernel Preemption)
新的 2.6 内核是抢占式的。这将显著地提高交互式和多媒体应用程序的性能。

I/O 性能改进
Linux 的 I/O 子系统也发生了重大的变化,通过修改 I/O 调度器来确保不会有进程驻留在队列中过长时间等待进行输入/输出操作,
这样就使得 I/O 操作的响应更为迅速。

快速用户空间互斥(Fast User-Space Mutexes)
“futexes”(快速用户空间互斥)可以使线程串行化以避免竞态条件,引入它也提高了响应速度。
通过在内核空间中部分实现“futexes”以允许基于竞争设置等待任务的优先级而实现改进。

09.扩展性改进
处理器数目更多
Linux 内核 2.6 最多可以支持 64 个 CPU。支持更大的内存,归功于 PAE(物理地址扩展,Physical Address Extensions),在 32-位系统上分页模式下所支持的内存增加到了 64GB。

用户和组
惟一用户和组的数量从 65,000 增至 40 多亿,也就是从 16-位增加到了 32-位。

PID 的数量
PID 的最大数量从 32,000 增至 10 亿。

打开文件描述符的数量
打开文件描述符的数量没有增加,但是不再需要事先设置该参数,它将自行调节。

10.支持更多的设备
在 Linux 内核 2.6 之前,内核中有可以约束大型系统的限制,比如每条链 256 个设备。v2.6 内核彻底地打破了这些限制,
不但可以支持更多类型的设备,而且支持更多同类型的设备。在 Linux 2.6 系统中,可以支持 4095 种主要的设备类型,
每一个单独的类型可以有超过一百万个子设备。
文件系统大小
Linux 内核 2.6 所允许的可寻址文件系统大小最大为 16 TB。

11.文件系统
ext2、ext3 和 ReiserFS 等传统 Linux 文件系统得到了显著的改进。最值得注意的改进是扩展属性(或文件元数据)的引入。
最重要的是 POSIX ACL 的实现,这是对普通 UNIX 权限的扩展,可以支持更细化的用户访问控制。

12.除了对传统 Linux 文件系统的改进支持以外,新的内核完全支持在 Linux 中相对较新的 XFS 文件系统。
Linux 2.6 内核现在还引入了对 NTFS 文件系统的改进的支持,现在允许以读/写模式安装 NTFS 文件系统。

基于以上2.6的新特性,我决定用2.6的内核,我的系统为Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
硬件环境为DELL 2850

一、下载解压并打上内核补丁
我以2.6.10为例子,patche以bk4的例子,目的只是让大家知道怎么打patch,
其实本人用的是2.6.6的内核,因为在AS3.0上升级到2.6.9以上的内核,
mount大的nfs网络硬盘时,df 显示不正确,明明是800G的盘变成4.2G,
不过还是能正常用,我升级过nfs和mount的包都没用,/var/log/message里
提示是kernel: nfs warning: mount version older than kernel
还望知道的 告知一声,谢 :) BTW:2.6.8的内核没用过

内核源代码:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2
最新内核补丁:http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.10-bk4.bz2

cd /usr/src
rm -rf linux
tar jxf /download/linux-2.6.10.tar.bz2
ln -s linux-2.6.10 linux
cd linux
bunzip2 -dv /download/patch-2.6.10-bk4.bz2 |patch -p1
如果在/usr/src目录下就用patch -p0

二、修改内核源代码 (升级2.6就是为了优化,干脆连源代码也改了吧)

1.修改/usr/src/linux/include/linux/posix_types.h
设置fd_set支持的最大数量
#define __FD_SETSIZE 1024 ---> 65536

2.修改/usr/src/linux/include/linux/fs.h
设置最大打开文件数量(TCP连接数量)
#define INR_OPEN 1024 ---> 65536
#define NR_FILE 8192 ---> 65536
#define NR_RESERVED_FILES 10 ---> 128

3.修改/usr/src/linux/include/net/tcp.h
设置TIMEOUT的时间为1秒
#define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ
设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上 也是减少重试时间
#define TCP_SYNACK_RETRIES 5 ---> 3

针对RHEL-AS3本来就是稳定+优化的,不过就算你用 RHEL-AS3 自己的内核,那也要修改一下上面的参数才好呀 :)

三、安装必要的工具

1.下载module-init-tools-3.1.tar.bz2
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.1.tar.bz2
代码:
        ./configure --prefix=/
        make moveold
        make all install
        ./generate-modprobe.conf /etc/modprobe.conf

2.下载新的mkinitrd
ftp://195.220.108.108/linux/6/fedora/core/3/i386/os/Fedora/RPMS/mkinitrd-4.1.18-2.i386.rpm
它需要lvm2 device-mapper
ftp://195.220.108.108/linux/6/fedora/core/3/i386/os/Fedora/RPMS/device-mapper-1.00.19-2.i386.rpm
ftp://195.220.108.108/linux/6/fedora/core/3/i386/os/Fedora/RPMS/lvm2-2.00.25-1.01.i386.rpm
如果不更新这个包在make install时会提示以下错误:
代码:
        No module mptbase found for kernel 2.6.10-bk4, aborting.
        mkinitrd failed
        make[1]: *** [install] Error 1
        make: *** [install] Error 2

安装lvm2-2.00.25-1.01.i386.rpm时请用rpm -ivh --nodeps package name

四、make menuconfig
代码:
01.Code maturity level options    --->
        [*] Prompt for development and/or incomplete code/drivers                 
        [*]   Select only drivers expected to compile cleanly                           
    02.General setup  --->
        [*] Support for paging of anonymous memory (swap)                     
        [*] System V IPC                                                                 
        [*] POSIX Message Queues                                                         
        [ ] BSD Process Accounting                                                     
        [*] Sysctl support                                                                 
        [ ] Auditing support                                                               
        [ ] Support f Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
分页:[1] 2 3 4 5 6 7
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息