数学建模社区-数学中国

标题: linux-2.6内核升级文档(全) [打印本页]

作者: 韩冰    时间: 2005-1-20 14:35
标题: linux-2.6内核升级文档(全)
<FONT color=#f70909>作者:killua   来源:http://www.chinaunix.net/</FONT>
6 l) B' U2 m9 _5 P+ X2 s<>序 # i  ?8 M, m9 [& j& o; n; u; X! J& V  p
做一件事情,首先要知道自己在干什么,而不是盲目得升级内核,现在升级内核有点泛滥,sigh
( ~4 k' H! r, z; S! N- {首先让我们先了解一下2.6内核的新特性 </P>
  n5 a. Z0 f4 x6 s3 t( o<>一、01.模块子系统(Module Subsystem)、统一设备模型(Unified Device Model)和 PnP 支持
9 x( `% q+ b/ v6 V! @7 T0 @! h$ e模块子系统发生了重大变化。 </P>
( g$ f6 r% G/ Y8 g1 b) ^' W+ R<>02.稳定性有所提高 ! \, q  ]7 W7 Q+ [& i5 G
为了彻底避免内核加载或者导出正在被使用的内核模块,或者至少为了减少加载或者卸载模块的同时使用该模块的可能性 7 Z: H5 _6 ~" d* m3 @( x1 [
(这有时会导致系统崩溃),内核加载和导出内核模块的过程都得到了改进。 </P>
/ A" S/ l3 Z# t9 n8 e$ c<>03.统一设备模型 7 \/ K' Q% v$ j7 y& Z# @0 j
统一设备模型的创建是 2.6 内核最重要的变化之一。它促进了模块接口的标准化,其目的是更好地控制和管理设备,例如: </P>3 n/ |) ~% \. z* b8 ?
<>更准确地确定系统设备。
1 N/ R' }( x# p) m. E# x# w. j- t* p电源管理和设备电源状态。 4 A; ]( M# V3 A) D) \
改进的系统总线结构管理。 </P>, u- e& f) N! H6 l- C
<>04.即插即用(PnP)支持 ( r: O* u+ E" P$ Z. z# M! e# ]  m0 O
1.1.1 和 1.1.2 小节中提及的变化使得运行 2.6 内核的 Linux 成为一个真正即插即用的 OS。 2 c9 d& Y/ R8 x
例如,对 ISA PnP 扩展、遗留 MCA 和 EISA 总线以及热插拔设备的 PnP 支持。 </P>' Q$ P% p: I1 c; P* A
<>05.内核基础设施的变化
- c9 Z2 c9 h, a5 q- K为了区别以 .o 为扩展名的常规对象文件,内核模块现在使用的扩展名是 .ko。 ' z/ c& X9 G( }& X0 Z
创建了新的 sysfs 文件系统,当内核发现设备树时就会描述它。
/ E1 v. w5 |" n1 L内存支持,NUMA 支持 . w& B5 t' h2 m# q) Y: p
支持更大数量的 RAM
, L, x8 K" l  g9 O% [6 }: f, d0 i2.6 内核支持更大数量的 RAM,在分页模式下最高可达 64GB。 </P>5 H+ y8 p- r7 M8 y6 c
<>06.NUMA ! v% o9 K8 U9 t& x8 K
对非一致内核访问(Non-Uniform Memory Access - NUMA)系统的支持是 2.6 内核中新出现的。 </P>
) d' G# S8 J9 X# B5 i' n" D) m<>07.线程模型,NPTL
/ s8 H2 s1 k* H& o相对于 v2.4 的 LinuxThreads,在版本 2.6 中新出现的是 NPTL(Native POSIX Threading Library)。 " c7 a" t( M. J3 l0 W1 H( W
NPTL 为 Linux 带来了<a href="http://hackbase.com/job" target="_blank" >企业</A>级线程支持,提供的性能远远超过了 LinuxThreads。它所基于的用户与内核线程的比率是 1:1。 </P>5 k. K* d: A9 ^! |
<>在 2003 年 10 月,GNU C 程序库 glibc 中融入了 NPTL 支持,Red Hat 率先在 Red Hat Linux 9 和
0 c9 Q. @! o5 m7 |, E/ d! K/ pRed Hat Enterprise Linux 中使用定制的 v2.4 内核实现了 NPTL。 </P>) O, n2 I5 v; l( X) I& M
<>08.性能改进
6 a& I9 S3 e: n/ r6 _" z3 r新的调度器算法 ! \; r# V* H' `& Z- {; r
2.6 Linux 内核引入了新的 O(1) 算法。在高负载情况下它运行得特别好。新的调度器基于每个 CPU 来分布时间片, " h5 x4 [8 h% T8 {+ P  T( k
这样就消除了全局同步和重新分配循环,从而提高了性能。 </P>& ^2 W8 Y/ P0 t* t2 o
<>内核抢占(Kernel Preemption) " C( n+ o6 |) T1 m& H" r
新的 2.6 内核是抢占式的。这将显著地提高交互式和多媒体应用程序的性能。 </P>; v) q. e3 l# e; S
<>I/O 性能改进 # R5 o6 s3 t3 _6 h
Linux 的 I/O 子系统也发生了重大的变化,通过修改 I/O 调度器来确保不会有进程驻留在队列中过长时间等待进行输入/输出操作, + c- l! I1 Q. n! I, f( z
这样就使得 I/O 操作的响应更为迅速。 </P>
! V) F4 w' U, B<>快速用户空间互斥(Fast User-Space Mutexes) " h# ~8 `: b0 ~2 _" E
“futexes”(快速用户空间互斥)可以使线程串行化以避免竞态条件,引入它也提高了响应速度。 & a# y) E# V9 d4 r0 J2 G1 Z: t! X6 W
通过在内核空间中部分实现“futexes”以允许基于竞争设置等待任务的优先级而实现改进。 </P>0 Q7 F) p2 z4 ]* q+ i
<>09.扩展性改进 : O+ y% C8 \9 k6 l( z" [6 l9 ^
处理器数目更多
. N6 ]$ Z. G0 N7 {$ e3 ZLinux 内核 2.6 最多可以支持 64 个 CPU。支持更大的内存,归功于 PAE(物理地址扩展,Physical Address Extensions),在 32-位系统上分页模式下所支持的内存增加到了 64GB。 </P>
! X+ v: G( D6 Z+ \, f# b<>用户和组
1 Z/ H, b6 O! P4 e8 {惟一用户和组的数量从 65,000 增至 40 多亿,也就是从 16-位增加到了 32-位。 </P>
$ X! i7 l* V1 _; M8 r<>ID 的数量
$ e  J" |) C: Q/ y7 LPID 的最大数量从 32,000 增至 10 亿。 </P>+ r9 `! S6 t- c5 |
<>打开文件描述符的数量
- f' j1 N+ g# T- S打开文件描述符的数量没有增加,但是不再需要事先设置该参数,它将自行调节。 </P>4 f8 Y5 ~+ Q4 e- ]  l
<>10.支持更多的设备
, R- t0 Y0 O1 h2 F" r9 V在 Linux 内核 2.6 之前,内核中有可以约束大型系统的限制,比如每条链 256 个设备。v2.6 内核彻底地打破了这些限制,
& ]6 [* \( `1 S/ S不但可以支持更多类型的设备,而且支持更多同类型的设备。在 Linux 2.6 系统中,可以支持 4095 种主要的设备类型,
  a# Y* N3 w1 S! R( g! `每一个单独的类型可以有超过一百万个子设备。
% W% `: i6 v# ]) k$ m文件系统大小 4 b& G0 B) @; }! \1 z, @/ v) r
Linux 内核 2.6 所允许的可寻址文件系统大小最大为 16 TB。 </P>
7 V) {( z# D* @% L: o8 |<>11.文件系统
6 l& W. h6 K9 x  j  ]" [1 fext2、ext3 和 ReiserFS 等传统 Linux 文件系统得到了显著的改进。最值得注意的改进是扩展属性(或文件元数据)的引入。 $ W9 D) k/ F3 F& I# M4 K  e  @9 I
最重要的是 POSIX ACL 的实现,这是对普通 UNIX 权限的扩展,可以支持更细化的用户访问控制。 </P>- G. n9 }2 u3 y9 u# f/ M9 S
<>12.除了对传统 Linux 文件系统的改进支持以外,新的内核完全支持在 Linux 中相对较新的 XFS 文件系统。
8 r& v) B; o+ S& c& `" r7 OLinux 2.6 内核现在还引入了对 NTFS 文件系统的改进的支持,现在允许以读/写模式安装 NTFS 文件系统。 </P>
# d9 O( K+ s/ r4 U7 V<>基于以上2.6的新特性,我决定用2.6的内核,我的系统为Red Hat Enterprise Linux AS release 3 (Taroon Update 3) 6 M' |  T  b' c4 A1 @- y) c
硬件环境为DELL 2850 </P>
/ u: E6 O. V2 k& b. P- F2 c8 P# A8 |<>一、下载解压并打上内核补丁 ; Z8 a% A8 h) n6 j: C: Z/ A6 Z
我以2.6.10为例子,patche以bk4的例子,目的只是让大家知道怎么打patch, ; |2 l# O6 M' y5 H2 U( _
其实本人用的是2.6.6的内核,因为在AS3.0上升级到2.6.9以上的内核, + Z5 A. A7 q. y' q9 g
mount大的nfs网络硬盘时,df 显示不正确,明明是800G的盘变成4.2G, / |: r" O* a5 L. F2 J, M
不过还是能正常用,我升级过nfs和mount的包都没用,/var/log/message里
4 `$ b3 m7 O  {* P提示是kernel: nfs warning: mount version older than kernel,
4 A- I9 D* x- Q/ i: z1 F' _' @" G还望知道的 告知一声,谢 BTW:2.6.8的内核没用过 </P>
9 |6 W5 I. {4 U- a, {8 [<>内核源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>:<a href="http://www.kernel.org/pub/<a%20href=" target="_blank" >linux</A>/kernel/v2.6/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>-2.6.10.tar.bz2"&gt;http://www.kernel.org/pub/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/kernel/v2.6/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>-2.6.10.tar.bz2</A> 4 U, ]) E1 O9 D, N, N  `
最新内核补丁:<a href="http://www.kernel.org/pub/<a%20href=" target="_blank" >linux</A>/kernel/v2.6/snapshots/patch-2.6.10-bk4.bz2"&gt;http://www.kernel.org/pub/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/kernel/v2.6/snapshots/patch-2.6.10-bk4.bz2</A> </P>
+ @# @$ Z. v7 i' j" |+ a<>cd /usr/src
8 D( y9 b- c; }6 m& Erm -rf <a href="http://hackbase.com/skill/linux" target="_blank" >linux</A> 1 R, `5 X( N- @# v/ W% N
tar jxf /download/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>-2.6.10.tar.bz2 3 O" m6 n8 T  y7 E& c( t
ln -s <a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>-2.6.10 <a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>
- w( s0 @& B% h2 {8 ycd <a href="http://hackbase.com/skill/linux" target="_blank" >linux</A> 9 b% S- w  u$ g3 F! s3 L) j8 F/ b
bunzip2 -dv /download/patch-2.6.10-bk4.bz2 |patch -p1 0 \7 l& \- t" y( G
如果在/usr/src目录下就用patch -p0 </P>
4 r, ]  V1 X& ?<>二、修改内核源<a href="http://hackbase.com/hacker" target="_blank" >代码</A> (升级2.6就是为了优化,干脆连源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>也改了吧) </P>
! u! s0 Z/ k7 W2 O<>1.修改/usr/src/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/include/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/posix<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>types.h
/ C8 `& @& \4 {" ]9 J4 v) Z+ _- c设置fd<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>set支持的最大数量 ) o! T; Y# Z7 ?( |
#define <a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A><a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>FD<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>SETSIZE 1024 ---&gt; 65536 </P>
/ N- p% V5 L. s% W, ]. y/ F<>2.修改/usr/src/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/include/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/fs.h   u$ x' T2 x: z* Q
设置最大打开文件数量(TCP连接数量) 4 P3 J+ d0 t+ G$ C) \1 T0 p
#define INR<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>OPEN 1024 ---&gt; 65536
9 y: L, G" U0 L# [$ C#define NR<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>FILE 8192 ---&gt; 65536 4 M% M' `* q1 L) j9 O1 }0 ~
#define NR<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>RESERVED<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>FILES 10 ---&gt; 128 </P>
* ]2 v# \  n: _" {* {4 H3 M8 \; s<>3.修改/usr/src/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/include/net/tcp.h
3 F: J- f$ Q' Z' V2 K; m/ K设置TIMEOUT的时间为1秒 6 E* X/ A5 l! j% Y8 H4 F
#define TCP<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>TIMEWAIT<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>LEN (60*HZ) 60 ---&gt; 1*HZ 9 [, ?6 p2 ]- o9 r
设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上 也是减少重试时间
+ {' F8 _/ W7 b: E  l#define TCP<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>SYNACK<a href="http://www1.hackbase.com/skill/linux/200501209624.htm#" target="_blank" >_</A>RETRIES 5 ---&gt; 3 </P>
0 E4 g8 J+ R5 v: F& L& R<P>针对RHEL-AS3本来就是稳定+优化的,不过就算你用 RHEL-AS3 自己的内核,那也要修改一下上面的参数才好呀 </P>
6 m- k& Z% r$ H; V- R<P>三、安装必要的<a href="http://hackbase.com/hacker/tool" target="_blank" >工具</A> </P>
" `6 @+ q( Q% Y7 f! E2 U: I2 T<P>1.下载module-init-tools-3.1.tar.bz2 1 }, W, c/ i' m/ b
<a href="http://www.kernel.org/pub/<a%20href=" target="_blank" >linux</A>/utils/kernel/module-init-tools/module-init-tools-3.1.tar.bz2"&gt;http://www.kernel.org/pub/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/utils/kernel/module-init-tools/module-init-tools-3.1.tar.bz2</A> 0 e$ A/ j8 ^  ?6 ?/ m! `% w0 U
<a href="http://hackbase.com/hacker" target="_blank" >代码</A>: - O, h9 }( n  I  U! n" E
        ./configure --prefix=/ + V& y1 n6 s9 j+ K4 O9 n0 A
        make moveold . R& D+ J) n  B' ^2 N
        make all install 4 C1 E9 m/ B* `: R: y. j5 T
        ./generate-modprobe.conf /etc/modprobe.conf </P>/ u8 h( I( s, o+ H2 ^) m
<P>2.下载新的mkinitrd
' D3 I" W8 n! |0 t5 w; ]( F<a href="ftp://195.220.108.108/<a%20href=" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/mkinitrd-4.1.18-2.i386.rpm"&gt;ftp://195.220.108.108/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/mkinitrd-4.1.18-2.i386.rpm</A>
. k/ {* |( A! q它需要lvm2 device-mapper   A; y0 u2 o1 j1 X6 w! H! l0 ]7 Y
<a href="ftp://195.220.108.108/<a%20href=" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/device-mapper-1.00.19-2.i386.rpm"&gt;ftp://195.220.108.108/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/device-mapper-1.00.19-2.i386.rpm</A>
5 |  |, Z$ K, G) J% E1 v* B. f<a href="ftp://195.220.108.108/<a%20href=" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/lvm2-2.00.25-1.01.i386.rpm"&gt;ftp://195.220.108.108/<a href="http://hackbase.com/skill/linux" target="_blank" >linux</A>/6/fedora/core/3/i386/os/Fedora/RPMS/lvm2-2.00.25-1.01.i386.rpm</A>
: w6 a* x) E, b7 Z如果不更新这个包在make install时会提示以下错误:
% S0 V! F, |6 W6 t. [& `<a href="http://hackbase.com/hacker" target="_blank" >代码</A>: * z6 X0 l8 p" z( y
        No module mptbase found for kernel 2.6.10-bk4, aborting.
7 t2 g8 b7 B* ~1 V4 K* B& V3 h        mkinitrd failed 2 Z! G; ]/ N3 ~/ w2 o
        make[1]: *** [install] Error 1
6 K6 p7 s/ J! W9 l* s        make: *** [install] Error 2 </P>
) |' G; t8 J$ v6 V1 k# U<P>安装lvm2-2.00.25-1.01.i386.rpm时请用rpm -ivh --nodeps package name </P>
+ \: j+ V/ S4 w0 w' Y* o# u0 p<P>四、make menuconfig $ i# r9 p/ X# Q/ u. |) I1 Y( r
<a href="http://hackbase.com/hacker" target="_blank" >代码</A>:
  @$ a0 d6 h* m. f: m' Q* C01.Code maturity level options    ---&gt;
$ W, A: A% c  i3 u! e        
  • Prompt for development and/or incomplete code/drivers                  
    ! J2 B% E* y* C; V/ Y* L0 e) O        
  •    Select only drivers expected to compile cleanly                           
    + q9 m5 e2 P1 Z( {2 N6 z    02.General setup  ---&gt;
    & ^& g( d9 q8 _% |* v- d8 D8 u# F        
  • Support for paging of anonymous memory (swap)                     
    4 z: n/ V  w2 P$ b# w5 o) [        
  • System V IPC                                                                  ) i9 S. g; f2 J3 X
            
  • POSIX Message Queues                                                          : F! T! v$ [1 x% k. J
            [ ] BSD Process Accounting                                                      
    # ~; k* f5 D4 }        
  • Sysctl support                                                                  
    1 t% b1 h  ^: X. Q        [ ] Auditing support                                                               
    $ {5 ?; h1 K9 X; O* ]) W        [ ] Support for hot-pluggable devices                                                
    ( h% b* y5 f. I        
  • Kernel Userspace Events                                                        % P% o8 a4 L  e0 g2 Q& ^
            [ ] Kernel .config support                                                          : X: w2 L* V& B2 N! D- ?0 ~
            
  • Configure standard kernel features (for small systems)  ---&gt;   
    ! |$ F7 v" `# Z. m, Q$ P7 @         
  •    Load all symbols for debugging/kksymoops                                       
    9 }! l, j* f* c              [ ]     Do an extra kallsyms pass                                                      
    6 h8 Q9 q) F& R. Q              
  •    Enable futex support                                                            
    5 [% N% _" ?# A+ d  q8 c              
  •    Enable eventpoll support                                                        
    0 r/ K0 N) a2 `              [ ]   Optimize for size                                                               
    ( L) M& n& _. V) j6 A1 J! }              
  •    Use full shmem filesystem 5 e5 a3 X' [. D- |$ o& H
        03.Loadable module support  ---&gt;          / S6 s0 G+ v0 c; z: R
            
  • Enable loadable module support                                          
    9 U& M+ f$ N, K- x        
  •    Module unloading                                                        
    5 e- w) p4 x; s. C8 O3 n        [ ]     Forced module unloading                                             
    ' ]8 W/ A9 E3 G        [ ]   Module versioning support (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                
    2 a; j/ c' |* E) Y% I: u3 N; G, j        [ ]   Source checksum for all modules                                       
    ! A$ _# B7 t- N) P        
  •    Automatic kernel module loading
    ; D% w' l; n/ y. a8 w    04.Processor type and features  ---&gt;  
    $ O6 o+ G8 c4 O- d7 A1 v7 C5 K           Subarchitecture Type (PC-compatible)  ---&gt;   
    / s6 h# m5 P3 O4 x7 ^           Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)  ---&gt;   
    5 w3 C; h7 X) L      
  • Generic x86 support                                    ' d) j4 H3 c1 r$ S( n
           [ ] HPET Timer Support                                      
    6 D) ?' T. P9 X2 ]5 @) X      
  • Symmetric multi-processing support      多CPU                ! U3 G( @4 S( U5 ^% r
           (8)   Maximum number of CPUs (2-255)                        
    3 I# I+ L- g3 y0 E% I      
  •    SMT (Hyperthreading) scheduler support                ) s: M0 U8 i( l6 p4 z
          
  • Preemptible Kernel                     抢占式内核,请选上它   
    % y2 u4 A# O3 d       [ ] Machine Check Exception                                
    8 A. }2 a7 W, ]. I2 o( K       &lt; &gt; Toshiba Laptop support                                  . ^2 _  b$ t$ v( t. D, n
           &lt; &gt; Dell laptop support                                    
    9 U0 y, h9 T7 \/ v4 S       &lt; &gt; /dev/cpu/microcode - Intel IA32 CPU microcode support  . B  m  [4 u2 Q8 G+ z7 H5 z
           &lt; &gt; /dev/cpu/*/msr - Model-specific register support        
    % q! n3 C% i, ]3 K       &lt; &gt; /dev/cpu/*/cpuid - CPU information support              
    5 C% |) N; z- i; X           Firmware Drivers  ---&gt;                                 
    5 ]0 P# A6 J3 v8 n: a  z! A           High Memory Support (4GB)  ---&gt;         高内存              ; g  ~3 Y3 d1 H+ }9 a" V- x
           [ ] Allocate 3rd-level pagetables from highmem              
    " Q/ B1 @; f+ @' Z8 ^       [ ] Math emulation                                          
    ) F6 ~+ J8 o. M+ K/ G      
  • MTRR (Memory Type Range Register) support              
    0 h- ]& o7 L$ c( S2 A5 D# S      
  • Enable kernel irq balancing                            1 g) s5 e# I! i1 m6 ?  z
           [ ] Use register arguments (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)        8 [* k# ?$ w) Y& i4 H5 e  U7 u: M( x
        05.Power management options (ACPI, APM)  ---&gt;    电源管理 自定 (偶没选)
    9 v- E* U. o- a% s! J, o    06.Bus options (PCI, PCMCIA, EISA, MCA, ISA)  ---&gt; 板卡支持  自定 " H' N  Y# z" o7 C0 l4 ]
            
  • PCI support                                                                    
    . H, v4 _1 ]3 T3 l" @        PCI access mode (Any)  ---&gt;                                                % P* n) l' P, t: B* F
            [ ] Message Signaled Interrupts (MSI and MSI-X)                                
    , G3 n# o% s8 n% h        
  • Legacy /proc/pci interface                                                   
    - `' U- S. H. ~0 Z' f6 Z        
  • PCI device name database                                                      
    & k: u5 @* H* S  S8 V6 ]        [ ] ISA support                                                                    8 a$ w; Q8 G- J1 I! H" C; @  r3 y4 P
            [ ] MCA support                                                                    $ P# G1 V9 }2 s2 h! X# T
            &lt; &gt; NatSemi SCx200 support 2 e* b3 m9 e; m5 T) K1 L' |
        07.Executable file formats  ---&gt;
    : d9 T, Q: h( N8 r        
  • Kernel support for ELF binaries                                                
    ; s2 d6 C2 y; |+ X! g: j4 V. `1 \        &lt;M&gt; Kernel support for a.out and ECOFF binaries                                  8 S0 v/ Q  _# L# ]* p0 w
            &lt;M&gt; Kernel support for MISC binaries  </P>
    作者: 韩冰    时间: 2005-1-20 14:36
    08.Device Drivers  ---&gt;   设备驱动及网络支持
    ! y; L7 k* V6 `" u/ s7 p3 E         Generic Driver Options  ---&gt;  默认
    ( W8 t1 u5 J- k/ h            
  • Select only drivers that don't need compile-time external firmware                    6 z; l& S1 b" F, l* Y! l
                
  • Prevent firmware from being built                                      
    ! J( X6 ]! [$ `) Q/ z) M, f2 \        Memory Technology Devices (MTD)  ---&gt;  不选
    % j' Z4 _+ ^) q4 P* K6 G         Parallel port support  ---&gt;    并行端口   自定(偶没选)        7 l: `% B# N% f* K: W+ V
            Plug and Play support  ---&gt;    支持热插拔 自定(偶没选) 0 z7 m' O* j& t! g* T; C7 b5 ]
             Block devices  ---&gt;
    " c( [" _7 O  ?8 W, z0 O# m# i3 K& j7 c0 U            &lt;*&gt; Normal floppy disk support                                      3 d' {2 o0 t  P/ C; h3 O
                &lt; &gt; Compaq SMART2 support                                          1 [" o* `4 j( Q, e9 }: @3 V0 O
                &lt; &gt; Compaq Smart Array 5xxx support                                
    9 f6 Z2 F* l/ y( Y            &lt; &gt; Mylex DAC960/DAC1100 PCI RAID Controller support               
    " D0 p+ [: [# n9 o' P' Z4 L+ F) V            &lt; &gt; Micro Memory MM5415 Battery Backed RAM support (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)  
    4 ]6 v) G7 ]  z% f! @            &lt;M&gt; Loopback device support                                       
    - O* i4 f5 V" a8 t  M            &lt; &gt;   Cryptoloop Support                                            
    1 h4 p" M  x! C9 I' W            &lt;M&gt; Network block device support                                    7 v2 q: M, h9 m2 e8 O$ O6 \
                &lt; &gt; Promise SATA SX8 support                                        4 w4 }9 M& T$ o( d. K
                &lt;M&gt; RAM disk support                                                
    . H# M3 I; v1 ~            (16)  Default number of RAM disks                                  ' U3 C* j! V  n2 H' g1 A8 U
                (4096) Default RAM disk size (kbytes)                              
    $ U" }/ f; ]% W4 s9 M/ m            ()  Source directory of cpio<a href="http://www1.hackbase.com/skill/linux/200501209624_1.htm#" target="_blank" >_</A>list                                  1 K- s4 x* u- j( T) U' L- c
                [ ] Support for Large Block Devices                                8 f; I& K, _; H, L* J: ]
                &lt; &gt; Packet writing on CD/DVD media                                  : s# [' \. r. b
                     IO Schedulers  ---&gt;   IO调度器,都选上吧 可以在grub.conf指定用IO调度哪种方式,后面会讲的                         " m, t& K4 M% l2 F$ U$ d) u
                         &lt;*&gt; Anticipatory I/O scheduler                              - C; H, N( `' S# _3 b
                         &lt;*&gt; Deadline I/O scheduler                                 
    3 R/ L% l8 k! ^$ }; w                     &lt;*&gt; CFQ I/O scheduler            
    3 [! A$ a' Q" U% W: C9 ?4 t; A         ATA/ATAPI/MFM/RLL support  ---&gt;   ATA设备 自定 (偶没选) 3 j/ m& f- H6 f8 m; t, C
             SCSI device support  ---&gt;       SCSI设备 自定我有scsi的设备所以有以下选项
    & O: `( S$ O; Y# E9 k- X. y2 f            &lt;*&gt; SCSI device support                                                               
    ' H* |7 B, R% o: F            
  •    legacy /proc/scsi/ support                                                        5 y  l" {$ h/ n4 q% D
                ---   SCSI support type (disk, tape, CD-ROM)                                            3 B" b8 c5 u5 ?9 @
                &lt;*&gt;   SCSI disk support                                8 a! @" |: j+ m  h# n, Y. y8 m7 z
             因为偶式MPT的SCSI,所以以下都没选,省略之
    " U7 a6 c: T! W1 b+ a9 t. ~, J! h         Multi-device support (RAID and LVM)  ---&gt;  支持RAID和LVM(逻辑卷)  自定 " j9 ^" [' J4 ]
                
  • Multiple devices driver support (RAID and LVM)        
    1 }+ K# q: p, M* `) V+ K            &lt;*&gt;   RAID support                                       
    7 U7 o2 N  W$ n, D            &lt; &gt;     Linear (append) mode                              4 g; j! s$ j; C
                &lt;*&gt;     RAID-0 (striping) mode                            ( y7 n/ k8 _+ w1 c
                &lt; &gt;     RAID-1 (mirroring) mode                          
    : _. C/ W/ L) p            &lt; &gt;     RAID-10 (mirrored striping) mode (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)  
    % l# H: L! M, H4 Q5 f            &lt;*&gt;     RAID-4/RAID-5 mode                                
    $ J& r# u: t- P* N            &lt; &gt;     RAID-6 mode (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                        
    . ?, t8 ?. g5 _            &lt;*&gt;     Multipath I/O support                            + z5 W" c3 d  ~; |! e
                &lt; &gt;     Faulty test module for MD                        " i/ O2 U1 p& h& }: H9 b
                &lt;*&gt;   Device mapper support                              
    2 }! |% ^) p. u) b: o            &lt; &gt;     Crypt target support                              - G+ L  T3 v8 F3 _/ }: M
                &lt; &gt;     Snapshot target (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                    
      x1 n9 K8 l( ^$ G( z            &lt; &gt;     Mirror target (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                     
    $ Z. `* G. X3 ^& v2 l' S1 l% ^. Z            &lt; &gt;     Zero target (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                  
    7 l. F" ?, x, [         Fusion MPT device support  ---&gt;    偶的SCSI是这个,所以选了 还是自定                7 g+ z! F8 p- v% s) ?9 [
                      &lt;*&gt; Fusion MPT (base + ScsiHost) drivers                                  ) d7 ]  e) ]9 R! n' c; b3 w8 O8 D
                (40)  Maximum number of scatter gather entries                              - O# k5 ?& P9 Z9 |( u" a' j1 g3 b
                &lt;*&gt;   Fusion MPT misc device (ioctl) driver    0 Y1 f+ T5 @: P; ^( B* @9 K
             IEEE 1394 (FireWire) support  ---&gt;  自定  (偶没选) " c( S7 q/ V! d' \: O& S
             I2O device support  ---&gt;     自定  (偶没选) * M& g) S. g8 ~; j! E- l# y
             Networking support  ---&gt;     网络选项
      S! g7 D' n1 M- g. w               
  • Networking support                                                                  
    ! |' M8 M. z" r1 W- Y                 Networking options  ---&gt;                                        : R8 K% T7 ]' ^5 q' f) i' R
                                  &lt;*&gt; Packet socket                                                                        ! W4 [( ?; ]7 o4 n/ Q/ U
                         [ ]   Packet socket: mmapped IO                                                          8 v4 L5 }/ F7 O8 u% K
                         &lt; &gt; Netlink device emulation                                                            ) G; l5 w2 _9 H
                         &lt;*&gt; Unix domain sockets        如果你有网络就选                                                         
    ( o7 z* Y8 u7 {7 K% a4 J                     &lt; &gt; PF<a href="http://www1.hackbase.com/skill/linux/200501209624_1.htm#" target="_blank" >_</A>KEY sockets                                                                      4 `7 H' h/ p* ]4 b7 P
                         
  • <a href="http://hackbase.com/hacker" target="_blank" >TCP/IP</A> networking                                                                    
    0 v3 q: y/ j- R8 E; K  U                     [ ]   IP: multicasting                                                                  
    8 E3 s% y& H. m: Q1 u2 h2 N                     [ ]   IP: advanced router                                                               
    " f* h0 n6 E0 w" J/ s4 G                     [ ]   IP: kernel level autoconfiguration                                                4 @: [- M: x- C% F& x$ d
                         &lt; &gt;   IP: tunneling                                                                      # K! H" @* Z, o$ E3 B% j
                         &lt; &gt;   IP: GRE tunnels over IP                                                            
    0 u: u' m/ s/ s  |                     [ ] IP: ARP daemon support (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                
    , C1 U, ]5 m4 n; ~                     
  • IP: TCP syncookie support (disabled per default)     能防DOS<a href="http://hackbase.com/hacker" target="_blank" >攻击</A>,但会降低一点性能,总的说性价比不错                                
    + g, @4 B7 N4 M5 E4 E2 h                     &lt; &gt; IP: AH transformation                                                                3 j1 ~0 @  J# W
                         &lt; &gt; IP: ESP transformation                                                              
    8 ?9 ?8 ?( M/ x% _, w6 k( X                     &lt; &gt; IP: IPComp transformation                                                            
      T+ {+ a# }% C1 O; X) D5 G                     &lt; &gt; IP: tunnel transformation                                                            
    ( g: Z2 ?" X5 J$ v+ I                     &lt;*&gt; IP: TCP socket monitoring interface                                                  ( j6 Z( u0 `& b+ V+ [( ~3 o/ d
                          IP: Virtual Server Configuration  ---&gt;                   lvs 支持                           
    * n: ?( ~# I+ m* u# i3 ^                     &lt; &gt; The IPv6 protocol (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                   
    ; D2 V' f' ]0 l7 e$ U$ u) \1 U, L7 C                     
  • Network packet filtering (replaces ipchains)  ---&gt;    包过滤省略(知道的自己选,不熟悉的都选上)              
    & C2 O1 n$ |9 x2 N) s1 c                                           以下都没选,省略
    ) {# O0 ?* w1 y: R: o8 d" v4 e                [ ] Amateur Radio support  ---&gt;                                                        ! `# w; M0 A9 t# b, v
                &lt; &gt; IrDA (infrared) subsystem support  ---&gt;                                &amp;n, bsp;           : o  r1 M$ w, P4 b# w
                &lt; &gt; Bluetooth subsystem support  ---&gt;                                                  
    " s2 p2 W8 P# t$ w! z3 I            
  • Network device support                                                              # }" l1 G, e- [, j, G
                &lt; &gt;   Dummy net driver support                这个是nis<a href="http://vip.hackbase.com/" target="_blank" >服务</A>器的吧,不大清楚,没用过                                          " t4 J/ P' S: f! J
                &lt;*&gt;   Bonding driver support                  双网卡绑定的                                          
    0 H4 p5 Y- o% L( P  k9 x( l6 G  U            &lt; &gt;   EQL (serial line load balancing) support                                          1 }. h. R+ T- h' t+ Q! n4 L
                &lt; &gt;   Universal TUN/TAP device driver support                     
    3 V$ I: u4 s) G+ g                 ARCnet devices  ---&gt;                                                              ' G4 L: ?% S7 [) x
                     Ethernet (10 or 100Mbit)  ---&gt;                                                    $ }) ]- D$ z) |
                     Ethernet (1000 Mbit)  ---&gt;                        : \* m  Y" y: T# F5 H- Y3 ^  n" W
                         &lt; &gt; Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support                                    
    2 D5 v5 Y/ @9 R                     &lt; &gt; D-Link DL2000-based Gigabit Ethernet support                                             
    ! O/ e+ L( `. m* G. z" O                     &lt; &gt; Intel(R) PRO/1000 Gigabit Ethernet support                                                ' F- p+ o/ z& O2 K, {
                         &lt; &gt; National Semiconduct DP83820 support                                                      
    $ ]/ g& d+ R5 @                     &lt; &gt; Packet Engines Hamachi GNIC-II support                                                   
    3 y/ r! y& [5 d+ J6 _                     &lt; &gt; Packet Engines Yellowfin Gigabit-NIC support (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                              
    ( t, u4 e8 h! f                     &lt; &gt; Realtek 8169 gigabit ethernet support                                                    ( O, p7 H: y  h8 Y* d
                         &lt; &gt; Marvell Yukon Chipset / SysKonnect SK-98xx Support                                        / O2 G% ]3 M- f; E' H1 |
                         &lt;*&gt; Broadcom Tigon3 support   
    , s" M3 Z5 N; F& C+ G  L4 O                以下都没选,省略    1 K" F2 z' T9 x2 C; T% E& `
            ISDN subsystem  ---&gt;                                          
    . k# O1 |2 N$ m  P+ e/ z3 w        Telephony Support  ---&gt; / d: W- u' Z6 T4 x7 f  R1 V
            Input device support  ---&gt;                                          
    - S4 w0 ?6 O) h2 Q! [         Character devices  ---&gt;                                                5 g4 N. d9 t( X/ C
            I2C support  ---&gt;              
    + c5 ?) r1 ]3 L        Dallas's 1-wire bus  ---&gt;      0 e  d! H5 l* y+ T7 ?, t
            Misc devices  ---&gt;              4 B  O2 `1 E( w, T' N! A! v
            Multimedia devices  ---&gt;          @/ `3 O" f$ H: _5 C- f3 O9 j
            Graphics support  ---&gt;         
    3 [! W3 D7 S) C% U        Sound  ---&gt;                      q/ Y- t+ L0 a+ S' Z* Y2 c
            USB support  ---&gt;              7 R) T) c2 j* `- j1 U
            MMC/SD Card support  ---&gt;    以上都没选,需要的自己选
    9 F+ m9 l& ]& S  W: r4 H8 \    09.File systems  ---&gt;        文件系统      
    3 g# D- p$ |3 T; c        &lt; &gt; Second extended fs support                                                                9 C- ]* f  y# ]
            &lt;*&gt; Ext3 journalling file system support                                                   
    ( n3 y) y9 O! S( c# D- b        [ ]   Ext3 extended attributes                                                              ) d. Y& V; R0 @! {
            
  • JBD (ext3) debugging support                                                            $ T1 Y# k+ {2 W
            &lt; &gt; Reiserfs support                                                                        
    2 k+ p9 ~# c! l0 U, O        &lt; &gt; JFS filesystem support                                                                  , d  L5 o% [, [( J1 I2 V
            &lt; &gt; XFS filesystem support                                                                  + H; o' B, U, r7 `& d4 S  Y
            &lt; &gt; Minix fs support                                                                        
    * I( S* [- C: M) o) G( |: ~        &lt; &gt; ROM file system support                                                                ! k/ O; o  E. ^) ~; r2 l
            [ ] Quota support                                                                          
    6 J0 B; ?+ d- i) ~9 O        &lt; &gt; Kernel automounter support                                                              1 y) ?8 l4 p9 M7 j$ u& R4 r6 H- O9 u4 @) u
            &lt;*&gt; Kernel automounter version 4 support (also supports v3)                                
    * F, }% \$ a% k/ @! \            CD-ROM/DVD Filesystems  ---&gt;                                             
    $ e. r6 k1 Q" S2 }3 s( C                &lt;*&gt; ISO 9660 CDROM file system support                                             
    , f0 U" P- q) _" I                [ ]   Microsoft Joliet CDROM extensions                                            
    * X3 z" J0 x# f$ \) V; o. N5 W                [ ]   Transparent decompression extension                                          
    8 `3 k+ ?4 m* U  l                &lt; &gt; UDF file system support  $ U/ k" m) o  a6 |- P& @; A
                DOS/FAT/NT Filesystems  ---&gt;             floppy要用到的文件格式
    % W$ d/ G( |4 t" h0 |  Q. u. u. D                &lt;*&gt; MSDOS fs support                                                                                                                    
    " z3 q+ u  q) P$ X; ?                &lt;*&gt; VFAT (Windows-95) fs support                                                    3 _: F+ W+ |# \( L% C' e: y8 |. W
                    (437) Default codepage for FAT (NEW)                                                
    $ ?9 q7 T9 T8 P! d- G+ w# @                (iso8859-1) Default iocharset for FAT (NEW)                                        ( R0 d) ?$ T, R. e/ }
                    &lt; &gt; NTFS file system support                                                          + C( `! L$ }* Y1 C$ Q
                Pseudo filesystems  ---&gt; , z2 c5 l- T- c8 J' D# M, o. _, M0 k
                   
  • /proc file system support                             proc文件系统支持                              & b1 \& n  r0 }1 _6 ?
                    [ ]   /proc/kcore support                                                                5 C6 v, t3 V6 A: o" N
                    [ ] /dev file system support (OBSOLETE)                                                  
    6 S- W- x( r" R                [ ] /dev/pts Extended Attributes                                                        
    4 S2 K8 k9 x0 r' w" |$ J$ \               
  • Virtual memory file system support (former shm fs)     虚拟内存支持                              : N2 A+ a8 d  r: R( i6 @
                    [ ]   tmpfs Extended Attributes                                                          8 g" v* D+ e; U8 q6 H
                    [ ] HugeTLB file system support                                                              8 r. V8 p1 {* o' z) _: |% t- p
                Miscellaneous filesystems  ---&gt;                                      
    0 @9 W$ V; {. S/ Y7 f: f! t% J- ?            Network File Systems  ---&gt;                                                          1 q. h2 o( ?% s& b0 s9 J
                    &lt;*&gt; NFS file system support                      nfs客户端支持                                                              
    1 j$ K* j: q2 E               
  •    Provide NFSv3 client support                                                                            ) w8 |' t+ ~2 o
                    [ ]   Provide NFSv4 client support (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                              7 P0 I' T. V: E! S7 w  A0 b
                    [ ]   Allow direct I/O on NFS files (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                            ) w3 r* }7 t" r. P
                    &lt; &gt; NFS server support                           nfs<a href="http://vip.hackbase.com/" target="_blank" >服务</A>端支持                                                            9 I2 z; n  `6 I2 Z
                    &lt; &gt; Secure RPC: Kerberos V mechanism (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                            7 U1 {9 @* N; w* P' ?
                    &lt; &gt; Secure RPC: SPKM3 mechanism (E<a href="http://hackbase.com/skill/XP" target="_blank" >XP</A>ERIMENTAL)                                                                + \( |0 k6 I( J
                    &lt; &gt; SMB file system support (to mount Windows shares etc.)       samba支持                                              + k! W! l$ c+ [9 ]; s/ ?: |
                    &lt; &gt; CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers)              # l- N8 Z1 U2 ]7 `8 g. u
                    &lt; &gt; NCP file system support (to mount NetWare volumes)                                                        
    6 E6 f, N, s; ~                &lt; &gt; Coda file system support (advanced network fs)                                                            
    , s  y2 P/ Y7 A( x# |9 B3 e                &lt; &gt; Andrew File System support (AFS) (Experimental)                    
    7 U( }! H! }% @9 R            Partition Types  ---&gt;        8 w5 y5 y+ j- `5 }7 Z  s
                Native Language Support  ---&gt;                 自己选      
    ; T. e) @+ ]& r& D; v1 D# Z    10.Profiling support  ---&gt;                             没选                                              2 P/ v2 a  V# Z7 t
        11.Kernel hacking  ---&gt;                                没选                                                                                             
    5 R% X' R) F1 e, C7 g. y    12.Security options  ---&gt;                              没选
    0 Q1 B" D0 d) v' U3 Q$ E* H    13.Cryptographic options  ---&gt;                         没选   
    2 Q. Z2 X4 r' I$ o    14.Library routines  ---&gt;                                        ' t" G5 Z  |& O; F) M' N
             &lt; &gt; CRC-CCITT functions                                ; p4 w8 y9 B( b) l' Q
             &lt;*&gt; CRC32 functions                                    , _5 E9 Q% P+ A% U, L; {
             &lt;M&gt; CRC32c (Castagnoli, et al) Cyclic Redundancy-Check <>
    5 B. T3 Q6 t" I) d五、编译安装
    8 x! U3 z7 U. n; c" X! `0 w步骤:make -jn(n代表同时编译的进程,可以加快编译速度,n由你的配置决定,我的配置用15-25) , B, z- F9 |- y5 @
    make modules<a href="http://www1.hackbase.com/skill/linux/200501209624_1.htm#" target="_blank" >_</A>install
    7 A$ X3 n( u- w; O- Pmake install </P><>六、grub的设置
    1 ]" q6 {/ Z) ~) h% ^( }设置之前先介绍一下2.6的I/O调度器 # \, I/ s+ P  T/ ?, B4 i0 l
    2.6包含的四个I/O调度器分别是No-op I/O scheduler、Anticipatory I/O scheduler、Deadline I/O scheduler与CFQ I/O scheduler。 1 j' A! H* o: Y4 X9 Z8 [2 e1 M( O
    在后文中分别简称为ns、as、ds与cfq。 </P><>ns是一个简化的调度程序它只作最基本的合并与排序。与桌面系统的关系不是很大,主要用在一些特殊的<a href="http://down.hackbase.com/" target="_blank" >软件</A>
    7 I0 p2 c- ]/ Z5 k* I. y与硬件环境下,这些<a href="http://down.hackbase.com/" target="_blank" >软件</A>与硬件一般都拥有自己的调度机制对内核支持的要求很小,这很适合一些嵌入式系统环境。作为桌面用户我们一般不会选择它。 </P><>as是当前内核中默认的I/O调度器。它拥有非常好的性能,在2.5中它就相当引人注意。在与2.4内核进行的对比测试中,在2.4中多项以分钟为单位
    , y3 c2 w  x( H8 Q9 W0 U6 w* A完成的任务,它则是以秒为单位来完成的。正因为如此它成为目前2.6测试版中默认的I/O调度器。但它也存在着弱点,它本身是比较庞大与复杂的,
    - s/ B- w" ^. q在一些特殊的情况下,特别是在数据吞吐量非常大的<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>系统中它会变的比较缓慢。 </P><>ds就是针对as的缺点进行改善而来的,还处于测试阶段,但已经很稳定了。目前表现出的性能几乎与as一样好。加之比as更加小巧, + E' F1 n; R+ W$ {8 _, X0 V
    是相当有前途的调度器,值得一试:) </P><>cfq为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现, " [& T6 A7 C+ [7 c+ I
    mplayer xmms等多媒体播放器与它配合的相当好,回放平滑几乎没有因访问磁盘而出现的跳帧现象。对于喜欢在Linux下听音乐看电影的朋友不妨尝试一下。 </P><>好了,下面说说怎么设置:参数的格式为elevator=调度器名 </P><>修改/boot/grub/grub.conf,在kernel那行后门加入elevator=deadline </P><>例如:kernel /boot/vmlinuz-2.6.10-bk4 ro root=/dev/你的根分区 elevator=deadline </P><>七、reboot</P>




    欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5