zoukankan      html  css  js  c++  java
  • 【系统移植】kernel分析

    内核启动流程

    第二阶段

    starte_kernel:
     |
     rest_init:
      |
      kernel_init
       |
       do_basic_setup(); // 加载驱动
        |
        do_initcalls();
         |
         for (fn = __early_initcall_end; fn < __initcall_end; fn++)
          do_one_initcall(*fn);
           |
           ret.result = fn(); // 执行所有的驱动入口函数
       prepare_namespace(); // 挂载文件系统
       init_post(); // 启动第一用户进程
        |
        if (execute_command) {
        run_init_process(execute_command);
        printk(KERN_WARNING "Failed to execute %s.  Attempting "
           "defaults... ", 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. 
      kthreadd
      schedule();
     
    run_init_process
     |
     kernel_execve(init_filename, argv_init, envp_init); // 执行另一个代码空间
     // /linuxrc==> busybox==>
    // 注意点: 最好在bootargs传递init=/linuxrc

      @成鹏致远

    (blogs:http://lcw.cnblogs.com

    (emailwwwlllll@126.com)

    (qq552158509





  • 相关阅读:
    IOI 1996 网络协议
    lougu P2344奶牛抗议
    Poj3764 The XOR-longest Path
    A Simple Problem with Integers (线段树)
    NOIP2011 选择客栈
    20181029 T3 乐谱分段
    20181029 T2 寻宝游戏
    20181029 T1 教科书般的亵渎
    NOIP2011聪明的质监员
    浅谈AC自动机
  • 原文地址:https://www.cnblogs.com/lcw/p/3802650.html
Copyright © 2011-2022 走看看