1. <form id='Nv6Fzy'></form>
        <bdo id='Nv6Fzy'><sup id='Nv6Fzy'><div id='Nv6Fzy'><bdo id='Nv6Fzy'></bdo></div></sup></bdo>

          • 当前位置:首页 >> IT/计算机 >>

            Linux系统内核编辑基础


            Linux系统内核编译基础
            姜英杰

            Linux系统内核编辑基础
            ? Linux内核概述 –什么是内核 –Linux内核的特点 ? Linux内核模块管理 –insmod、rmmod、lsmod、modprobe ? Linux内核源码结构 ? 内核编译基本步骤

            Linux内核概述
            ? 内核是Linux引导的时候被装入的程序,它 负责系统最底层的工作,直接与硬件进行 交流。软件通过内核来操作硬件。内核处 理的任务是在多任务之间进行切换,对于 磁盘的读写、网络接口、内存管理等。 ? 内核是由Linus维护的,各种发布版本的 Linux的内核都是完全相同的。

            ? 什么是内核 将一些与底层硬件密切相关的或运行频率较高的软件模 块,以及为许多模块所公用的一些基本操作常驻内存,以 提高运行效率,通常将这部分内部核心程序称为操作系统 的内核。 ? 内核的基本功能: –实现CPU定时器和中断处理 –实现对虚拟内存的管理 –实现对进程的管理和调度 –实现进程间通信(IPC)的机制 –实现对外围设备的驱动 –实现对虚拟文件系统的管理 –实现对网络的支持和管理 –……

            Linux内核概述

            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内核的源代码 HTTP http://www.kernel.org/pub/ FTP ftp://ftp.kernel.org/pub

            内核编译基本步骤
            ? 1. 解包或清理 #tar zxvf linux-2.6.16.tar.gz -C /usr/src/ #cd /usr/src #ln -s linux-2.6.16 linux-2.6 做一个链接,否则要手工运行 #cd linux2.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吧。

            内核选项
            ? [*] Sysctl support ? 这将提供一个接口让你可以动态的更改一 些核心参数与变量,而不需要重新启动系 统。打开这个选项将会增加内核的体积至 少8KB。如果你的内核仅用制作安装与恢复 系统的系统盘那么可以不选 ,以减少对内 存的占用。

            内核选项
            ? [ ] Kernel .config support ? 这将会把内核的配置信息与相关的文档说明编绎 进内核中,以后可能使用一些工具来撮它用来重 新构建内核,一般不用选它。 ? [ ] 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/5x86/6x86/6x86MX) ---> ? 你是什么CPU就选什么吧 ? [ ] Generic x86 support ? 这个选项提供了对X86系列CPU最大的兼容 性,用来支持一些很少见的x86体系的 CPU,它可能会降低一些系统性能。所以 如果你的CPU能够在上面的列表中捞到就 不要选这个吧。

            内核选项
            ? HPET Timer Support ? 这也是一个新的特性,HPET是Intel制定的 新的用以代替传统的8254(PIT)中断定时 器与RTC的定时器,全称叫作高精度事件 定时器。如果你有一台较新的机器就选 它,一般它是一个安全的选项,即使你的 硬件不支持HPET也不会造成问题,因为它 会自动用8254替换。

            内核选项
            ? [*] Preemptible Kernel ? 这可是个新特性,几乎所有介绍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) ? 选择这个选项可以使你的系统具有挂起的功能, 也就是说你可以暂中断你的工作,让你的系统处 于一种低电能消耗的状态(dleep state),你此 时的系统状态会保存在内存或者磁盘上(取决于 挂起的深度),当你需要时再恢复到正常的工作 状态。但由于各种系统之间的送别,目前这项功 能并不完善。只有很少的设备可以完美地支持这 个特性,所以不建议一般用户使用它。

            内核选项
            ? < > AC Adapter ? 这是用来支持移动系统中的交流适配器 的,以指示当前系统是不是在使用交流 电,对于台式机不需要这个选项。 ? < > Battery ? 这个选项用于通过/proc/acpi/battery来向用 户提供移动系统中的电池状态信息。同上 面那个选项一样对台式机没有作用。

            内核选项
            ? <*> Button ? 这个选项用于注册苦于电源按钮的事件,比如 power、sleep等,当按下按钮时事件将发生,一 个守护程序将读取/proc/acpi/event,并执行用户 在这些事件上定义的动作比如让系统关机。 ? <*> Fan ? 这个选项提供对系统风扇的控制支持,可以通过 用户层的程度来对系统风扇进行控制(比如打 开、关闭,读取当前风扇的运行状态等,不过只 有极少数的硬件支持它)。

            内核选项
            ? < > ASUS/Medion Laptop 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/CardBus support” ? 这个选项支持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 编译模块文件,你在make config时所配置的所 有模块将在这时编译,形成模块目标文件,并把 这些目标文件存放在modules目录中。 使用如下 命令看一看: ls modules 另外注意,这儿我们产生了一些隐含文件 .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 ro root=LABEL=/ acpi=off vga=791 splash=silent initrd /boot/initrd-2.6.16.img


            相关文章:
            Linux 操作系统内核配置与裁剪研究
            Linux 操作系统内核配置与裁剪研究_电脑基础知识_IT/计算机_专业资料。龙源期刊网...关键词:Linux 内核 裁剪 交叉编译 Linux 系统内核具有非常好的网络适应性和开发...
            操作系统Linux内核编译实验报告_图文
            操作系统Linux内核编译实验报告 - 操作系统课程设计实验报告 实验名称:linux 的内核编译 姓名/学号: 一、 实验目的 熟悉 linux 的使用,编译内核 二、 实验内容 1...
            Linux内核裁剪的具体过程和方法
            Linux内核裁剪的具体过程和方法_计算机软件及应用_IT...在能够实现 AT91SAM9260 开发板基本功能的基础上, ...模块是一小段代码, 编译后可在系统内核运行时动态...
            linux内核启动流程总结
            linux内核启动流程总结 - X86 体系结构内核启动分析 一、硬件检测 当机器加电后它首先执行BIOS(基本输入输出系统)中的代码,BIOS首先执行加电自检 程序(POST),当...
            linux操作系统课程设计-内核的移植系统调用的添加
            2.3 设计要求要求在学习操作系统基础上找出解决方案,做出合理的设计,独 立...编译内核 回到 linux-3.0.82 目录, 输入:apt-get install build-essential ...
            linux实验报告(编译内核)_图文
            gedit /usr/src/linux-3-13.3/kernel/sys.c (增加系统调用,使用面向内核的 打印函数 printk 打印姓名学号) 使用 gedit 命令,可以直接在文档编辑器中直接修改。...
            LINUX系统及其编程部分习题参考答案
            LINUX系统及其编程部分习题参考答案 - 第 1 章 Linux 概述 8. 什么是内核,它的作用是什么? 内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心...
            linux内核选项详解
            linux内核选项详解_IT/计算机_专业资料。linux内核选项详解 General setup(基本...转换子系统支持 //通用驱动选项 //阻止编译固件 //用户空间固件装载支持 [*]...
            Linux内核配置(大纲视图)
            Linux内核配置(大纲视图)_电脑基础知识_IT/计算机_专业资料。Linux 内核配置 General setup ---> [ ] Prompt for development and/or incomplete ...
            基于Linux内核定制X86平台的微操作系统(很完整详尽文章)
            基于Linux内核定制X86平台的微操作系统(很完整详尽文章) - 讲解X86平台内核和文件系统的配置编译过程,和制作U盘安装制作
            更多相关标签: