手工编译linux桌面内核三,Linux系统内核编译基础

.Linux内核概述

–什么是内核

–Linux内核的特点

.Linux内核模块管理

–insmod、rmmod、lsmod、modprobe

.Linux内核源码结构

.内核编译基本步骤

Linux内核概述

.内核是Linux引导的时候被装入的程序,它

负责系统最底层的工作,直接与硬件进行

交流。软件通过内核来操作硬件。内核处

理的任务是在多任务之间进行切换,对于

磁盘的读写、 络接口、内存管理等。

.内核是由Linus维护的,各种发布版本的

Linux的内核都是完全相同的。

Linux内核概述

.什么是内核

将一些与底层硬件密切相关的或运行频率较高的软件模

块,以及为许多模块所公用的一些基本操作常驻内存,以

提高运行效率,通常将这部分内部核心程序称为操作系统

的内核。

.内核的基本功能:

–实现CPU定时器和中断处理

–实现对虚拟内存的管理

–实现对进程的管理和调度

–实现进程间通信(IPC)的机制

–实现对外围设备的驱动

–实现对虚拟文件系统的管理

–实现对 络的支持和管理

–……

Linux 系统结构

内核的构成

.内核的构成

内核主要由五个子系统组成:

-进程调度

-内存管理

-虚拟文件系统

- 络接口

-进程间通信

内核的构成

.进程调度(SCHED)

控制进程对CPU的访问。当需要选择下一

个进程运行时,由调度程序选择最值得运

行的进程。可运行进程实际上是仅等待

CPU资源的进程,如果某个进程在等待其

它资源,则该进程是不可运行进程。Linux

使用了比较简单的基于优先级的进程调度

算法选择新的进程。

内核的构成

.内存管理(MM)

允许多个进程安全的共享主内存区域。Linux的内

存管理支持虚拟内存,即在计算机中运行的程

序,其代码、数据、堆栈的总量可以超过实际内

存的大小,操作系统只是把当前使用的程序块保

留在内存中,其余的程序块则保留在磁盘中。必

要时,操作系统负责在磁盘和内存间交换程序

块。内存管理从逻辑上分为硬件无关部分和硬件

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

辑内存的交换;硬件相关的部分为内存管理硬件

提供了虚拟接口。

内核的构成

.虚拟文件系统(Virtual File System,VFS)

隐藏了各种硬件的具体细节,为所有的设

备提供了统一的接口,VFS提供了多达数

十种不同的文件系统。虚拟文件系统可以

分为逻辑文件系统和设备驱动程序。逻辑

文件系统指Linux所支持的文件系统,如

ext3、vfat等,设备驱动程序指为每一种硬

件控制器所编写的设备驱动程序模块。

内核的构成

. 络接口(NET)

提供了对各种 络标准的存取和各种 络

硬件的支持。 络接口可分为 络协议和

络驱动程序。 络协议部分负责实现每

一种可能的 络传输协议。 络设备驱动

程序负责与硬件设备通讯,每一种可能的

硬件设备都有相应的设备驱动程序。

内核管理

.进程间通讯(IPC)

处于中心位置的进程调度,所有其它的子系统都

依赖它,因为每个子系统都需要挂起或恢复进

程。一般情况下,当一个进程等待硬件操作完成

时,它被挂起;当操作真正完成时,进程被恢复

执行。例如,当一个进程通过 络发送一条消息

时, 络接口需要挂起发送进程,直到硬件成功

地完成消息的发送,当消息被成功的发送出去以

后, 络接口给进程返回一个代码,表示操作的

成功或失败。其他子系统以相似的理由依赖于进

程调度。

Linux内核特点

.源代码的公开性

–修补漏洞的速度快

–利用最新软件技术

.Linux的内核实现了一个操作系统内核应该

具有的全部功能,尤其具有强大的 络功

.Linux的内核从2.0版开始提供了对模块的支

Linux内核特点

.硬件方面

兼容各种硬件平台(CPU)、主板芯片组、各种

存储设备、显卡、 卡、声卡、SCSI卡、字符设

备、PCMCIA设备

. 络通信方面

–各种协议支持:TCP/IP、Netware、PPP、

SLIP、ISDN等

–防火墙、路由器、 关等 络功能

.文件系统方面

–各种类型的文件系统

–内存管理、多CPU处理等

Linux内核模块管理

.模块:将一些设备驱动或软件功能编译成

独立的模块化的组件,仅在需要的时候才

装入作为内核的一部分。模块机制可以精

简内核大小,并按照需要动态扩充内核功

能。

.模块通常为.o文件,linux标准模块目录:

/lib/modules/内核版本 /

.系统加载模块配置文件/etc/modules.conf

Linux内核模块管理

.lsmod

–查看系统内核已经加载的模块

.insmod

–向当前内核中插入一个新模块

–可直接指定.o路径

.rmmod

–从当前内核中移除一个模块

.modprobe

–加载指定模块,并自动处理依赖关系

–modprobe-c :查看模块安装名称

内核管理

.内核源代码文件

通常Linux内核源代码文件存放在/usr/src

中。

.下面我们来逐一介绍

#cd/usr/src/2.4

Linux内核源码结构

.COPYING

## GPL版权申明,看后你至少应该知道,

你对具有GPL版权的源代码改动而形成的

程序,或使用GPL工具产生的程序,具有

使用GPL发表的义务。其中之一就是公开

源代码。

Linux内核源码结构

.CREDITS

## 光荣榜,你应当感谢的一些人的信息,

其中的每一个人都对Linux做出过很大贡

献。

.Documentation/

## 文档目录,完整解释内核各功能的参考

文件,你可以有选择地看一下你感兴趣的

部分。

Linux内核源码结构

.MAINTAINERS

## 维护人员列表,对当前版本的内核各部

分都有谁负责。

.Makefile

## Linux编译处理文件。

.README

## Linus所写,核心及其编译配置方法简

单介绍。

Linux内核源码结构

.Rules.make

## make时使用的一些共同规则。

.arch/

## architecture(体系结构)。存放与不同

的硬件体系结构相关的核心源码。我关心

的i386启动过程在其中,包括Linux在多种

平台下的实现。如果要移植系统到一个新

的CPU环境中,这就是你要关心的目录。

Linux内核源码结构

.drivers/

## 驱动程序目录,存放各种硬件驱动设备程序,

包含大量设备驱动的实现,按类别分子目录。

.fs/

## 文件系统,所支持的各种文件系统源代码,实

现了当前流行的几乎所有文件系统。

.include/

## 嵌入文件目录,存放系统建构所需的头文件

(.h)。

Linux内核源码结构

.init/

.## 初始化文件,存放系统核心的初始化源

代码,包含main.c和version.c两个文件。

.lib/

## 一些工具,存放系统核心的函数库。

.mm/

## Memory Manager,存放系统所有的内

存管理源代码,虚拟页、缓冲的实现。

Linux内核源码结构

.modules/

## 模块文件目录,存放系统核心程序模块化的主

要源代码,用于存放编译时产生的模块目标文件

(参考编译过程)。

.net/

## 存放Kernel支持的所有 络通信协议的源代

码,包括TCP/IP在内的大量 络协议的实现。

.scripts/

## 描述文件、脚本,包含一些帮助编译内核的

Shell脚本程序,用于对核心的配置。

Linux内核源码结构

.ipc/

## ipc的实现,与SYS V兼容,存放核心的

进程间通信源代码。

.kernel/

## 存放最重要的核心源代码,调度、中

断、信 等的处理。

如何解读内核结构

.1.系统初始化目录init/

可以了解自举程序如何将内核载入内存中并将控

制权交给内核后,内核载入到init进程运行启动

系统的过程,还有arch/i386/kernel/head.S负责

一些与硬件平台相关的设置工作,然后转跳到

init/main.c中的main()函数。

.2.内存管理工作mm/

可以了解Linux内存的管理方式,mm/memory.c描

述了对物理内存的管理,mm/buffer.c描述了对

cache的管理,mm/swap_state.c对虚拟内存swap

的管理。

如何解读内核结构

.3.核心目录kernel/

各硬件平台通用的源代码都存放在kernel目录

中,如担任衍生process最重要的fork源程序代码

在kernel/fork.c中,关于System Control的机制

在kernel/sysctl.c中。

.4.文件系统fs/

Linux ext2文件系统的源代码在fs/ext2目录下,

其数据结构定义在include/linux/ext2_fs.h、

ext2_fs_i.h和ext2_fs_sb.h中。虚拟文件系统源

代码在fs/proc,其数据结构定义在

include/linux/fs.h。

如何解读内核结构

.5. 络通信协议net/

Linux 络功能的源代码include头文件在

include/net中, 络设备驱动程序在

drivers/net中,通信协议的通用源代码在

net/core目录中。

.6.硬件设备驱动程序drivers/

包括子目录:block/装置驱动程序主要包括IDE和

SCSI设备,如ide.c;char/字符设备,如终端机

源代码tty_io.c、鼠标busmoues.c等;cdrom/光

驱的驱动程序源代码;pci/;scsi/;net/;

sound/。

内核编译基本步骤

.确定编译内核的必要性:

–更新对用户系统中的某些硬件驱动

–删除内核中不用的设备驱动程序,以减少对内存

的占用

–需要使用现有的内核没有编译进去的 络协议

–提高Linux的稳定性能和效率

–需要使用一些现有内核不支持的新功能

.获取Linux内核的源代码

内核编译基本步骤

.1. 解包或清理

#tar zxvflinux-2.6.16.tar.gz -C /usr/src/

#cd/usr/src

#ln-s linux-2.6.16 linux-2.6

做一个链接,否则要手工运行

#cdlinux2.6

#make rmproper

删除所有因构核过程中产生的所有文件,即除了做make

clean外,还要删除.config、.depend等文件,把核心源码

恢复到最原始的状态。下次构核时就必须重新配置了。

内核编译基本步骤

.2. 配置(3种基本方式)

#make config[文字模式逐行配置界面]

#make menuconfig[文字模式菜单配置界面]

#make xconfig[图形模式配置菜单界面]

核心配置,调用./scripts/Configure 按照

arch/i386/config.in 来进行配置。命令执行完后

产生文件.config,其中保存着配置信息。下一次

再做make menuconfig将产生新的.config文件,

原.config被改名为.config.old。

内核编译基本步骤

.内核配置界面

-使用方向键在各选项间移动;使用“Enter”键进

入下一层选单;

-每个选项上的高亮字母是键盘快捷方式,使用它

可以快速地到达想要设置的选单项。在括 中按

“y”将这个项目编译进内核中,按“m”编译为模

块,按“n”为不选择(按空格键也可在编译进内

核、编译为模块和不编译三者间进行切换),按

“h”将显示这个选项的帮助信息,按“Esc”键将返回

到上层选单。

内核编译基本步骤

.注意,如果“make menuconfig”命令失败,

很可能是ncurses库没有安装。

.内核的配置选项很多,这里就主要选项进

行简要说明,使大家能根据自己的情况,

进行内核定制。如果某些项把握不准,可

以参考documentation/Configure.help文

件,也可搜索整个系统,并查看相关的选

项都在哪些文件中出现了。接下来就是选

项的配置说明情况。

内核选项

.1. Code maturity level options:代码成熟等级

此处只有一项:prompt for development and/or

incomplete code/drivers(选择发展中及/或尚未

完成的代码/驱动程式),如果你要试验现在仍处

于实验阶段的功能,比如khttpd、IPv6等,就必

须把该项选择为Y了;否则可以把它选择为N。默

认情况下是选择的,这将会在设置界面中显示还

在开发或者还没有完成的代码与驱动。你应该选

择它,因为有许多设备可能必需选择这个选项才

能进行配置,实际上它是安全的。

内核选项

.2. General setup:常规设置

.[*] Support for paging of anonymous

memory

.这个选项将使你的内核支持虚拟内存,也

就是让你的计算机好像拥有比实际内存更

多的内存空间用来执行很大的程序。默认

是选择的。

内核选项

.[*] System V IPC

.为进程提供通信机制,这将使系统中各进程间有

交换信息与保持同步的能力。有些程序只有在选Y

的情况下才能运行,所以不用考虑,这里一定要

选。

.[ ] BSD Process Accounting

.这里选择Y将会让内核为用户层的进程建立一个帐

目(进程通过一个特殊的系统调用来通知内

核),当程序退出时内核会将进程的相关信息记

录到帐目文件中,主要包括进程的创建时间、创

建者,内存占用等信息。如果你需要就Y吧。

内核选项

.[*] Sysctlsupport

.这将提供一个接口让你可以动态的更改一

些核心参数与变量,而不需要重新启动系

统。打开这个选项将会增加内核的体积至

少8KB。如果你的内核仅用制作安装与恢复

系统的系统盘那么可以不选,以减少对内

存的占用。

内核选项

.[ ] Kernel .configsupport

.这将会把内核的配置信息与相关的文档说明编绎

进内核中,以后可能使用一些工具来撮它用来重

新构建内核,一般不用选它。

.[ ] Remove kernel features (for embedded

systems) —>

.这个选项将会把一些特性从内核中移除,以减少

内核体积。对于桌面用户来讲,这可不是一个好

主意,所以不要选它。

内核选项

.3. Loadable module support:可加裁模块选项

.[*] Enable loadable module support

.这个选项可以让你的内核支持模块,模块是什么

呢块是一小段代码,编绎后在系统内核运行时

动态的加入内核,从而为内核增加一些特性或是对

某种硬件进行支持。一般一些不常用到的驱动或特

性可以编绎为模块以减少内核的体积。在运行时可

以使用modprobe命令来加载它到内核中去(在不

需要时还可以移除它)。

.一些特性是否编绎为模块的原则是,不常使用的,

特别是在系统启动时不需要的驱动可以将其编绎为

模块,如果是一些在系统启动时就要用到的驱动比

如说文件系统,系统总线的支持就不要编为模块

了,否则无法启动系统。

内核选项

.[ ] Module unloading

.这个选项可以让你卸载不再使用的模块,

如果不选的话你将不能卸载任何模块(注

意,有些模块一旦加载就不能卸载,与是

否选择了此选项无关)。不选择这个选项

会让你的内核体积减小一点。

内核选项

.Module versioning support

.这个选项允许用户可以使用其它版本内核中编译

的模块,不过并不可靠,所以一般不选择它。

.[*] Automatic kernel module loading

.一般情况下,如果我们的内核在某些任务中要使

用一些被编绎为模块的驱动或特性时,我们要先

使用modprobe命令来加载它,内核才能使用。不

过,如果你选择了这个选项,在内核需要一些模

块时它可以自动调用“modprobe”命令来加载需要

的模块,这个是非常不错的特性,推荐选择Y。

内核选项

.4. Processor type and features:中央处理

器(CPU)类型及特性

.这是一个比较新的特性,主要的目的是使

Linux可以支持多种PC标准,一般我们使用

的PC机是遵循所所谓的IBM兼容结构

(pc/at)。这个选项可以让你选择一些其

它架构。我们一般选择PC-compatible就可

以了。

内核选项

.Processor family

(586/K5/5×86/6×86/6x86MX) —>

.你是什么CPU就选什么吧

.[ ] Generic x86 support

.这个选项提供了对X86系列CPU最大的兼容

性,用来支持一些很少见的x86体系的

CPU,它可能会降低一些系统性能。所以

如果你的CPU能够在上面的列表中捞到就

不要选这个吧。

内核选项

.HPET Timer Support

.这也是一个新的特性,HPET是Intel制定的

新的用以代替传统的8254(PIT)中断定时

器与RTC的定时器,全称叫作高精度事件

定时器。如果你有一台较新的机器就选

它,一般它是一个安全的选项,即使你的

硬件不支持HPET也不会造成问题,因为它

会自动用8254替换。

内核选项

.[*] PreemptibleKernel

.这可是个新特性,几乎所有介绍2.6的文章都会提

到,这就是可抢先式内核。也就是说一些优先级

很高的程序可以先于一些低优先级的程序执行,

即使这些程序是在核心态下执行(这实际上仍然

不是真正的抢先式)。从而减少内核潜伏期,提

高系统的响应。当然在一些特殊的点的内核是不

可抢先的,比如内核中的高度程序自身在执行时

就是不可被抢先的。这个特性可以提高桌面系

统、实时系统的性能,所以还是选上吧。

内核选项

.[*] Machine Check Exception

.如果你的系统出现一些问题,比如CPU过

热,内核将会在屏幕上打印相关信息来提

醒你。这个功能是需要硬件支持的。你可

以查看/proc/cpuinfo看看是否有mce标志,

有的话就选吧。如果选择此项之后出现问

题,可以在启动时加nomce参数来关闭

它。

内核选项

.[*] Check for non-fatal errors on AMD

Athlon/Duron/ Intel Pentium 4

.打开这个选项将会检查你机器上可能存在的问

题,如果有一个非致命错误出现将自动的修复并

且记录,这可以帮助你查出程序出现问题的原

因,是一个不错的选项,当然它只能用在AMD

Athlon/Duron/ Intel Pentium 4这类CPU上。如果

你正好在用它们中的一个你就选吧。

.[*] check for P4 thermal throttling interrupt

.如果打开这个选项,在P4的CPU温度过高(也就

是P4的温控装置起作用)时会在屏幕上显示出相

关的信息,根据你的情况选择吧。

内核选项

. Toshiba Laptop support

.这个选项是针对Toshiba笔记本的,可以用来访问

Toshiba的系统管理模式,也就是可以直接设置

BIOS。不过要注意它只在Toshiba自己的BIOS中

起作用。但是应该值得注意的是如果有一台

Toshiba笔记本,BIOS是Phoenix的,那这个选项

就不能发挥作用。

. Dell laptop support

.这个同上面的选项基本相同,是支持Dell的笔记

本的。

内核选项

. /dev/cpu/microcode -Intel IA32 CPU

microcode support

.这个选项将让你可以更新Intel IA32系统处理器的

微代码,当然你还必须在文件系统选项中选择

devfs才能正常的使用它。如果你把它编绎为模块

你还需要在modprobe.conf中加上这一行“alias

char-major-10-184 microcode”。

.内核本身并不带有微代码的二进制文件,你可以

到这个 址去得到新的信息。

内核选项

. /dev/cpu/*/msr-Model-specific

register support

.这个选项桌面用户一般用不到,它主要用

在Intel的嵌入式CPU中的,这个寄存器的

作用也信赖与不同的CPU类型而有所不

同,一般可以用来改变一些CPU原有物理

结构的用途,但不同的CPU用途送别也很

大。

内核选项

. /dev/cpu/*/cpuid-CPU information support

.这会在/dev/cpu中建立一系列的设备文件,用以

让过程去访问指定的CPU。一般不用选。

. BIOS Enhanced Disk Drive calls determine

boot disk

.这将可以打开实模式下BIOS的增强磁盘设备服

务,以决定从哪个磁盘上启动。这一般是安全

的,不过大多数BIOS提供商都没有实现这个特

性。

.如果有大容量的内存(超过4G)可以选择此选

项,以使内核可以使用这部分内存。

内核选项

.[ ] Math emulation

.在你的CPU上如果没有数学协处理器的话,打开

这个选项可以让内核模拟一个,以提升浮点计算

能力,不过慢的可以。如果你使用的不是古董

CPU的话(486SX以前的)这一项你永远都不需

要。

.[*] MTRR (Memory Type Range Register)

support

.在Intel p6家族的处理器中(Ppro、PII和更新的)

有一个内存类型范围寄存器,可以用来控制处理

器访问的内存范围。打开它一般可以提升显示的

显示性能,所以我们当然要在这选Y啦。

内核选项

.5. Power management options

(ACPI,APM):高级电源管理

内核选项

.[*] Power Management support

.如果你想让Linux支持高级电源管理,例如

软关机、系统休眠等,需要选择此选项。

内核选项

.[ ] Software Suspend (XPERIMENTAL)

.选择这个选项可以挂起你的计算机(类似

Windows XP中的休眠),打开这项功能后,你可

以使用swsusp或者shutdown –z来挂起你的计算

机。这样系统会将你当前正在进行的工作(也就

是当前内存中的内容)作成一个镜像保存到你的

交换分区中,在你下一次启动时使用启动参数

“resume=/dev/你的交换分区”,内核就会将上一

次的工作内核从镜像文件中恢复到内存,这可以

大大提高系统的启动速度。当你不想恢复上一次

的工作时向内核传递参数“noresume”。不过系统

启动后你的交换分区将不可以使用,你可以使用

mkswap命令来重新格式化你的交换分区。这个功

能不需要高级电源管理的支持。

内核选项

.[ ] Support-to-Disk Support

.这个选项与上面的功能基本相同,不过更

灵活一些,可以通过下面的子选项来指定

一个专用的交换分区来保存内存镜像。

.( ) Default resume partition

.与上面的选项配合,来指定保存镜像的分

区。

内核选项

.ACPI (Advanced Configuration and Power

Interface) Support —>

.从这里进入ACPI电源管理的配置界面,要

注意ACPI与APM不能同时使用。如果同时

配置了这两者,那么在系统启动时,若发

现一个可工作的ACPI设备,那么APM将被

关闭,ACPI会被加载。

内核选项

.[*] ACPI Support

.这个选项应该不用我多说了,要想让你的

系统使用ACPI来管理你的电源就要选上

它,另外要想让它起作用,你还要在系统

中安装acpid守护程序。

内核选项

.[*] Sleep state (EXPERIMENTAL)

.选择这个选项可以使你的系统具有挂起的功能,

也就是说你可以暂中断你的工作,让你的系统处

于一种低电能消耗的状态(dleepstate),你此

时的系统状态会保存在内存或者磁盘上(取决于

挂起的深度),当你需要时再恢复到正常的工作

状态。但由于各种系统之间的送别,目前这项功

能并不完善。只有很少的设备可以完美地支持这

个特性,所以不建议一般用户使用它。

内核选项

. AC Adapter

.这是用来支持移动系统中的交流适配器

的,以指示当前系统是不是在使用交流

电,对于台式机不需要这个选项。

. Battery

.这个选项用于通过/proc/acpi/battery来向用

户提供移动系统中的电池状态信息。同上

面那个选项一样对台式机没有作用。

内核选项

. Button

.这个选项用于注册苦于电源按钮的事件,比如

power、sleep等,当按下按钮时事件将发生,一

个守护程序将读取/proc/acpi/event,并执行用户

在这些事件上定义的动作比如让系统关机。

. Fan

.这个选项提供对系统风扇的控制支持,可以通过

用户层的程度来对系统风扇进行控制(比如打

开、关闭,读取当前风扇的运行状态等,不过只

有极少数的硬件支持它)。

内核选项

. ASUS/MedionLaptop Extras

.这主要是为ASUS生产的笔记本电脑准备

的,以提供对这些系统上那些额外的按钮

的支持,用户可以通过它们来拱形或者关

闭LCD的背光、调整亮度、定制LED的闪烁

指示等功能。用户可以通过/proc/acpi/asus

来改变这些设置。

内核选项

. Toshiba Laptop Extras

.这个选项是对Toshiba笔记本提供特别支持

的,它的作用同上面的选项基本相同,如

果你有一台这样的本本的话就选它吧。

.[ ] Debug StatemenAts

.如果选择它当ACPI出现错误时会打印出详

细的信息,这将会增加内核的体积大约

50K,如果没有必要还是不要选它吧。

内核选项

.[ ] Relaxed AML

.选择它的话ACPI翻译器将会放松对AML的

错误检查,一些笔记本电脑可能需要它才

能正常的使用ACPI(一些糟糕的桌面机可

能也需要它,如果你的系统使用ACPI时出

现问题不妨选上它试试)。

内核选项

.6. Bus options(PCI、PCMCIA、EISA、MCA和

ISA):总线支持

.用以设置系统总线。根据主板参数自己进行选

择。

.[ ] PCI support

.针对PCI总线的选项,下面还有ISA和EISA子项,

一般都是需要的。

.[ ] Support for hot-pluggable devices

.这个选项是对热插拔设备的支持。

内核选项

.[ ] PCMCIA/CardBussupport”

.这个选项支持PCMCIA。

内核选项

.7. Executable file formats:可执行文件格式

一般全要选上。

.8. Networking: 络选项

内核选项

.9. Device Drivers:设备驱动程序

.用来选择设备驱动程序。声卡、显卡、 卡和电

视卡等驱动都在这里选择。

.Plug and Play support

.这个选项支持即插即用。

.Block devices

.这个选项支持块设备。

.SCSI device support

.这个选项支持SCSI 设备。

内核选项

.Multi-device support(RAID and LVM)

.这个选项支持RAID和逻辑卷。

.Networking support

.此选项支持 络,包括 络协议和 络设备,协

议中肯定要“TCP/IP”项,根据自己的 卡选择相

应的设备;ISDN上 必需选“ISDN subsystem”选

项。

.Sound

.这个选项是声卡驱动,有两种选择,一种是ALSA

驱动,一种是Open Sound System驱动,选择支

持自己声卡的那种,将之编译进内核。

内核选项

.USB Support

.该选项该项很重要,平常用的优盘就是一

种USB设备;对USB而言,至少需要

“Support for USB”、“USB device

filesystem”、“ECHI HCD(USB 2.0)

support”、“UCHI HCD(most Intel and

VIA)support”、“USB Audio support”、

“USB MIDI support”和“USB Mass Storage

support”选项。

内核选项

.10. File systems:文件系统

.这里的内容很多,建议在缺省的基础上进

行修改。一般需要DOS FAT(FAT16、

FAT32)、VFAT、EXT3、NTFS和

ISO9660(标准光盘使用的文件系统)支

持。

内核选项

.11. Kernel hacking:内核hack选项

.12. Security options:安全选项

.13. Cryptographic options:加密选项

.14. Library routines:库子程序

内核选项

.15. Load an Alternate Configuration File

.读入一个外部配置文件

.16. Save Configuration to an Alternate File

.将配置保存到一个外部文件

内核编译基本步骤

.3. 检查依赖关系

#make dep

产生两个文件.depend和.hdepend。

其中.hdepend表示每个.h文件都包含其它哪些嵌

入文件。而.depend 文件有多个,在每个会产生

目标文件(.o)文件的目录下均有,它表示每个

目标文件都依赖哪些嵌入文件(.h)。

#make clean [清理不需要的模块和文件]

清除以前构核所产生的所有目标文件、模块文

件、核心以及一些临时文件等,不产生任何文

件。

内核编译基本步骤

.4. 编译内核

#make bzImage

构核。通过各目录的Makefile文件进行。会

在各个目录下产生一大堆目标文件,若核

心代码没有错误,将产生文件vmlinuz,这

就是所构的核心。产生映射文件

System.map通过各目录的Makefile文件进

行。并产生压缩比例大的核心映象文

件./arch/$(ARCH)/boot/bzImage。

.5. 编译选择的模块

#make modules

编译模块文件,你在makeconfig时所配置的所

有模块将在这时编译,形成模块目标文件,并把

这些目标文件存放在modules目录中。使用如下

命令看一看:

lsmodules

另外注意,这儿我们产生了一些隐含文件

.config.config.old.depend

.hdepend.version

.6. 安装编译好的模块

#make modules_install

把上面编译好的模块目标文件目录

/lib/modules/$KERNEL_VERSION/ 中。比如我的版本是

2.6.16,做完这个操作后可使用下面的命令看看:

ls/lib/modules/2.6.16/

相关的命令还有很多,有兴趣可看相关资料和Makefile文

件。

.7. 安装新内核

#make install

注意:如果重新编译现有内核注意要先做好备份

内核编译基本步骤

.8. 手动安装新内核

#cp /usr/src/2.6.16/arch/i386/boot/bzImage /boot/

#ln-s /boot/bzImage-2.6.16 /boot/vmlinuz-2.6.16

#mkinitrd/boot/initrd-2.6.16.img 2.6.16

#mv/boot/System.map/boot/System.map.old

#cp /usr/src/2.6.16/System.map /boot/

#vi /boot/grub/grub.conf

title The New Linux 2.6.16

kernel /boot/vmlinuz-2.6.16 roroot=LABEL=/

acpi=off vga=791 splash=silent

initrd/boot/initrd-2.6.16.img

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24695 人正在系统学习中 相关资源:软件标书范本(技术部分)_软件技术标书-项目管理文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月2日
下一篇 2021年4月2日

相关推荐