Linux进阶之内核与模块管理

Linux 内核是操作系统的核心,负责硬件管理、系统资源分配及系统调用等功能。内核模块(Kernel Modules)是内核的可加载组件,用于动态扩展功能。本章将详细讲解如何查看内核信息、管理内核模块,以及编译和安装自定义内核。


一、查看内核信息

1、uname 查看系统与内核信息

uname 是用于显示系统信息的命令,可以通过不同参数获取详细信息。

常用选项与示例

uname -a

输出示例

Linux ubuntu 5.15.0-84-generic #93-Ubuntu SMP Thu Mar 23 16:00:00 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

参数说明

  • -a:显示所有信息。
  • -r:仅显示内核版本。
  • -v:显示内核发布版本信息。
  • -m:显示系统架构。

仅查看内核版本

uname -r

输出示例

5.15.0-84-generic

2、dmesg 查看启动日志与内核消息

dmesg 用于查看内核环缓冲区中的消息,包括系统启动日志和内核事件。

显示所有内核消息

dmesg

输出示例(部分)

[    0.000000] Linux version 5.15.0-84-generic (buildd@lcy02-amd64-066) ...
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-84-generic ...

过滤特定关键字

dmesg | grep -i error

输出示例

[    5.123456] [ERROR] Disk read failure.

二、加载与卸载内核模块

内核模块是动态加载到内核中的组件,用于添加驱动程序或功能。

1、列出已加载模块

使用 lsmod 查看当前加载的模块。

lsmod

输出示例

Module                  Size  Used by
snd_hda_codec_generic  73728  1
snd_hda_intel          57344  3

2、加载模块

modprobe 加载模块
modprobe 是加载模块的常用工具,会自动处理依赖关系。

sudo modprobe module_name

insmod 加载模块
insmod 是另一个加载模块的工具,但不会自动加载依赖模块。

sudo insmod /lib/modules/$(uname -r)/kernel/drivers/example.ko

3、卸载模块

rmmod 卸载模块
rmmod 用于从内核中卸载模块。

sudo rmmod module_name

modprobe 卸载模块
也可使用 modprobe 来卸载模块。

sudo modprobe -r module_name

4、查看模块信息

使用 modinfo 查看模块的详细信息。

modinfo module_name

输出示例

filename:       /lib/modules/5.15.0-84-generic/kernel/drivers/example.ko
description:    Example module
author:         YourName
license:        GPL

三、编译与安装自定义内核

编译自定义内核需要完整的内核源码和适当的开发工具。

1、下载内核源码

kernel.org 下载所需版本的内核源码。

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.125.tar.xz

解压源码:

tar -xvf linux-5.15.125.tar.xz
cd linux-5.15.125

2、配置内核

通过 make menuconfig 配置内核。

make menuconfig

说明

  • 提供交互式界面以启用或禁用内核模块和选项。
  • 默认配置文件位于 /boot/config-$(uname -r)

3、编译内核

编译内核及其模块:

make -j$(nproc)
make modules_install
make install

说明

  • -j$(nproc):利用多核 CPU 加速编译。

4、更新引导加载程序

安装完成后,更新 grub 配置以加载新内核。

sudo update-grub

5、重启系统

完成内核安装后重启,选择新内核启动。

sudo reboot

四、小结

通过本章学习,你已掌握以下内容:

  1. 查看内核信息

    • 使用 unamedmesg 查看内核版本和日志。
  2. 加载与卸载内核模块

    • 使用 modprobeinsmod 加载模块。
    • 使用 rmmod 卸载模块。
    • 使用 modinfo 查看模块详细信息。
  3. 编译与安装自定义内核

    • 下载内核源码。
    • 使用 make 编译内核和模块。
    • 配置并更新引导程序。

内核与模块管理是 Linux 系统高级管理的核心技能,通过动态模块和自定义内核,可以根据需求灵活调整系统功能和性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值