【问题标题】:How can I access the kernel command line from a Linux kernel module?如何从 Linux 内核模块访问内核命令行?
【发布时间】:2018-12-05 10:07:04
【问题描述】:

如何从 Linux 内核模块获取内核命令行?

这可以通过读取/proc/cmdline 来实现,但似乎必须有一种从内核模块访问命令行比打开和读取文件更简单的方法。

【问题讨论】:

  • 您知道 /proc/cmdline 只是告诉您在启动时传递给内核的参数对吗?您实际上不能使用它与内核交互或向其发送命令。 access.redhat.com/documentation/en-us/red_hat_enterprise_linux/…
  • @charlesw 当然。我根本没有尝试使用 /proc/cmdline 与内核交互。我正在尝试在 Linux 内核模块中获取这些参数,这通常可以通过读取 /proc/cmdline 来完成,但是从内核模块中没有直接的方法可以做到这一点。

标签: linux-kernel kernel-module


【解决方案1】:

您真的需要访问整个内核命令行,还是只需要几个参数?
您可以在每个显着参数前加上您的模块名称。

my_module.my_variable=value

然后您的内核模块可以使用 module_param() 宏检索它,如Passing Command Line Arguments to a Module 中所述

【讨论】:

  • 这是一个奇怪的情况,我需要将 cmdline 打印到内核日志。但我可以:insmod module.ko cmdline=$(cat /proc/cmdline)
  • 似乎仍然应该有一种方法可以直接访问 cmdline,但 saved_command_line 没有导出。
  • “我需要将命令行打印到内核日志。” -- 为什么?它已经在日志中。它是内核输出的前十行之一。
  • 这很奇怪。我需要以 KERN_ERR 紧急情况再次打印它,以便日志记录程序显示它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2015-10-05
  • 2018-05-20
  • 1970-01-01
  • 2012-04-11
  • 2013-12-17
  • 1970-01-01
相关资源
最近更新 更多