Linux内核与模块管理:uname、lsmod、modprobe、sysct

发布时间:2026/9/30 8:41:55

Linux内核与模块管理:uname、lsmod、modprobe、sysct Linux内核与模块管理uname、lsmod、modprobe、sysctl内核是 Linux 的心脏但日常打交道最多的其实是两件事看版本uname、管理模块和参数lsmod、modprobe、sysctl。装网卡驱动、开 IP 转发、调文件句柄上限都落在这几条命令上。这一篇把它们串起来。一、uname看内核与系统信息语法格式uname[选项]常用参数参数说明-a全部信息内核名、主机名、版本、架构-r只看内核版本号-m机器硬件架构x86_64、aarch64-n主机名-v内核编译日期示例与预期输出uname-a预期输出Linux web01 6.8.0-45-generic #45~22.04.1-Ubuntu SMP Wed Sep 4 13:02:00 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux拆一下6.8.0-45-generic主版本 6、次版本 8、修订 0、发行版补丁 45、generic是 Ubuntu 的通用内核变体。这个版本号后面找模块路径时天天用。uname-r预期输出6.8.0-45-generic模块都装在/lib/modules/$(uname -r)/下面。升级内核后旧模块路径还在但不会再被加载uname -r一变整套模块树就换了。二、lsmod看已经加载的模块Linux 内核把驱动做成可插拔模块需要时装进来不需要时卸掉。lsmod列出当前已经在内核里的模块。语法格式lsmod它本质是读/proc/modules没有选项。示例与预期输出lsmod预期输出节选Module Size Used by e1000e 413696 0 ixgbe 307200 0 xt_conntrack 16384 1 nf_conntrack 155648 1 xt_conntrack sd_mod 57344 3 usbcore 311296 4 xhci_hcd,usb_storage三列含义模块名、占用内存大小、被多少其他模块/进程引用。最后一列是引用它的模块。Used by那列不是 0说明还有东西在用这时候想卸载会失败——后面讲modprobe -r时细说。想知道某个驱动对应哪个模块用modinfomodinfo e1000e预期输出节选filename: /lib/modules/6.8.0-45-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko version: 6.8.0 license: GPL description: Intel(R) PRO/1000 Network Driver author: Intel Corporation alias: pci:v00008086d000015A3sv*sd*bc*sc*i*filename告诉你模块文件在硬盘哪。alias是 PCI 设备 ID 匹配规则内核发现对应硬件时自动按 alias 找到这个模块。三、modprobe加载与卸载模块语法格式modprobe[选项]模块名不带选项就是加载。modprobe比insmod强在自动处理依赖它读/lib/modules/$(uname -r)/modules.dep把这个模块依赖的其他模块一起拉进来。常用参数参数说明无加载模块-r卸载模块同时卸载没人再用的依赖-n干跑不真执行看会发生什么-v显示详细动作示例与预期输出加载一个模块sudomodprobe e1000e没报错就是成了。验证lsmod|grepe1000e预期输出e1000e 413696 0卸载sudomodprobe-re1000e如果这张网卡还在用、有 IP 地址内核会拒绝卸载报Module e1000e is in use。先把网卡 down 掉再卸。对比一下insmod它只往内核塞指定那一个.ko文件不处理依赖。实际工作几乎都用modprobeinsmod留着自己写模块调试时用。开机自动加载模块希望每次开机都加载某模块写进配置echoe1000e|sudotee/etc/modules-load.d/network.conf/etc/modules-load.d/下任意.conf文件里一行一个模块名开机时systemd-modules-load.service会读。Debian 老版本用/etc/modules新发行版统一走modules-load.d。给模块传参数有些模块需要启动参数比如某个声卡要指定缓冲区大小。在/etc/modprobe.d/下写options snd_hda_intel index0文件名随便.conf后缀。modprobe snd_hda_intel时会自动带上index0。四、sysctl运行时改内核参数内核暴露了几千个可调参数绝大多数挂在/proc/sys/下。sysctl是官方接口。语法格式sysctl[选项][参数值]常用参数命令说明sysctl -a列出所有可调参数和当前值sysctl 键名查单个参数sysctl -w 键名值运行时立即改sysctl -p从配置文件重新加载sysctl --system加载所有默认配置目录示例与预期输出查 IP 转发开没开sysctlnet.ipv4.ip_forward预期输出net.ipv4.ip_forward 00是没开。当路由器、跑 Docker、做 k8s 节点都得开成1。临时开重启失效sudosysctl-wnet.ipv4.ip_forward1预期输出net.ipv4.ip_forward 1永久生效写配置。Ubuntu 上建议写到/etc/sysctl.d/99-custom.conf别直接改/etc/sysctl.confnet.ipv4.ip_forward 1 vm.swappiness 10加载sudosysctl-p/etc/sysctl.d/99-custom.confswappiness10的意思是内存还够的时候尽量别用 swap数据库机器常用这个调优。/proc/sys/路径和sysctl键名是一一对应的把点换斜杠、去掉前缀sysctl 键名对应文件net.ipv4.ip_forward/proc/sys/net/ipv4/ip_forwardvm.swappiness/proc/sys/vm/swappinesskernel.hostname/proc/sys/kernel/hostname不想用sysctl直接echo 1 /proc/sys/net/ipv4/ip_forward效果一样重启都失效。几个高频调参项搞网络和数据库的人常打交道键名默认生产常用用途net.ipv4.ip_forward01开启内核转发Docker/路由器必开vm.swappiness6010越小越倾向用物理内存数据库建议调低fs.file-max随内存655350系统级最大文件句柄数net.core.somaxconn409665535TCP 半连接队列上限高并发 web 调大net.ipv4.tcp_tw_reuse01允许 TIME_WAIT 套接字复用短连接多的服务有用注意区分两个句柄限制fs.file-max是全系统上限ulimit -n是单进程上限。调了前者不调后者业务进程照样报too many open files。五、⚠️ 常见错误modprobe: module xxx not found多半是内核版本对不上。装的是另一个内核的头文件/模块包uname -r看当前跑的内核模块得装到那个版本的目录里。卸载模块报in uselsmod最后一列看谁在用把使用者停掉再卸。网卡先ip link set eth0 down存储先卸载文件系统。改 sysctl 重启失效sysctl -w是临时的。永久配置必须写/etc/sysctl.d/*.conf或/etc/sysctl.conf再sysctl -p。升级内核后起不来旧模块第三方编译的内核模块比如某些显卡、虚拟化驱动要针对新内核重新编译dkms包能自动做这件事。改/etc/sysctl.conf不生效某些发行版读/etc/sysctl.d/优先或需要sysctl --system重新加载全部。六、知识扩展modules.dep 与 depmodmodprobe怎么知道一个模块依赖谁答案是/lib/modules/$(uname -r)/modules.dep这个文件。它里面记着每个.ko模块的完整依赖树。手动往/lib/modules/扔了一个新编译的.komodprobe一开始不认识它得跑sudodepmod-adepmod扫描一遍所有.ko重新生成modules.dep。之后modprobe才能找到。系统升级内核、装dkms包时这些步骤都是脚本自动跑的。自己手撸模块的时候忘了depmod -a就会出现文件明明在modprobe 却说找不到的怪事。模块加载失败时dmesg比 modprobe 的报错信息详细得多dmesg|tail-20驱动版本不匹配、符号未找到、设备资源冲突全在内核环形缓冲区里。modprobe 只告诉你失败了dmesg 告诉你为什么。
延伸阅读

更多相关文章

2026/9/30 8:36:54

秒杀系统高并发架构设计:Redis预扣库存与MQ异步削峰实战

1. 秒杀系统的核心难题拆解1.1 高并发场景到底难在哪做秒杀系统之前,我先说句实在话:秒杀本身不是一个业务功能问题,而是一个系统容量问题。你用 SpringBoot 写一个普通 CRUD 接口,能响应正常请求不代表它能扛住秒杀流量——这是两…

2026/9/30 8:36:54

TensorFlow生产部署全链路指南:从环境校验到TFX落地

1. 这不是“装个库”那么简单:TensorFlow到底在解决什么问题?你搜“tensorflow安装”,点开前十个结果,八成是 pip install tensorflow 然后报错截图——红色字体满屏飞,ImportError: DLL load failed、No module named…

2026/9/30 11:42:57

计算机网络学习路线:从TCP/IP协议栈到期末、408与面试通关

1. 为什么人人都该啃一遍计算机网络 1.1 这门课到底在讲什么 到了大二大三,计算机类学生基本都会撞上这门课。热搜上常年挂着一堆"计算机网络期末复习""计算机网络题库""计算机网络第八版答案",说明它确实是挂科率、痛苦…

2026/9/30 11:42:57

基于AutoDL与Xshell/Xftp的Qwen2.5-7B云GPU部署实战指南

去年做了一次大模型部署,选的是AutoDL云GPU Xshell远程终端 Xftp文件传输这套组合,把Qwen2.5-7B完整跑通。整个过程没有想象中那么复杂,但坑确实不少:SSH连不上、模型下载卡住、显存不够、Xftp传输慢、关机后环境丢失……每一个…

2026/9/30 11:42:57

YOLO垃圾分类系统实战:模型演进与边缘部署全指南

做智慧环保项目踩过的第一个坑,往往不是模型精度不够,而是“什么垃圾”“放在哪个位置”“用哪种方式识别”这些业务问题没有被定义清楚。我去年全程参与了一套YOLO垃圾分类系统的搭建,从模型选型、数据标注、训练调优,到最终在边…

2026/9/30 11:42:57

非阻塞IO与IO多路复用:五种IO模型全解析与实战应用

聊到网络编程,IO模型永远是绕不开的基本功。很多同事干了几年业务代码,一问五种IO模型还是只能背出名字,但真正到了定位高并发问题、调优服务时,往往卡在“非阻塞IO”和“IO多路复用”这对组合上。这篇我就把这些概念放到一个业务…

2026/9/30 11:42:57

2026找新媒体IP陪跑前要搞懂的几个问题

最近不管是后台留言咨询**新手做自媒体要不要找 IP 陪跑**的新人博主,还是纠结**传统企业数字化转型找 IP 陪跑还是自建团队**的制造业负责人,不少人都遇到投入资金但收效不达预期、服务内容和前期口头承诺不一致的情况。想要选到适配自身的服务商&#…

2026/9/30 11:37:56

MAP迈普交换机常用命令与排障指南

简介:面向网络管理员、运维人员及网络基础学习者的迈普MAP交换机常用命令详解文档,系统梳理从用户模式进入特权模式、全局配置模式,到时钟同步、超时设置、主机名修改、配置保存与重启等基础维护操作。针对日常排障,文档还详细展示…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑