linux-2.6内核升级详细文档linux 2.6内核




linux-2.6内核升级详细文档linux 2.6内核

2022-07-20 21:07:00 网络知识 官方管理员

做一件事情,首先要知道自己在干什么,而不是盲目得升级内核,现在升级内核有点泛滥,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


发表评论:

最近发表
网站分类
标签列表