加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

BusyBox制作的文件系统的启动步骤

发布时间:2021-11-22 09:50:24 所属栏目:教程 来源:互联网
导读:1、内核初始化到文件系统初始化 init/main.c(内核C入口) asmlinkage void __init start_kernel(void) { ... rest_init(); } static noinline void __init_refok rest_init(void) __releases(kernel_lock) { ... /* * We need to spawn init first so that i
1、内核初始化到文件系统初始化
 
 
init/main.c(内核C入口)
 
 
asmlinkage void __init start_kernel(void)
{
    ...
    rest_init();
}
static noinline void __init_refok rest_init(void)
    __releases(kernel_lock)
{
    ...
    /*
    * We need to spawn init first so that it obtains pid 1, however
    * the init task will end up wanting to create kthreads, which, if
    * we schedule it before we create kthreadd, will OOPS.
    */
    kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
    ...
}
static int __init kernel_init(void * unused)
{
    ...
    init_post();
    return 0;
}
static noinline int init_post(void)
    __releases(kernel_lock)
{
    ...
    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.");
}
static void run_init_process(char *init_filename)
{
    argv_init[0] = init_filename;
    kernel_execve(init_filename, argv_init, envp_init);
}
static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
int kernel_execve(const char *filename, char *const argv[], char *const envp[])
{
    struct pt_regs regs;
    int ret;
 
    memset(®s, 0, sizeof(struct pt_regs));
    ret = do_execve((char *)filename, (char __user * __user *)argv,
            (char __user * __user *)envp, ®s);
    ...
 
}
 
 
简单说就是:
 
start_kernel()--->rest_init()--开启内核线程-->kernel_init()--->init_post()--->run_init_process("/sbin/init")
 
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读