Linux详解(内核和伪文件系统)
内核简介
一、内核设计流派
- 单内核设计:把所有功能集成于同一个程序(Linux)
- 微内核设计:每种功能使用一个单独的子系统实现(Windows、Solaris)
二、内核功能
内核的主要功能包括进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能。
三、内核特点
Linux 虽是单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制。
- 支持模块化 (.ko:kernel object,内核对象)
例如:文件系统、硬件驱动、网络协议等。 - 支持模块运行时动态装载或卸载
内核组成部分
内核组成部分包括:内核核心、内核模块和辅助文件系统(非必须)。内核模块与内核核心版本一定要严格匹配。
下面就对内核组成部分进行介绍。
一、内核核心
内核核心(kernel),一般为 bzImage,通常位于 /boot 目录,名称为 vmlinuz-VERSION-release 。
系统启动后,内核文件已经加载完成,即使你对内核文件进行修改,也不会对当前系统产生任何影响,除非重启或者打补丁。(CentOS 4 以后的版本支持打补丁进行滚动升级)
二、内核模块
内核模块(kernel object,内核对象),一般放置于 /lib/modules/VERSION-release/ 。
有如下特点:
- 不管是32位系统还是64位系统,都是放在lib目录下
- 便于第三方厂商编写硬件驱动模块
- 支持动态装载和卸载
- 自己编译内核时,有以下三种选择:
[ ]:N # 不要此内核模块,为空
[M]:Module # 编译为内核模块,用时再进行编译,只占用硬盘空间,不占用内存空间
[*]:Y # 编译进内核核心,
[root@LeeMumu ~]# ls /lib/modules/3.10.0-957.21.3.el7.x86_64/
build modules.builtin modules.modesetting source
extra modules.builtin.bin modules.networking updates
kernel modules.dep modules.order vdso
modules.alias modules.dep.bin modules.softdep weak-updates
modules.alias.bin modules.devname modules.symbols
modules.block modules.drm modules.symbols.bin
三、ramdisk
ramdisk 是辅助性文件,并非必须,这取决于内核是否能直接驱动 rootfs 所在的设备。
非必须的原因是因为如果能是把硬盘驱动程序加载到内核里,就不需要创建临时文件系统。
ramdisk 可以理解为一个简装版的根文件系统。
ramdisk 可加载的驱动包括:
- 目标设备驱动,例如 SCSI 设备的驱动
- 逻辑设备驱动,例如 LVM 设备的驱动
- 文件系统,例如 xfs 文件系统
内核信息获取
可使用命令 uname 进行内核信息获取,格式和选项如下:
uname:- print system information
命令格式:uname [OPTION]...
-r:内核的release号,发行号
-n:主机名
-v:编译版本号
-a:显示所有信息
[root@LeeMumu ~]# uname -r
3.10.0-957.21.3.el7.x86_64
[root@