Linux系统启动的关键步骤与机制解析
1. 内核的最后启动步骤
在系统启动的最后阶段,内核会执行一系列关键步骤。以下是内核启动的最后代码片段示例:
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.");
run_init_process() 函数是对 execve() 系统调用的封装。若调用 execve() 时无错误,它不会返回,调用线程的内存空间会被被调用程序的内存映像覆盖,被调用程序直接替换调用线程,继承其进程ID(PID)。
在Linux内核开发中,此初始化序列的结构长期未变。若内核无法成功执行这些进程之一,就会调用 panic() 函数并停止运行。
超级会员免费看
订阅专栏 解锁全文
1847

被折叠的 条评论
为什么被折叠?



