构build一个linux内核是否可能,并且难以置信,使用内置的或者可以从内核访问的python解释器,它可以在init进程中运行一个python文件?
你不能只更换/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
也可以。 (但为什么你呢?!)
我不认为init需要是一个C二进制文件; 它可以是一个脚本#! 一开始 如果是这样的话,那么你可以不费吹灰之力就可以成为一个Python程序。
话虽如此,编写一个inittab只需运行一个程序(虽然它通常也会更有用)。
考虑到你可能会想要在你的系统上做一些不能用python轻松完成的事情(例如,尝试在没有“mount”二进制文件的情况下挂载文件系统),反正你可能需要一个busybox(例如)。 将“init”添加到busybox二进制文件中会增加其大小。