2024年4月28日发(作者:)

--make all & make module_isntall & make install顺序需要记住,每个步骤做的什

么,以及生成的文件是什么,以及最后修改文件需要记住。

1. Linux内核结构

首先我们介绍一下Linux 内核的结构,Linux内核主要由五个部分组成:进程调度,

内存管理,虚拟文件系统,网络接口,进程间通信。

1.1 进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,

由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的 进程,

如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单

的基于优先级的进程调度算法选择新的进程。

1.2 内存管理(MM)允许多个进程安全的共享主内存区域。Linux 的内存管理支持

虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内

存的大小,操作系统只是把当前使用的程序块保留在内存中,其余 的程序块则保留

在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上

分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映 射和逻辑内存的

对换;硬件相关的部分为内存管理硬件提供了虚拟接口。

1.3 虚拟文件系统(Virtual File System,VFS)隐藏了各种硬件的具体细节,为所有

的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统

可以分为逻辑文件 系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系

统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模

块。

1.4 网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络

接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传

输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应

的设备驱动程序。

1.5 进程间通讯(IPC) 支持进程间各种通信机制。

2.为什么要升级内核

从字面意思我们可以看出,Linux的内核承担着Linux操作系统的最为核心的任务,

是其它程序和硬件等运行过程中的仲裁者:它要管理所有进程的内存,保证它们都

能平等得到处理器的时隙。此外,它还提供程序和硬件之间的接口等功能。

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、

更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系

统内核是Linux使用者的必要操作内容。

一般,内核的版本序列号使用三个数字表示,如2.4.8,版本号越高表示功能越强。

版本号分为两个系列:一种是产品系列,以偶数命名,例如, 1.2.x、2.0.x、2.2.x

等,运行稳定,已经经过较为周密的测试;另外一种是开发测试系列,以奇数命名,

用以进行最新功能的测试,不建议初学者 和生产过程中使用。

3.让我们开始行动

3.1 利其器,首先我们的准备好要用的工具,有如下四个

module-init-tools

mkinitrd

lvm2

device-mapper

可以用rpm -qa *来查询,如果是fc8的话应该已经安装好了,版本嘛,不要

太老的过分就好了

3.2下载你需要的内核源码

/pub/linux/kernel/v2.6/这里面找去吧

要查看你自己的版本可以uname -r

3.3处理源码

1》# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执

行该命令)

# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,

则没有这个文件夹,此 命令行可略过)

# tar jvxf 2 (解压新内核)

# ln -s linux-2.6.25.14 linux (重新生成linux文件夹)

Linux系统的核心代码存放于目录/usr/src/linux,实际上,该目录是一个链接,

指向当前所用的核心版本的 目录,例如如果当前使用的版本是 2.4,则该核心的实

际目录应该是: /usr/src/linux-2.4,而新下载的内核中的目录是linux,这样,直

接在/usr/src下解包会导致原来的内核目录被覆盖。所以稳妥 的做法是,首先删除

链接linux,然后解包、更名、重新链接。在解包前要确认在/usr/src目录下没有叫

linux的目录,或者不再想保留该目录。

2》配置内核选项。有点繁琐,~~希望一次成功哦~~。

# cd linux-2.6.25.14 (进入到/usr/src/linux-2.6.25.14目录下)

# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)

# make menuconfig (配置内核各选项)

此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,

你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,

以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):

(1)Loadable Module support选项中,选上“Module unloading”和

“Automatic kernel module loading”这两项;

(2)Device Drivers--->Block Devices中选上“Loopback device support”;

Device Drivers--->Multi-device support(RAID and LVM)处要选上

“device mapper support”;

Device Drivers--->Graphics support,一定要选上

“ Support for frame buffer devices”;

Device Drivers --->USB support --->选上“USB Mass Storage support”(如果是

在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)

Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) --->