硬件的驱动程序可以编译成为核心模块,所以可以在不改变核心的前提下驱动你的新硬件。
编译核心的时机可以归纳为几大类:
?新功能的需求:我需要新的功能,而这个功能只有在新的核心里面才有,那么为了获得这个功能,只好来重新编译我的核心了。例如 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
readme
原文地址:https://www.cnblogs.com/shoubituling/p/9015825.html