1. 内核版本管理

版本号说明

  • 2.X.Y 旧版本格式

    • X:偶数表示稳定版,奇数表示开发版
    • Y:修订版本号
    • 后缀说明:
      • -rcN:Release Candidate(候选版本)
      • -gitN:开发中的Git版本
  • 3.0+ 新版本分类

    类型 说明
    Prepatch 稳定版前的测试版本
    Mainline 包含新特性的主线开发版本
    Stable 稳定版本
    Longterm 长期支持版本(LTS)

版本查询命令

1
uname [选项]

常用选项

选项 说明
-a 显示全部系统信息
-r 显示内核版本
-m 显示硬件架构

其他查询方式

1
2
3
4
5
# 查看/proc版本信息
cat /proc/version

# 通过Makefile查看
head -4 /usr/src/linux/Makefile

2. 内核模块管理

核心命令对比

命令 功能说明 特点
lsmod 显示已加载模块 读取/proc/modules
insmod 加载单个模块 不处理依赖关系
rmmod 卸载模块 需确保无依赖
modprobe 智能加载/卸载模块 自动处理依赖关系
depmod 生成模块依赖关系文件 创建modules.dep

命令详解

lsmod 输出说明

1
Module                  Size  Used by    Dependent modules
  • 显示模块名、大小、引用计数和被哪些模块使用

modinfo 模块信息

1
modinfo [选项] 模块名
选项 说明
-a 显示作者信息
-d 显示描述信息
-l 显示许可证信息
-n 显示模块文件路径

modprobe 高级用法

1
modprobe [选项] 模块名
选项 说明
-a 加载所有匹配模块
-c 显示当前配置
-l 列出所有可用模块
-r 递归卸载模块及依赖
-t 类型 仅操作指定类型模块
–show-depends 显示模块依赖关系

配置文件

  • /etc/modprobe.conf:模块别名和参数配置
    1
    2
    alias eth0 e1000
    options e1000 speed=1000 duplex=full

3. 内核编译流程

编译步骤

  1. 准备源代码
  2. 配置内核
    1
    2
    3
    4
    make oldconfig    # 基于旧配置更新
    make menuconfig # 文本界面配置
    make xconfig # Qt图形界面配置
    make gconfig # GTK图形界面配置
  3. 编译内核
    1
    2
    3
    make           # 编译内核和模块
    make bzImage # 仅编译内核
    make modules # 仅编译模块
  4. 安装组件
    1
    2
    make modules_install  # 安装模块到/lib/modules/
    make install # 自动安装内核

手动安装示例

1
2
3
4
5
6
7
8
9
10
# 复制内核文件
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.32
cp System.map /boot/System.map-2.6.32

# 创建链接
ln -s /boot/vmlinuz-2.6.32 /boot/vmlinuz
ln -s /boot/System.map-2.6.32 /boot/System.map

# 生成initramfs
mkinitramfs -o /boot/initrd-2.6.32.img 2.6.32

其他make目标

目标 说明
clean 清除编译文件
mrproper 彻底清除(含配置)
rpm-pkg 生成RPM包
deb-pkg 生成Debian包

4. 内核参数调优

/proc/sys 关键参数

路径 说明
kernel/ctrl-alt-del Ctrl+Alt+Del行为
kernel/shmall 共享内存页数上限
kernel/shmmax 共享内存段最大大小
net/ipv4/ip_forward IP转发开关(1/0)
fs/file-max 系统最大文件句柄数

sysctl 工具

1
sysctl [选项] [参数=值]
选项 说明
-a 显示所有可用参数
-p 从/etc/sysctl.conf加载配置
-w 临时修改参数

initramfs 管理

1
2
3
4
5
6
# 创建initramfs
mkinitramfs -o initrd.img 3.16.0-4-amd64

# 解压分析
mkdir initrd && cd initrd
zcat ../initrd.img | cpio -id

5. 内核调试与设备管理

/proc 关键文件

文件 内容说明
/proc/cpuinfo CPU详细信息
/proc/meminfo 内存使用情况
/proc/modules 已加载模块列表
/proc/partitions 分区信息

硬件信息工具

lspci

1
lspci [选项]
选项 说明
-vv 超详细输出
-t 树状显示设备层级

lsusb

1
lsusb [选项]
选项 说明
-v 详细输出设备描述符
-t 树状显示USB设备拓扑

udev 设备管理

规则文件示例

/etc/udev/rules.d/70-persistent-net.rules

1
2
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="08:00:27:aa:11:3c", NAME="eth0"

udevadm 工具

1
udevadm info [选项]
选项 说明
-a 显示父设备属性
-n 指定设备节点路径

实时监控

1
udevadm monitor