硬件的驱动程序能够编译成为核心模块,因此能够在不改变核心的前提下驱动你的新硬件。
编译核心的时机能够概括为几大类:
新功能的需求:我须要新的功能,而这个功能只有在新的核内心面才有,那么为了得到这个功能,只好来从新编译个人核心了。例如 iptables 这个防火墙机制只有在 2.4.xx 之后的版本里面才有,而新开发的主板芯片组, 不少也须要新的核心推出以后,才能正常并且有效率的工做!
本来核心太过臃肿:若是你是那种对于系统『稳定性』很要求的人,对于核心多编译了不少莫名其妙的功能而不太喜欢的时候,那么就能够从新编译核心来取消掉该功能啰;
与硬件搭配的稳定性:因为本来 Linux 核心大可能是针对 Intel 的 CPU 来做开发的,因此若是你的 CPU 是 AMD 的系统时,有可能 (注意!只是有可能,不见得必定会如此) 会让系统跑得『不太稳!』。此外,核心也可能没有正确的驱动新的硬件,此时就得从新编译核心来让系统取得正确的模块才好。
其余需求 (如嵌入式系统):就是你须要特殊的环境需求时,就得自行设计你的核心啰!( 像是一些商业的软件包系统,因为须要较为小而美的操做系统, 那么他们的核心就须要更简洁有力了!)
核心模块放置目录:/lib/modules/$(uname -r)/kernel/
核心目录:/usr/src/kernels/3.10.0-693.el7.x86_64/
arch :与硬件平台有关的项目,大部分指的是 CPU 的类别,例如 x86, x86_64, Xen 虚拟支持等;
block :与成组设备较相关的设定数据,区块数据一般指的是大量储存媒体!还包括相似 ext3 等文件系统的支持是否容许等。
crypto :核心所支持的加密的技术,例如 md5 或者是 des 等等;
Documentation :与核心有关的一堆说明文件,若对核心有极大的兴趣,要瞧瞧这里!
drivers :一些硬件的驱动程序,例如显示适配器、网络卡、PCI 相关硬件等等;
firmware :一些旧式硬件的微脚本 (韧体) 数据;
fs :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
include :一些可以让其余过程调用的标头 (header) 定义数据;
init :一些核心初始化的定义功能,包括挂载与 init 程序的呼叫等;
ipc :定义 Linux 操做系统内各程序的沟通;
kernel :定义核心的程序、核心状态、线程、程序的排程 (schedule)、程序的讯号 (signle) 等
lib :一些函式库;
mm :与内存单元有关的各项数据,包括 swap 与虚拟内存等;
net :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
security :包括 selinux 等在内的安全性设定;
sound :与音效有关的各项模块;
virt :与虚拟化机器有关的信息,目前核心支持的是 KVM (Kernel base Virtual Machine)
/boot/config-3.10.0-693.el7.x86_64
readmelinux