Marvell 310 linux的启动过程

        首先上电,先加载BootRom,然后加载OBM-> BLOB-> Decompress-> call_kernel-> Switch_data-> start_kernel -> rest_init-> kernel_thread-> init-> do_basic_setup-> do_initcalls.

        然后do_initcalls就初始化各个设备和驱动。

    initcall_t *call;

    for (call = __initcall_start; call < __initcall_end; call++) {
    ……
           result = (*call)();
    ……
    }
    中间是通过编译器,将所有需要初始化的函数都放在start和end之间,网络上有很多的文章介绍过程,这里就不赘述了。
 
   kernel 启动完成后,会主动将控制权移交给 /sbin/init....,继续完成应用层的初始化,启动busybox,加载其他系统进程和用户进程。
   run_init_process("/sbin/init");
   run_init_process("/etc/init");
   run_init_process("/bin/init");
   run_init_process("/bin/sh");

posted on 2009-04-28 11:43  SeanLin  阅读(897)  评论(1编辑  收藏  举报

导航