2011-05-09 87 views
1

有没有办法在启动时找到传递给内核(/ proc/cmdline)的参数,而无需读取proc中的任何文件?我可能有一个需要在/ proc挂载之前读取引导参数的进程。读取Linux内核参数

回答

2

看起来内核会将引导行上的任何内容作为参数传递给init,除非存在'='或''。 '

Passing Linux boot opts to Init

+1

我相信init会将它们设置为一个环境变量。 – 2011-05-10 13:42:45

0

我敢肯定有一个更好的办法,但我看到它在dmesg的

+0

humm ...我不认为这也可以。我希望在C库中有一个函数可以提供信息。也许我应该将C标签添加到问题中。需要此信息的进程将作为init(它将是第一个进程)运行,并且需要在exec()真正的init进程之前消化信息。 – tMC 2011-05-09 01:01:36

+0

@tMC:首先想到的。让你的程序挂载'/ proc'。 :-) – Mikel 2011-05-09 01:13:27

+0

@mikel - 它可能也有。但我希望以不同的方式对启动过程进行分组。我只是希望在libs中有一个函数可以通过ctypes或我可以在启动启动过程之前启动的接口执行。 – tMC 2011-05-09 01:17:36

0

我想了解您的需求更好,因为你几乎保证有/proc安装。安装/procinit所做的第一件事情之一。

与Ubuntu的新贵:/etc/init/mountall.conf,在startup事件
的Fedora与启动脚本的一部分:/etc/rc.sysinit,第二件事情它(设置主机名之后)

您的代码几乎可以肯定在此之后运行。


看到,因为您要更换init,看看init是怎么做的。 init git repo

似乎有一个全球性的符号叫做boot_command_line

+0

我正在用中断语言(python)重写init。我想将路径传递给python中断程序作为引导选项,但由于init将是一个python脚本,我需要知道中断程序的路径在exec()init过程之前的位置。 – tMC 2011-05-09 01:14:18

+5

LOL,Python作为*中断*语言 - 使我的一天:) – 2011-05-09 01:36:24