内核怎样启动第一个应用程序?
1、首先内核要去挂接根文件系统
2、然后打开dev/console,然后sys_dump(0), sys_dump(0),就是将dev/console复制两次。
也就是说,内核打开了dev/console文件,然后将标准输出printf,标准输入scanf,标准错误err都指向这个文件,这个文件其实就是终端。
3、最后使用run_init_porcess()函数,启动应用程序。
启动的应用程序,先是判断u-boot的命令行参数是否有传入init==xxx函数
如果有,就启动这个xxx函数
如果没有或者xxx函数出错了,就去启动/sbin/init函数,
如果/sbin/init出错了,就会执行/etc/init,
如果/etc/init出错了,就执行/bin/init,
如果/bin/init出错了,就执行/bin/sh。
如果/bin/sh出错了,就打印错误“No init found …”