认识内核
kernel是整个操作系统最底层,它负责了整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制,是否支持LVM或者Quota等文件系统,这些都是内核负责。计算机正在工作的是硬件,但是,你希望计算机帮你达成各项工作,都需要透过内核帮助才能执行,当然如果你要达成的工作核心不支持,那么你自然无法透过内核来控制计算机来工作。内核就是一个文件,可以实现上面诸多功能。内核模块
既然内核都已经包含了硬件侦测与驱动模块,那什么是内核模块,现在计算机硬件更新速度太快,如果我的核心比较旧,但我换了新的硬件,那么kernel肯定无法支持,而linux很早之前就开始模块化设定,亦即是将一些不常用过的类似驱动程序独立出来,编译成为模块,然后kernel可以在系统正常运行的过程中加载这个模块到kernel以支持模块的使用。自制kernel-kernel编译
kernel是一个文件,这个文件时透过哦source code编译而成的,应为内核是直接被写入到内存当中,所以当然要将他编译成为系统可以认识的数据才行。也就是说我们要获得kernel的源码。更新内核的目的
除了BIOS之外,内核是操作系统最早被加载到内存,他包含了所有可以让硬件与软件工作的信息,所以如果内核有问题,那么操作系统肯定会出现问题。kernel的编译重点在于你要你的linux做什么,如果没有必要的工作,就干脆不要加入内核中。kernel编译的可能目的如下: 新功能的需求,原本内核太过雍宗,与硬件搭配的稳定性,其他如嵌入式。内核源码的解压缩/安装/观察
#第一步取得内核源码:
[root@localhost]# wget linux.cis.nctu.edu.tw/kernel/linux/kernel/v2.6/linux-2.6.30.3.tar.bz2
#解压缩内核
[root@localhost]# tar -jxvf linux-2.6.30.3.tar.bz2 -C /usr/src/kernels/
此时会在/usr/src/kernel目录下产生一个新的目录,linux-2.6.30.3,在这个目录下包含以下数据:
[root@localhost linux-2.6.30.3]# ls
arch crypto fs Kbuild Makefile REPORTING-BUGS sound
block Documentation include kernel mm samples usr
COPYING drivers init lib net scripts virt
CREDITS firmware ipc MAINTAINERS README security
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)
1. 硬件环境检视与内核功能要求
[root@localhost linux-2.6.30.3]# cat /proc/cpuinfo
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz
[root@localhost linux-2.6.30.3]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00