当前位置: 首页 > news >正文

Linux 内核参数

文章目录

    • 什么是内核参数
    • 参数种类
    • 配置方式
      • 1. 编译内核时配置
      • 2. 内核启动时配置
      • 3. 内核运行时配置
      • 4. 加载内核模块时配置
      • 总结

什么是内核参数

内核参数是 Linux 系统中用于控制和调整内核行为的可配置选项。这些参数影响系统的性能、安全性和各种功能特性。

参数种类

大部分参数和某个子系统相关,需要在编译或加载时加入子系统,而且相关硬件需要存在。

在这里插入图片描述

目录主要作用典型参数示例
abi/应用程序二进制接口相关较少直接调整,通常由系统自动管理
debug/内核调试参数kernel.debug.exception-trace(控制是否记录异常跟踪信息)
dev/设备驱动相关dev.cdrom.autoeject(CDROM自动弹出控制,1=启用,0=禁用)
fs/文件系统参数fs.file-max(系统最大文件句柄数)
kernel/通用内核行为kernel.shmmax(共享内存段最大尺寸,单位字节)
net/网络协议栈参数net.ipv4.tcp_fin_timeout(TCP连接FIN_WAIT状态超时时间)
sunrpc/NFS/RPC 相关sunrpc.rpc_timeout(指定 RPC 请求的超时时间)
user/用户空间限制user.max_user_namespaces(允许创建的最大用户命名空间数量)
vm/虚拟内存管理vm.dirty_ratio(内存脏页占比阈值,超过则同步写入磁盘)

配置方式

有下面几种办法向内核传递参数以控制其行为:

  1. 编译内核时:修改内核 .config 文件,或直接修改内核源码。
  2. 内核启动时:通过命令行参数。
  3. 内核运行时:通过 /proc/sys/ 和 /sys/ 中的文件。
  4. 加载内核模块时:通过 /etc/modprobe.d/ 中的 .conf 文件,或通过 insmod/modprobe 传递参数。

下面针对不同的内核参数配置方式,分别给出示例说明:

1. 编译内核时配置

在编译内核期间,可以借助内核配置文件或者直接修改内核源代码来设置参数。

示例:设置 CONFIG_RCU_CPU_STALL_TIMEOUT 参数,该参数是内核的 RCU(Read-Copy Update)机制的超时参数,单位为秒。

操作步骤:

  • 进入内核源码目录,
  • 打开配置界面,可使用 make menuconfig 命令。
  • 找到选项对应路径:Kernel hacking >
    RCU Debugging > (21) RCU CPU stall timeout in seconds
  • 对参数进行设置
  • 保存配置后,执行编译和安装操作,即 make && make install

特点:这种配置方式会使参数成为内核的固定设置,一旦内核编译完成,参数就无法再改变,除非重新编译内核。

2. 内核启动时配置

在内核启动阶段,可以通过修改引导加载程序(如 GRUB)的命令行参数来传递参数。

示例:调整 swappiness 参数,该参数用于控制内存与交换空间的使用倾向。
操作步骤:

  • 打开 GRUB 配置文件,路径为:/etc/default/grub
  • 找到 GRUB_CMDLINE_LINUX 行,并添加参数,示例如下:GRUB_CMDLINE_LINUX=“swappiness=10”
  • 更新 GRUB 配置,执行命令:update-grub
  • 重启系统使配置生效

特点:此方式设置的参数会在每次系统启动时生效,不过若要修改参数,就需要重新编辑 GRUB 配置文件。

3. 内核运行时配置

在内核运行过程中,可以通过 /proc/sys/ 或 /sys/ 目录下的文件来动态调整参数。

示例:修改 net.ipv4.tcp_tw_recycle 参数,该参数用于控制 TCP TIME_WAIT 状态的处理。
临时修改(重启后失效):

  • 直接执行命令:echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

永久修改:

  • 编辑 sysctl 配置文件,路径为:/etc/sysctl.conf
  • 添加或修改相应行:net.ipv4.tcp_tw_recycle = 1
  • 使配置立即生效,执行命令:sysctl -p

特点:这种配置方式灵活方便,无需重启系统即可生效,但临时修改的参数在系统重启后会恢复默认值。

4. 加载内核模块时配置

在加载内核模块时,可以通过配置文件或命令行参数来传递参数。

示例:设置 loop 模块的最大设备数。

通过配置文件设置:

  • 创建或编辑模块配置文件,路径为:/etc/modprobe.d/loop.conf
  • 添加内容:options loop max_loop=64
  • 重新加载模块,执行命令:modprobe -r loop && modprobe loop

通过命令行设置:

  • 执行命令:modprobe loop max_loop=64

特点:这种配置方式只对特定的内核模块有效,并且需要确保模块加载时参数能够正确传递。

总结

配置方式生效时间持久性适用场景
编译内核内核编译时永久(除非重新编译)需要深度定制内核功能的场景
启动参数系统启动时永久(需修改 GRUB 配置)系统启动相关参数的设置
/proc/sys即时生效临时(可通过 sysctl.conf 永久化)需要动态调整参数的场景
模块配置模块加载时永久(通过配置文件)特定内核模块参数的设置
http://www.xdnf.cn/news/415909.html

相关文章:

  • vue+threeJS 大理石贴图
  • 网络层:ICMP协议
  • Femap许可使用统计与分析
  • 电脑端音乐播放器推荐:提升你的听歌体验!
  • python3数据类型
  • 导轨式直流电表在充电桩中的新突破:DJSF1352-D实战解析
  • 【数据结构与算法】二分查找
  • 嵌入式软件开发常见warning之 warning: implicit declaration of function
  • HTTP协议解析:Session/Cookie机制与HTTPS加密体系的技术演进(一)
  • 专题二:二叉树的深度搜索(求根节点到叶节点数字之和)
  • 构建Android系统UI架构方法论
  • telnetlib关键流程示意图
  • ​​Python大数据分析专项课程​​
  • 解析文件加密软件,文件加密软件是什么?2025最新分享
  • 【深度学习-Day 9】机器学习核心概念入门:监督、无监督与强化学习全解析
  • 如何用vi编辑器的打开,创建和保存文件的基本操作
  • 谈AI/OT 的融合
  • LVGL(lv_switch开关)
  • 【JS逆向基础】前端基础-JS
  • 技术视界 | 具身感知与生成大模型:开启智能新时代(上)
  • 多线程(一)
  • 2025/5/7 心得
  • 进销存ERP系统,Java+Vue,含源码及文档,整合进销存各环节,实现数据精准互通,提升企业运营效能
  • 1.1 文章简介
  • Linux——数据库备份与恢复
  • C++哈希表
  • Fellou智能体调研
  • Python训练营打卡DAY23
  • c++ 类的成员初始化
  • [Windows] PicPick Professional_v7.3.4 中文专业版