我是靠谱客的博主 孤独蜗牛,这篇文章主要介绍Linux内核启动应用程序分析(一),现在分享给大家,希望可以做个参考。

前面我们分析了Linux内核的启动流程,请参考:

http://blog.csdn.net/stephen_lu_fahai/article/details/70162011

http://blog.csdn.net/stephen_lu_fahai/article/details/70305405

通过分析Linux内核的启动流程,我们知道Linux内核首先挂接到根文件系统下,接着用init_post这个函数启动应用程序。

一、打开一个文件


756行,首先打开/dev/console,随后两行 759和760的两个sys_dup表示赋值,都是指向console,这几行代表的意思是,标准输入printf ()、标准输出scanf()、标准错误err()都是从console这个文件中打印出来。

二、通过run_init_process来启动应用程序


774行,如果有命令行输入的话,就执行命令行,如果没有输入的命令行,就执行run_init_process("/sbin/init");如果run_init_process("/sbin/init")执行失败,就接着往下执行。一般来说,这几个run_init_process都是一直循环,不返回的,除非是执行出现错误(可能是找不到对应的文件)。

那么输入的命令怎么来的?我们通过搜索execute_command,找到这个结果:


这是u-boot传入的参数,形式为init=user_command. 具体的user_command是由用户输入,即execute_command=user_command,所以才有了第一个run_init_process判断是由有用户命令传入。

三、总结:

1、打开/dev/console这个文件,这个文件代表着标准输入、标准输出、标准错误。

2、先判断是否有用户的执行命令传入,若是有,就一直循环执行,若是没有,接着往下执行。

注意:run_init_process是个死循环,执行成功后不会返回,只有当执行失败的时候(可能是找不到要执行的文件),才会往下执行其他的run_init_process。


最后

以上就是孤独蜗牛最近收集整理的关于Linux内核启动应用程序分析(一)的全部内容,更多相关Linux内核启动应用程序分析(一)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部