Linux 内核是操作系统的"心脏",负责管理硬件、进程、内存和文件系统。openEuler 基于长期支持的 Linux 内核,并针对企业级场景进行了优化。本章将带你深入内核世界,掌握如何查看内核信息、管理内核模块、理解模块依赖,并了解内核升级的基本流程,让你从"系统使用者"迈向"系统理解者"。
🌟 本章目标
- 查看内核版本、编译信息与运行时参数
- 理解内核模块(Kernel Module)的作用与工作原理
- 使用
lsmod、modprobe、insmod、rmmod管理模块 - 探查模块依赖关系与加载顺序
- 实战:加载一个内核模块(如
vfat、iptable_nat) - 了解内核升级与补丁管理基础
24.1 查看内核基本信息
✅ 1. 查看内核版本
bash
uname -r
输出示例:
5.10.0-216.0.0.115.oe2203sp4.x86_64
5.10.0:主版本216.0.0.115.oe2203sp4:openEuler 定制补丁版本x86_64:架构
✅ 2. 查看完整内核信息
bash
uname -a
输出:
Linux localhost.localdomain 5.10.0-216.0.0.115.oe2203sp4.x86_64 #1 SMP ...
SMP:支持多处理器
✅ 3. 查看内核编译信息
bash
cat /proc/version
显示内核编译时的 GCC 版本、编译时间等。
✅ 4. 查看内核日志(启动信息)
bash
dmesg | head -20
或使用 journalctl:
bash
journalctl -k --no-pager | head -20
查看硬件检测、驱动加载等启动过程。
24.2 什么是内核模块?
内核模块(Kernel Module) 是可以动态加载到内核的代码单元(.ko 文件),用于扩展内核功能,而无需重新编译整个内核。
✅ 模块的优势
- 灵活性:按需加载,节省内存
- 可维护性:驱动更新无需重启
- 安全性:隔离故障模块
常见模块类型
- 设备驱动:网卡、显卡、USB 设备
- 文件系统 :
ext4、xfs、vfat、nfs - 网络协议 :
iptable_nat、ip_vs(LVS) - 加密模块:国密算法支持
24.3 内核模块管理命令
🔍 1. lsmod ------ 列出已加载模块
bash
lsmod
输出:
Module Size Used by
vfat 24576 0
fat 73728 1 vfat
iptable_nat 16384 0
nf_conntrack 151552 1 iptable_nat
...
Module:模块名Size:大小(字节)Used by:被多少个其他模块引用
🔌 2. modprobe ------ 智能加载/卸载模块(推荐)
modprobe 会自动处理依赖关系。
加载模块
bash
sudo modprobe vfat
自动加载 vfat 及其依赖 fat。
卸载模块
bash
sudo modprobe -r vfat
-r 表示递归卸载未被引用的依赖模块。
🧩 3. insmod / rmmod ------ 手动加载/卸载(不推荐)
不处理依赖,需手动操作。
手动加载
bash
sudo insmod /lib/modules/$(uname -r)/kernel/fs/fat/fat.ko
sudo insmod /lib/modules/$(uname -r)/kernel/fs/fat/vfat.ko
手动卸载
bash
sudo rmmod vfat
sudo rmmod fat
⚠️ 顺序错误会导致
Device or resource busy。
🔎 4. modinfo ------ 查看模块信息
bash
modinfo vfat
输出:
filename: /lib/modules/5.10.0-216.0.0.115.oe2203sp4.x86_64/kernel/fs/fat/vfat.ko.xz
version: 2.0
license: GPL
description: VFAT filesystem support
author: Gordon Chaffee
depends: fat
...
✅ 查看依赖、作者、描述等元数据。
24.4 模块依赖关系
内核模块之间存在依赖关系,必须按顺序加载。
查看依赖
bash
modinfo vfat | grep depends
# 输出:depends: fat
查看谁依赖我
bash
modinfo fat | grep "used by"
或从 lsmod 的 Used by 列查看。
24.5 实战:加载 VFAT 文件系统模块
场景
你的 openEuler 系统需要挂载一个 U 盘(FAT32 格式),但 vfat 模块未加载。
步骤1:检查是否已加载
bash
lsmod | grep vfat
若无输出,说明未加载。
步骤2:加载模块
bash
sudo modprobe vfat
步骤3:验证
bash
lsmod | grep vfat
# 应看到 vfat 和 fat 模块
步骤4:挂载 U 盘
bash
sudo mkdir /mnt/usb
sudo mount -t vfat /dev/sdb1 /mnt/usb
✅ U 盘成功挂载!
24.6 内核升级与补丁管理
openEuler 通过 DNF 提供内核更新。
查看可用内核版本
bash
dnf list kernel --showduplicates
安装新内核
bash
sudo dnf install -y kernel
查看已安装内核
bash
rpm -q kernel
查看 GRUB 启动项
bash
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
设置默认启动内核
bash
# 查看内核顺序(从0开始)
sudo grub2-editenv list
# 设置默认为最新内核(假设是第0个)
sudo grub2-set-default 0
重启生效
bash
sudo reboot
⚠️ 升级前建议备份重要数据,保留旧内核以防新内核无法启动。
24.7 内核参数与运行时调优
内核运行时参数可通过 /proc/sys/ 和 sysctl 调整(详见第21章)。
查看所有可调参数
bash
sysctl -a
临时修改
bash
sudo sysctl net.ipv4.ip_forward=1
永久修改
bash
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
✅ 本章小结
| 命令 | 用途 | 示例 |
|---|---|---|
uname -r |
查看内核版本 | |
lsmod |
列出已加载模块 | `lsmod |
modprobe |
加载/卸载模块(推荐) | modprobe vfat |
modinfo |
查看模块信息 | modinfo iptable_nat |
insmod/rmmod |
手动加载/卸载 | 不处理依赖 |
dnf install kernel |
升级内核 | |
sysctl |
调整内核参数 | sysctl net.ipv4.ip_forward=1 |
📝 课后练习
- 使用
uname -r和cat /proc/version查看内核信息。 - 使用
lsmod查看当前加载的模块,找出xfs是否已加载。 - 使用
modinfo查看xfs模块的描述和作者。 - 尝试加载
vfat模块,并验证是否成功。 - 使用
modprobe -r卸载vfat模块(如果未被使用)。 - (挑战)查找
iptable_nat模块的依赖,并手动使用insmod加载(注意顺序)。
🔜 下一章预告:第25章《openEuler 项目实战:搭建 LAMP/LEMP 服务器》
我们将综合运用前24章所学知识,完成一个完整的项目:
- 在 openEuler 上安装 Apache/Nginx、MySQL/MariaDB、PHP
- 配置虚拟主机与 HTTPS(Let's Encrypt)
- 部署一个简单的 PHP 应用(如 WordPress 前身)
- 进行安全加固(防火墙、SELinux、权限)
- 实现自动化备份
准备好将所有技能融会贯通了吗?