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