29
7月
2026
10:46

将参数传递给 Linux 模块/驱动程序

29 7月 2026 10:46

指定参数以在 Linux 上启动模块或驱动程序。

内核模块引入了附加功能。 例如,硬件支持(驱动程序)。
有些模块有启动参数。

1)如何查看Linux操作系统加载了哪些模块(驱动程序)?

sudo lsmod | less

另一种方式:

cd /lib/modules/$(uname -r)/kernel/drivers/ 
ls | less

2)如何显示特定模块的帮助信息?

sudo modinfo MODULE_NAME

其中 MODULE_NAME 替换为模块的名称。

例如:

sudo modinfo rtw_usb

3)如何仅显示有关模块_参数_的简要信息?

sudo modinfo -p MODULE_NAME

例如:

sudo modinfo -p rtw_usb

结论:
switch_usb_mode : Set to N to disable switching to USB 3 mode to avoid
potential interference in the 2.4 GHz namd (default: Y) (boot)

4)如何查看系统当前模块参数值?

一些模块(不是全部)在目录结构中声明自己 /sys/module/MODULE_NAME/parameters

ls /sys/模块/MODULE_NAME/参数
cat /sys/module/MODULE_NAME/parameters/PARAMETER

哪里
MODULE_NAME - 替换为模块的名称,
PARAMETER - 替换为参数名称。

示例:

cat /sys/module/rtw_usb/parameters/switch_usb_mode

结论:
是或否

5)如何将新的参数值传递给模块?

参数格式:

MODULE_NAME.PARAMETER=值

其中 VALUE 是值。 例如,N.

可以指定模块参数:

  • 构建内核时
  • 启动 PC 时在内核启动参数中 - 在配置文件 /etc/default/grub 中
  • 实时在/proc/sys/

我只会在加载PC时考虑该选项

`GRUB_CMDLINE_LINUX_DEFAULT="安静启动 rtw_usb.switch_usb_mode=N"

其中 rtw_usb.switch_usb_mode=N - 将 rtw_usb 模块分配给其 switch_usb_mode 参数值 N。

另一个例子:

`GRUB_CMDLINE_LINUX_DEFAULT="安静启动 nvidia-drm.modeset=1 nvidia-drm.fbdev=1"

然后你需要运行命令

sudo update-grub

sudo reboot

指定内核模块参数的第二种方法

cd /etc/modprobe.d
ls
sudo nano /etc/modprobe.d/NAME.conf

在 NAME.conf 文件中写入:

选项 MODULE_NAME PARAMETER1=VALUE1 PARAMETER2=VALUE2

! 没有点!

示例:

  • 如果司机 英伟达,在文件中 /etc/modprobe.d/nvidia.conf
    options nvidia-drm modeset=1 fbdev=1

  • 如果司机 新风格,在文件中 /etc/modprobe.d/nouveau.conf
    options nouveau modeset=1

/etc/default/grub 文件中的“GRUB_CMDLINE_LINUX_DEFAULT”行优先于 /etc/modprobe.d/NAME.conf 文件。

6) 屏幕显示参数

  • 加载Linux操作系统时显示内核启动参数

    猫 /proc/cmdline

结果:
BOOT_IMAGE=/boot/vmlinuz-6.2.0-060200-generic root=UUID=xxxxx ro quiet splash init_on_alloc=1 slab_nomerge

  • 内核模块之一的输出参数

sysfsutils 包中有一个名为 systool 的实用程序,可以显示模块的有效参数。

sudo apt install sysfsutils
systool -vm MODULE_NAME

其中 MODULE_NAME 是模块的名称。

例如:

systool -vm rtw_usb
  • 所有内核模块的输出参数
cat /proc/modules | 目录切-f 1 -d“” |读取模块时;做\
echo "模块:$module"; \
if [ -d "/sys/module/$module/parameters" ];那么\
ls /sys/模块/$模块/参数/ |读取参数时;做\
echo -n "参数:$参数 --> "; \
猫 /sys/module/$module/parameters/$parameter; \
完毕; \
菲; \
回声; \
完成

资料来源:
如何添加、删除和管理 Linux 内核模块(驱动程序)
如何将模块特定参数传递给 LinuxKernel
*如何列出已加载的 Linux 模块参数值?



相关出版物