gpt4 book ai didi

python - 通过 Linux 引导选择 Init

转载 作者:太空狗 更新时间:2023-10-29 11:39:44 25 4
gpt4 key购买 nike

我想在引导时通过引导加载程序中配置的引导选项将一些参数传递给自定义的 Linux init。

我已经用 Python 和 C 编写了测试初始化​​程序。Python 版本能够在内核启动选项中看到任何没有“=”或“.”的内容。在里面。这些值位于 sys.argv 中。但是,C 程序似乎没有传递这些值。我本以为 Python 中的 sys.argv 列表是通过解析 **argv 数组生成的。以下是希望有助于澄清的测试脚本和屏幕截图。

内核引导行是:

kernel/grub/linux-2.6.38.4 root=/dev/vda1 init=/argv-{p|c}一二三四五

Python 版本:

#!/usr/bin/python

import sys

i = 0
print("Printing argv[] (Python) ...")
for each in range(i, len(sys.argv)):
print("argv[%d] - %s" % (i, sys.argv[i]))
i += 1
print("...finished printing argv[]")

Python init argv test

C 版:

#include <stdio.h>

int main(int argc, char **argv)
{
int i;
printf("Printing argv[] (C) ...\n");
for(i; i < argc; i++) {
printf("argv[%d] - %s\n", i, argv[i]);
}
printf("...finished printing argv[]\n");
}

C init argv test

你可以看到就在测试程序退出(并导致 panic )之前,python 版本吐出了内核没有消化的引导选项,而 C 版本没有。我查看了 sysvinit 源代码,在我看来(不是 C 开发人员)它的工作方式相同吗?

如何将引导选项传递给我的 C init 程序?

(哦,C 程序在未作为 init 运行时按预期工作)

最佳答案

我不知道 C,但我认为 int i; 在哪里(第 4 行)应该是 int i = 0; .如果我错了,请在我的答案中添加评论,我会删除它。

编辑:你也可以做 i = 0在 for 循环中:for(i = 0; i < argc; i++) .

关于python - 通过 Linux 引导选择 Init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com