代码改变世界

《鸟哥的Linux私房菜 基础学习篇(第四版)》 第24章 Linux核心编译与管理 笔记

2018-05-09 18:01  受匕图灵  阅读(223)  评论(0编辑  收藏  举报

硬件的驱动程序可以编译成为核心模块,所以可以在不改变核心的前提下驱动你的新硬件。

编译核心的时机可以归纳为几大类:
新功能的需求:我需要新的功能,而这个功能只有在新的核心里面才有,那么为了获得这个功能,只好来重新编译我的核心了。例如 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