谈完了整个开机的流程,您应该会知道,在整个开机的过程当中,是否能够成功的驱动我们主机的硬
件配备,
是核心
(kernel)
的工作!而核心一般都是压缩文件,因此在使用核心之前,就得要½他½
压缩后,才能加载主存储器当中。
另外,为了应付日新月异的硬件,目前的核心都是具有『可读取模块化驱动程序』的功能,
亦即是
所谓的『
modules (
模块化
)
』的功能啦!所谓的模块化可以½他想成是一个『插件』,
该插件可能
由硬件开发厂商提供,也有可能我们的核心本来就支持~不过,½新的硬件,
通常都需要硬件开发
商提供驱动程序模块啦!
那么核心与核心模块放在哪?
.
核心:
/boot/vmlinuz
/boot/vmlinuz-version
.
核心½压缩所需
RAM Disk
/boot/initramfs (/boot/initramfs-version)
.
核心模块:
/lib/modules/version/kernel
/lib/modules/$(uname -r)/kernel
.
核心原始码:
/usr/src/linux
/usr/src/kernels/ (
要安装才会有,预设不安装
)
如果该核心被顺利的加载系统当中了,那么就会有几个信息纪录下来:
.
核心版本:
/proc/version
.
系统核心功能:
/proc/sys/kernel/
问题来啦,如果我有个新的硬件,偏偏我的操作系统不支持,该怎么办?很简单啊!
.
重新编译核心,并加入最新的硬件驱动程序原始码;
.
½该硬件的驱动程序编译成为模块,在开机时加载该模块
上面第一点还很好理½,反正就是重新编译核心就是了。不过,核心编译很不容易啊!
我们会在后
续章½约略½绍核心编译的整个程序。比½有趣的则是½该硬件的驱动程序编译成为模块啦!
关于
编译的方法,可以参考后续的
第二十一章、原始码与
tarball
的½绍。
我们这个章½½是说明一下,
如果想要加载一个已经存在的模块时,该如何是好?
19.2.1
核心模块与相依性
既然要处理核心模块,自然就得要了½了½我们核心提供的模块之间的相关性啦!
基本上,核心模
块的放置处是在
/lib/modules/$(uname -r)/kernel
当中,里面主要还分成几个目录:
arch
:与硬件平台有
目,例如
CPU
的等
等等;
crypto
:核心所支持的加密的技
,例如
md5
或者是
des
等等;
drivers
:一些硬件的
驱动
程序,例如
示适配器、网
卡、
PCI
硬件等等;
fs
:核心所支持的
filesystems
,例如
vfat, reiserfs, nfs
等等;
lib
:一些函式
net
:与网
的各
项协议数
据,
有防火
(net/ipv4/netfilter/*)
等等;
sound
:与音效有
的各