CentOS5.3 系统的内核版本为:
准备升级内核到最新的 -2.6.29.3 版本,下载地址:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.gz
在 CentOS 系统下,把内核压缩包复制到 /usr/src/kernels 中,然后解压缩:
然后建立一个符号链接:
删除所有配置文件和 *.o 文件:
make mrproper 命令确保源代码目录下没有不正确的 *.o 文件以及文件的相互依赖。若是第一次编译内核,那么这个命令可以不运行,如果是多次编译过内核,那么在编译前使用此命令。
( make mrproper Delete the current configuration, and all generated files)
配置内核相关命令:
make config ( 基于文本的最为传统的配置界面,一旦回答错误则无法返回,不推荐使用 )
make menuconfig ( 基于文本选单的配置界面,错误选择后可以返回,推荐)
make xconfig ( 基于图形窗口模式的配置界面 )
make oldconfig ( 在原来内核配置的基础上修改一些小地方 )
配置内核时选择相应的配置,有三种,含义分别为:
Y -- 将该功能编译进内核
N -- 不将该功能编译进内核
M -- 将该功能编译成在需要时动态插入到内核中的模块
编译内核:
1、执行 make menuconfig 后如下图示:
菜单选项说明:
<1> General Setup
General Setup 选项允许配置基本的内核参数。这些选项可以配置内核如何与消息队列、内存、审核系统等互动。除非清楚自己在做什么,否则不要修改此节的设置。
<2>[*] Enable loadable module support --->
使能可加载模块的支持。一般情况下,在计算机检测到新硬件时,它会自动安装驱动模块( 如果有的话 ).
以上选项,默认即可。一般不要启用 Forced Module Unloading ,因为这会导致卸载其他硬件依赖的模块,而且不是所有的开发人员都记得在模块上配置正确的数字签名。
Loadable module support 都使得用户不必把所有的驱动都包括在主内核中,避免了内核变得大而笨拙。
<3> Block Layer
Block Layer 子菜单可以配置内核如何与存储设备交互。
其中,Support For Large Block Device 选项默认开启。该选项对于支持大于 2TB 驱动器的访问 --- 或对大于 2TB 设备上配置的逻辑卷或 RAID 阵列访问。
<4> Processor Type and Features
这里,可以为 CPU 自定义 Linux 内核。该选项大致上相当于可以直接在计算机安装各种 kernel-x.cputype.rpm 包。
在选择处理器的类型后,可以配置下面其他几个选项:
Power Management Options 子菜单允许配置 Advanced Power Management(APM) 或 Advanced Configuration and Power Interface( ACPI ),以及和 CPU 关联的电源管理设置,这对延长笔记本计算机的寿命是非常关键的。
ACPI 默认是开启的。
<6> Bus Options
Bus Options 菜单选项允许通过指定的总线调整硬件通信。
<7> Executable File Formats
在多数情况下没有必要修改 Executable File Format 选项。当 Linux 可执行文件链接程序库时,它们通常是 Executable and Linkable Format (可执行和可链接格式,ELF)。随着从 1995 转向 ELF,只有最老的程序还要求对 a.out 和 ECOF 二进制格式的支持( ECOFF 是 Extended COFF 的简写,这种格式用于 MPS 和 Alpha 处理器,这两种处理器都用于工作站和嵌入式系统)。
使用了 <*> Kernel support for MISC binaries 这一项( 默认使用 )能够帮助需要解释器运行的程序,如 java、Python、或 .NET。
<8> Networking
在各种 Networking 菜单中能配置基本网络软件和具体设备。
Networking Options 子菜单主要用于配置网络软件。虽然可以激活其他协议栈,如 IPX/SPX,但很多选项是和 linux 与 internet 的主要协议 TCP/IP 有关的。如:
Networking Packet Filtering ( 代替了 ipchains )子菜单允许内核使用 iptables 支持防火墙。ipchans 和 ipfwadm 命令已经作废,它们是内核 2.2 和 2.0 中的命令。
<9> Device Drivers --->
大部分硬件设备的驱动都包括在这个菜单中。
<10> Firmware Drivers --->
固件驱动
<11> File systems --->
文件系统
<12> Kernel hacking --->
此菜单支持能帮助用户调试驱动或其他内核问题的驱动程序。使用该菜单的一般是开发人员。
<13>Security options --->
此菜单包括和安全性相关的模块,包括身份验证密钥、网络访问控制、BSD级别安全性和对 U.S National Security Agency (NSA) 的相对脚心的支持。
<14>Cryptographic API --->
Linux 支持各式各样的加密接口和算法,这里提供相关的 API 。
<15>Virtualization (NEW) --->
虚拟化支持
<16>Library routines --->
此菜单包括 CRC 32 校验和支持,对数据流的 zlib 压缩和解压缩支持,以及快速排序数据算法。
编译内核:
首先,确定依赖关系:
这个命令现在似乎已经没什么用了。
清理临时文件:
编译内核:
成功后,末尾有类似于如下信息:
编译可加载内核模块:
安装编译的模块:
创建模块链接:
更换内核:
至此,应该说已经完成了。因为GRUB里的 menu.lst 文件已经被修改,故无需再人工修改了。
引用[root@localhost /]# uname -r
2.6.18-128.1.6.el5xen
准备升级内核到最新的 -2.6.29.3 版本,下载地址:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.gz
在 CentOS 系统下,把内核压缩包复制到 /usr/src/kernels 中,然后解压缩:
引用tar -xvzf linux-2.6.29.3.tar.gz
然后建立一个符号链接:
引用[root@localhost kernels]# ln -s linux-2.6.29.3 linux
删除所有配置文件和 *.o 文件:
引用cd linux
make mrproper
make mrproper 命令确保源代码目录下没有不正确的 *.o 文件以及文件的相互依赖。若是第一次编译内核,那么这个命令可以不运行,如果是多次编译过内核,那么在编译前使用此命令。
( make mrproper Delete the current configuration, and all generated files)
配置内核相关命令:
make config ( 基于文本的最为传统的配置界面,一旦回答错误则无法返回,不推荐使用 )
make menuconfig ( 基于文本选单的配置界面,错误选择后可以返回,推荐)
make xconfig ( 基于图形窗口模式的配置界面 )
make oldconfig ( 在原来内核配置的基础上修改一些小地方 )
配置内核时选择相应的配置,有三种,含义分别为:
Y -- 将该功能编译进内核
N -- 不将该功能编译进内核
M -- 将该功能编译成在需要时动态插入到内核中的模块
编译内核:
1、执行 make menuconfig 后如下图示:
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_80593e0bd54aad9.jpg)
菜单选项说明:
<1> General Setup
General Setup 选项允许配置基本的内核参数。这些选项可以配置内核如何与消息队列、内存、审核系统等互动。除非清楚自己在做什么,否则不要修改此节的设置。
<2>[*] Enable loadable module support --->
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_8741738a04d1562.jpg)
使能可加载模块的支持。一般情况下,在计算机检测到新硬件时,它会自动安装驱动模块( 如果有的话 ).
以上选项,默认即可。一般不要启用 Forced Module Unloading ,因为这会导致卸载其他硬件依赖的模块,而且不是所有的开发人员都记得在模块上配置正确的数字签名。
Loadable module support 都使得用户不必把所有的驱动都包括在主内核中,避免了内核变得大而笨拙。
<3> Block Layer
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_f815d0232b67464.jpg)
Block Layer 子菜单可以配置内核如何与存储设备交互。
其中,Support For Large Block Device 选项默认开启。该选项对于支持大于 2TB 驱动器的访问 --- 或对大于 2TB 设备上配置的逻辑卷或 RAID 阵列访问。
<4> Processor Type and Features
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_7f20b14817619fa.jpg)
这里,可以为 CPU 自定义 Linux 内核。该选项大致上相当于可以直接在计算机安装各种 kernel-x.cputype.rpm 包。
在选择处理器的类型后,可以配置下面其他几个选项:
- 对称多处理支持;
- 管理 CPU 吞吐量的抢占式调度;
- 高内存支持,如果内存超过 4GB 或 64GB 的话;
- 计时器频率
- 支持多 CPU 和 Toshiba 或 Dell 笔记本( 其中选 M,它使相关的驱动模块在文件中可用)
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_7d3483795314c1c.jpg)
Power Management Options 子菜单允许配置 Advanced Power Management(APM) 或 Advanced Configuration and Power Interface( ACPI ),以及和 CPU 关联的电源管理设置,这对延长笔记本计算机的寿命是非常关键的。
ACPI 默认是开启的。
<6> Bus Options
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_c167a1c32d38828.jpg)
Bus Options 菜单选项允许通过指定的总线调整硬件通信。
<7> Executable File Formats
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_4cdc8ded4100a10.jpg)
在多数情况下没有必要修改 Executable File Format 选项。当 Linux 可执行文件链接程序库时,它们通常是 Executable and Linkable Format (可执行和可链接格式,ELF)。随着从 1995 转向 ELF,只有最老的程序还要求对 a.out 和 ECOF 二进制格式的支持( ECOFF 是 Extended COFF 的简写,这种格式用于 MPS 和 Alpha 处理器,这两种处理器都用于工作站和嵌入式系统)。
使用了 <*> Kernel support for MISC binaries 这一项( 默认使用 )能够帮助需要解释器运行的程序,如 java、Python、或 .NET。
<8> Networking
![Linux编译升级内核 Linux编译升级内核](http://ah.img1001.com/uu2/uu_0905_4/beyes_26_2_0a58026b9ea9baf.jpg)
在各种 Networking 菜单中能配置基本网络软件和具体设备。
Networking Options 子菜单主要用于配置网络软件。虽然可以激活其他协议栈,如 IPX/SPX,但很多选项是和 linux 与 internet 的主要协议 TCP/IP 有关的。如:
Networking Packet Filtering ( 代替了 ipchains )子菜单允许内核使用 iptables 支持防火墙。ipchans 和 ipfwadm 命令已经作废,它们是内核 2.2 和 2.0 中的命令。
<9> Device Drivers --->
大部分硬件设备的驱动都包括在这个菜单中。
<10> Firmware Drivers --->
固件驱动
<11> File systems --->
文件系统
<12> Kernel hacking --->
此菜单支持能帮助用户调试驱动或其他内核问题的驱动程序。使用该菜单的一般是开发人员。
<13>Security options --->
此菜单包括和安全性相关的模块,包括身份验证密钥、网络访问控制、BSD级别安全性和对 U.S National Security Agency (NSA) 的相对脚心的支持。
<14>Cryptographic API --->
Linux 支持各式各样的加密接口和算法,这里提供相关的 API 。
<15>Virtualization (NEW) --->
虚拟化支持
<16>Library routines --->
此菜单包括 CRC 32 校验和支持,对数据流的 zlib 压缩和解压缩支持,以及快速排序数据算法。
编译内核:
首先,确定依赖关系:
引用make dep
这个命令现在似乎已经没什么用了。
清理临时文件:
引用make clean
编译内核:
引用make bzImage #避免编译出来的内核过大
或
make zImage #编译后出来的内核大
成功后,末尾有类似于如下信息:
引用Root device is (8, 7)
Setup is 12812 bytes (padded to 13312 bytes).
System is 2193 kB
CRC 2b8a03b2
Kernel: arch/x86/boot/bzImage is ready (#1)
编译可加载内核模块:
引用make modules
安装编译的模块:
引用make modules_install
创建模块链接:
引用/sbin/depmod -a
更换内核:
引用cd /usr/src/linux
cp System.map /boot/System.map-2.6.29.3
cp arch/i386/boot/bzImage /boot/linuz-2.6.29
new-kernel-pkg --mkinitrd --depmod --install 2.6.29
至此,应该说已经完成了。因为GRUB里的 menu.lst 文件已经被修改,故无需再人工修改了。
转载于:https://blog.51cto.com/echo1937/1294898