序
做一件事情,首先要知道自己在干什么,而不是盲目得升级内核,现在升级内核有点泛滥,sigh
首先让我们先了解一下2.6内核的新特性
一、01.模块子系统(ModuleSubsystem)、统一设备模型(UnifiedDeviceModel)和PnP支持
模块子系统发生了重大变化。
02.稳定性有所提高
为了彻底避免内核加载或者导出正在被使用的内核模块,或者至少为了减少加载或者卸载模块的同时使用该模块的可能性
(这有时会导致系统崩溃),内核加载和导出内核模块的过程都得到了改进。
03.统一设备模型
统一设备模型的创建是2.6内核最重要的变化之一。它促进了模块接口的标准化,其目的是更好地控制和管理设备,例如:
更准确地确定系统设备。
电源管理和设备电源状态。
改进的系统总线结构管理。
04.即插即用(PnP)支持
1.1.1和1.1.2小节中提及的变化使得运行2.6内核的Linux成为一个真正即插即用的OS。
例如,对ISAPnP扩展、遗留MCA和EISA总线以及热插拔设备的PnP支持。
05.内核基础设施的变化
为了区别以.o为扩展名的常规对象文件,内核模块现在使用的扩展名是.ko。
创建了新的sysfs文件系统,当内核发现设备树时就会描述它。
内存支持,NUMA支持
支持更大数量的RAM
2.6内核支持更大数量的RAM,在分页模式下最高可达64GB。
06.NUMA
对非一致内核访问(Non-UniformMemoryAccess-NUMA)系统的支持是2.6内核中新出现的。
07.线程模型,NPTL
相对于v2.4的LinuxThreads,在版本2.6中新出现的是NPTL(NativePOSIXThreadingLibrary)。
NPTL为Linux带来了企业级线程支持,提供的性能远远超过了LinuxThreads。它所基于的用户与内核线程的比率是1:1。
在2003年10月,GNUC程序库glibc中融入了NPTL支持,RedHat率先在RedHatLinux9和
RedHatEnterpriseLinux中使用定制的v2.4内核实现了NPTL。
08.性能改进
新的调度器算法
2.6Linux内核引入了新的O(1)算法。在高负载情况下它运行得特别好。新的调度器基于每个CPU来分布时间片,
这样就消除了全局同步和重新分配循环,从而提高了性能。
内核抢占(KernelPreemption)
新的2.6内核是抢占式的。这将显著地提高交互式和多媒体应用程序的性能。
I/O性能改进
Linux的I/O子系统也发生了重大的变化,通过修改I/O调度器来确保不会有进程驻留在队列中过长时间等待进行输入/输出操作,
这样就使得I/O操作的响应更为迅速。
快速用户空间互斥(FastUser-SpaceMutexes)
futexes(快速用户空间互斥)可以使线程串行化以避免竞态条件,引入它也提高了响应速度。
通过在内核空间中部分实现futexes以允许基于竞争设置等待任务的优先级而实现改进。
09.扩展性改进
处理器数目更多
Linux内核2.6最多可以支持64个CPU。支持更大的内存,归功于PAE(物理地址扩展,PhysicalAddressExtensions),在32-位系统上分页模式下所支持的内存增加到了64GB。
用户和组
惟一用户和组的数量从65,000增至40多亿,也就是从16-位增加到了32-位。
PID的数量
PID的最大数量从32,000增至10亿。
打开文件描述符的数量
打开文件描述符的数量没有增加,但是不再需要事先设置该参数,它将自行调节。
10.支持更多的设备
在Linux内核2.6之前,内核中有可以约束大型系统的限制,比如每条链256个设备。v2.6内核彻底地打破了这些限制,
不但可以支持更多类型的设备,而且支持更多同类型的设备。在Linux2.6系统中,可以支持4095种主要的设备类型,
每一个单独的类型可以有超过一百万个子设备。
文件系统大小
Linux内核2.6所允许的可寻址文件系统大小最大为16TB。
11.文件系统
ext2、ext3和ReiserFS等传统Linux文件系统得到了显著的改进。最值得注意的改进是扩展属性(或文件元数据)的引入。
最重要的是POSIXACL的实现,这是对普通UNIX权限的扩展,可以支持更细化的用户访问控制。
12.除了对传统Linux文件系统的改进支持以外,新的内核完全支持在Linux中相对较新的XFS文件系统。
Linux2.6内核现在还引入了对NTFS文件系统的改进的支持,现在允许以读/写模式安装NTFS文件系统。
基于以上2.6的新特性,我决定用2.6的内核,我的系统为RedHatEnterpriseLinuxASrelease3(TaroonUpdate3)
硬件环境为DELL2850
一、下载解压并打上内核补丁
我以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:nfswarning:mountversionolderthankernel,
还望知道的告知一声,谢:)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/...atch-2.6.10-bk4.bz2
cd/usr/src
rm-rflinux
tarjxf/download/linux-2.6.10.tar.bz2
ln-slinux-2.6.10linux
cdlinux
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_SETSIZE1024--->;65536
2.修改/usr/src/linux/include/linux/fs.h
设置最大打开文件数量(TCP连接数量)
#defineINR_OPEN1024--->;65536
#defineNR_FILE8192--->;65536
#defineNR_RESERVED_FILES10--->;128
3.修改/usr/src/linux/include/net/tcp.h
设置TIMEOUT的时间为1秒
#defineTCP_TIMEWAIT_LEN(60*HZ)60--->;1*HZ
设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上也是减少重试时间
#defineTCP_SYNACK_RETRIES5--->;3
针对RHEL-AS3本来就是稳定+优化的,不过就算你用RHEL-AS3自己的内核,那也要修改一下上面的参数才好呀:)
三、安装必要的工具
1.下载module-init-tools-3.1.tar.bz2
http://www.kernel.org/pub/linux/...t-tools-3.1.tar.bz2
[Copytoclipboard][-]CODE:./configure--prefix=/
makemoveold
makeallinstall
./generate-modprobe.conf/etc/modprobe.conf
2.下载新的mkinitrd
ftp://195.220.108.108/linux/6/fe...d-4.1.18-2.i386.rpm
它需要lvm2device-mapper
ftp://195.220.108.108/linux/6/fe...-1.00.19-2.i386.rpm
ftp://195.220.108.108/linux/6/fe...00.25-1.01.i386.rpm
如果不更新这个包在makeinstall时会提示以下错误:
[Copytoclipboard][-]CODE:Nomodulemptbasefoundforkernel2.6.10-bk4,aborting.
mkinitrdfailed
make[1]:***[install]Error1
make:***[install]Error2
安装lvm2-2.00.25-1.01.i386.rpm时请用rpm-ivh--nodepspackagename
四、makemenuconfig
[Copytoclipboard][-]CODE:01.Codematurityleveloptions--->;
[*]Promptfordevelopmentand/orincompletecode/drivers
[*]Selectonlydriversexpectedtocompilecleanly
02.Generalsetup--->;
[*]Supportforpagingofanonymousmemory(swap)
[*]SystemVIPC
[*]POSIXMessageQueues
[]BSDProcessAccounting
[*]Sysctlsupport
[]Auditingsupport
[]Supportforhot-pluggabledevices
[*]KernelUserspaceEvents
[]Kernel.configsupport
[*]Configurestandardkernelfeatures(forsmallsystems)--->;
[*]Loadallsymbolsfordebugging/kksymoops
[]Doanextrakallsymspass
[*]Enablefutexsupport
[*]Enableeventpollsupport
[]Optimizeforsize
[*]Usefullshmemfilesystem
03.Loadablemodulesupport--->;
[*]Enableloadablemodulesupport
[*]Moduleunloading
[]Forcedmoduleunloading
[]Moduleversioningsupport(EXPERIMENTAL)
[]Sourcechecksumforallmodules
[*]Automatickernelmoduleloading
04.Processortypeandfeatures--->;
SubarchitectureType(PC-compatible)--->;
Processorfamily(Pentium-4/Celeron(P4-based)/Pentium-4M/Xeon)--->;
[*]Genericx86support
[]HPETTimerSupport
[*]Symmetricmulti-processingsupport多CPU
(8)MaximumnumberofCPUs(2-255)
[*]SMT(Hyperthreading)schedulersupport
[*]PreemptibleKernel抢占式内核,请选上它
[]MachineCheckException
<>;ToshibaLaptopsupport
<>;Delllaptopsupport
<>;/dev/cpu/microcode-IntelIA32CPUmicrocodesupport
<>;/dev/cpu/*/msr-Model-specificregistersupport
<>;/dev/cpu/*/cpuid-CPUinformationsupport
FirmwareDrivers--->;
HighMemorySupport(4GB)--->;高内存
[]Allocate3rd-levelpagetablesfromhighmem
[]Mathemulation
[*]MTRR(MemoryTypeRangeRegister)support
[*]Enablekernelirqbalancing
[]Useregisterarguments(EXPERIMENTAL)
05.Powermanagementoptions(ACPI,APM)--->;电源管理自定(偶没选)
06.Busoptions(PCI,PCMCIA,EISA,MCA,ISA)--->;板卡支持自定
[*]PCIsupport
PCIaccessmode(Any)--->;
[]MessageSignaledInterrupts(MSIandMSI-X)
[*]Legacy/proc/pciinterface
[*]PCIdevicenamedatabase
[]ISAsupport
[]MCAsupport
<>;NatSemiSCx200support
07.Executablefileformats--->;
[*]KernelsupportforELFbinaries
;Kernelsupportfora.outandECOFFbinaries
;KernelsupportforMISCbinaries
08.DeviceDrivers--->;设备驱动及网络支持
GenericDriverOptions--->;默认
[*]Selectonlydriversthatdon'tneedcompile-timeexternalfirmware
[*]Preventfirmwarefrombeingbuilt
MemoryTechnologyDevices(MTD)--->;不选
Parallelportsupport--->;并行端口自定(偶没选)
PlugandPlaysupport--->;支持热插拔自定(偶没选)
Blockdevices--->;
<*>;Normalfloppydisksupport
<>;CompaqSMART2support
<>;CompaqSmartArray5xxxsupport
<>;MylexDAC960/DAC1100PCIRAIDControllersupport
<>;MicroMemoryMM5415BatteryBackedRAMsupport(EXPERIMENTAL)
;Loopbackdevicesupport
<>;CryptoloopSupport
;Networkblockdevicesupport
<>;PromiseSATASX8support
;RAMdisksupport
(16)DefaultnumberofRAMdisks
(4096)DefaultRAMdisksize(kbytes)
()Sourcedirectoryofcpio_list
[]SupportforLargeBlockDevices
<>;PacketwritingonCD/DVDmedia
IOSchedulers--->;IO调度器,都选上吧可以在grub.conf指定用IO调度哪种方式,后面会讲的
<*>;AnticipatoryI/Oscheduler
<*>;DeadlineI/Oscheduler
<*>;CFQI/Oscheduler
ATA/ATAPI/MFM/RLLsupport--->;ATA设备自定(偶没选)
SCSIdevicesupport--->;SCSI设备自定我有scsi的设备所以有以下选项
<*>;SCSIdevicesupport
[*]legacy/proc/scsi/support
---SCSIsupporttype(disk,tape,CD-ROM)
<*>;SCSIdisksupport
因为偶式MPT的SCSI,所以以下都没选,省略之
Multi-devicesupport(RAIDandLVM)--->;支持RAID和LVM(逻辑卷)自定
[*]Multipledevicesdriversupport(RAIDandLVM)
<*>;RAIDsupport
<>;Linear(append)mode
<*>;RAID-0(striping)mode
<>;RAID-1(mirroring)mode
<>;RAID-10(mirroredstriping)mode(EXPERIMENTAL)
<*>;RAID-4/RAID-5mode
<>;RAID-6mode(EXPERIMENTAL)
<*>;MultipathI/Osupport
<>;FaultytestmoduleforMD
<*>;Devicemappersupport
<>;Crypttargetsupport
<>;Snapshottarget(EXPERIMENTAL)
<>;Mirrortarget(EXPERIMENTAL)
<>;Zerotarget(EXPERIMENTAL)
FusionMPTdevicesupport--->;偶的SCSI是这个,所以选了还是自定
<*>;FusionMPT(base+ScsiHost)drivers
(40)Maximumnumberofscattergatherentries
<*>;FusionMPTmiscdevice(ioctl)driver
IEEE1394(FireWire)support--->;自定(偶没选)
I2Odevicesupport--->;自定(偶没选)
Networkingsupport--->;网络选项
[*]Networkingsupport
Networkingoptions--->;
<*>;Packetsocket
[]Packetsocket:mmappedIO
<>;Netlinkdeviceemulation
<*>;Unixdomainsockets如果你有网络就选
<>;PF_KEYsockets
[*]TCP/IPnetworking
[]IP:multicasting
[]IP:advancedrouter
[]IP:kernellevelautoconfiguration
<>;IP:tunneling
<>;IP:GREtunnelsoverIP
[]IP:ARPdaemonsupport(EXPERIMENTAL)
[*]IP:TCPsyncookiesupport(disabledperdefault)能防DOS攻击,但会降低一点性能,总的说性价比不错
<>;IP:AHtransformation
<>;IP:ESPtransformation
<>;IP:IPComptransformation
<>;IP:tunneltransformation
<*>;IP:TCPsocketmonitoringinterface
IP:VirtualServerConfiguration--->;lvs支持
<>;TheIPv6protocol(EXPERIMENTAL)
[*]Networkpacketfiltering(replacesipchains)--->;包过滤省略(知道的自己选,不熟悉的都选上)
以下都没选,省略
[]AmateurRadiosupport--->;
<>;IrDA(infrared)subsystemsupport--->;
<>;Bluetoothsubsystemsupport--->;
[*]Networkdevicesupport
<>;Dummynetdriversupport这个是nis服务器的吧,不大清楚,没用过
<*>;Bondingdriversupport双网卡绑定的
<>;EQL(seriallineloadbalancing)support
<>;UniversalTUN/TAPdevicedriversupport
ARCnetdevices--->;
Ethernet(10or100Mbit)--->;
Ethernet(1000Mbit)--->;
<>;AlteonAceNIC/3Com3C985/NetGearGA620Gigabitsupport
<>;D-LinkDL2000-basedGigabitEthernetsupport
<>;Intel(R)PRO/1000GigabitEthernetsupport
<>;NationalSemiconductDP83820support
<>;PacketEnginesHamachiGNIC-IIsupport
<>;PacketEnginesYellowfinGigabit-NICsupport(EXPERIMENTAL)
<>;Re altek8169gigabitethernetsupport
<>;MarvellYukonChipset/SysKonnectSK-98xxSupport
<*>;BroadcomTigon3support
以下都没选,省略
ISDNsubsystem--->;
TelephonySupport--->;
Inputdevicesupport--->;
Characterdevices--->;
I2Csupport--->;
Dallas's1-wirebus--->;
Miscdevices--->;
Multimediadevices--->;
Graphicssupport--->;
Sound--->;
USBsupport--->;
MMC/SDCardsupport--->;以上都没选,需要的自己选
09.Filesystems--->;文件系统
<>;Secondextendedfssupport
<*>;Ext3journallingfilesystemsupport
[]Ext3extendedattributes
[*]JBD(ext3)debuggingsupport
<>;Reiserfssupport
<>;JFSfilesystemsupport
<>;XFSfilesystemsupport
<>;Minixfssupport
<>;ROMfilesystemsupport
[]Quotasupport
<>;Kernelautomountersupport
<*>;Kernelautomounterversion4support(alsosupportsv3)
CD-ROM/DVDFilesystems--->;
<*>;ISO9660CDROMfilesystemsupport
[]MicrosoftJolietCDROMextensions
[]Transparentdecompressionextension
<>;UDFfilesystemsupport
DOS/FAT/NTFilesystems--->;floppy要用到的文件格式
<*>;MSDOSfssupport
<*>;VFAT(Windows-95)fssupport
(437)DefaultcodepageforFAT(NEW)
(iso8859-1)DefaultiocharsetforFAT(NEW)
<>;NTFSfilesystemsupport
Pseudofilesystems--->;
[*]/procfilesystemsupportproc文件系统支持
[]/proc/kcoresupport
[]/devfilesystemsupport(OBSOLETE)
[]/dev/ptsExtendedAttributes
[*]Virtualmemoryfilesystemsupport(formershmfs)虚拟内存支持
[]tmpfsExtendedAttributes
[]HugeTLBfilesystemsupport
Miscellaneousfilesystems--->;
NetworkFileSystems--->;
<*>;NFSfilesystemsupportnfs客户端支持
[*]ProvideNFSv3clientsupport
[]ProvideNFSv4clientsupport(EXPERIMENTAL)
[]AllowdirectI/OonNFSfiles(EXPERIMENTAL)
<>;NFSserversupportnfs服务端支持
<>;SecureRPC:KerberosVmechanism(EXPERIMENTAL)
<>;SecureRPC:SPKM3mechanism(EXPERIMENTAL)
<>;SMBfilesystemsupport(tomountWindowssharesetc.)samba支持
<>;CIFSsupport(advancednetworkfilesystemforSamba,WindowandotherCIFScompliantservers)
<>;NCPfilesystemsupport(tomountNetWarevolumes)
<>;Codafilesystemsupport(advancednetworkfs)
<>;AndrewFileSystemsupport(AFS)(Experimental)
PartitionTypes--->;
NativeLanguageSupport--->;自己选
10.Profilingsupport--->;没选
11.Kernelhacking--->;没选
12.Securityoptions--->;没选
13.Cryptographicoptions--->;没选
14.Libraryroutines--->;
<>;CRC-CCITTfunctions
<*>;CRC32functions
;CRC32c(Castagnoli,etal)CyclicRedundancy-Check
五、编译安装
步骤:make-jn(n代表同时编译的进程,可以加快编译速度,n由你的配置决定,我的配置用15-25)
makemodules_install
makeinstall
六、grub的设置
设置之前先介绍一下2.6的I/O调度器
2.6包含的四个I/O调度器分别是No-opI/Oscheduler、AnticipatoryI/Oscheduler、DeadlineI/Oscheduler与CFQI/Oscheduler。
在后文中分别简称为ns、as、ds与cfq。
ns是一个简化的调度程序它只作最基本的合并与排序。与桌面系统的关系不是很大,主要用在一些特殊的软件
与硬件环境下,这些软件与硬件一般都拥有自己的调度机制对内核支持的要求很小,这很适合一些嵌入式系统环境。作为桌面用户我们一般不会选择它。
as是当前内核中默认的I/O调度器。它拥有非常好的性能,在2.5中它就相当引人注意。在与2.4内核进行的对比测试中,在2.4中多项以分钟为单位
完成的任务,它则是以秒为单位来完成的。正因为如此它成为目前2.6测试版中默认的I/O调度器。但它也存在着弱点,它本身是比较庞大与复杂的,
在一些特殊的情况下,特别是在数据吞吐量非常大的数据库系统中它会变的比较缓慢。
ds就是针对as的缺点进行改善而来的,还处于测试阶段,但已经很稳定了。目前表现出的性能几乎与as一样好。加之比as更加小巧,
是相当有前途的调度器,值得一试:)
cfq为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现,
mplayerxmms等多媒体播放器与它配合的相当好,回放平滑几乎没有因访问磁盘而出现的跳帧现象。对于喜欢在Linux下听音乐看电影的朋友不妨尝试一下。
好了,下面说说怎么设置:参数的格式为elevator=调度器名
修改/boot/grub/grub.conf,在kernel那行后门加入elevator=deadline
例如:kernel/boot/vmlinuz-2.6.10-bk4roroot=/dev/你的根分区elevator=deadline
七、reboot