Linux 内核和 init 进程

Linux 内核和 init 进程

Linux 内核在启动过程中如何知道 /sbin/init 程序的位置?“/sbin/init”是否硬编码到 Linux 内核源代码中?

答案1

是的,/sbin/init已硬编码到源代码中。查看函数init_post init/main.c

    if (execute_command) {
            run_init_process(execute_command);
            printk(KERN_WARNING "Failed to execute %s.  Attempting "
                                    "defaults...\n", execute_command);
    }
    run_init_process("/sbin/init");
    run_init_process("/etc/init");
    run_init_process("/bin/init");
    run_init_process("/bin/sh");

    panic("No init found.  Try passing init= option to kernel. "
          "See Linux Documentation/init.txt for guidance.");

答案2

可以使用参数在内核启动命令行上给出内核加载完成后要运行的程序init=/file/name

/sbin/init如果未传递此选项,则使用内置默认值。

相关内容