3

构建一个 Linux 内核是否可能并且不是非常困难,其中内置了一个 Python 解释器或可从内核访问,它可以在它的 init 进程中运行一个 Python 文件?

4

2 回答 2

6

您不能只替换或为引导加载程序/sbin/init提供选项吗?init=...只需确保将 python + libs 放在根文件系统上。

编辑我不想破坏系统,所以它未经测试,但看着linux/init/main.c

static void run_init_process(char *init_filename)
{
    argv_init[0] = init_filename;
    kernel_execve(init_filename, argv_init, envp_init);
}

我看不出为什么(python)脚本不能替换 init 进程;execve是触发任何正常进程的同一个调用。而且我认为 stdin 和 stdout 只是连接到 /dev/console,因为init=/bin/sh也可以。(但你到底为什么要这样做?!)

于 2010-08-02T22:13:44.910 回答
2

我认为 init 不需要是 C 二进制文件。它可以是带有 #! 的脚本 一开始; 如果是这样的话,那么你可以毫不费力地让它成为一个 python 程序。

话虽如此,编写一个 inittab 非常简单,其中 init 只运行一个程序一次(尽管执行其他操作通常也更有用)。

鉴于您可能想在系统上做一些用 python 无法轻松完成的事情(例如,尝试在没有“mount”二进制文件的情况下安装文件系统),您可能无论如何都需要一个 busybox(例如);将“init”添加到busybox 二进制文件几乎不会增加其大小。

于 2010-08-02T22:29:55.367 回答