分类: LINUX
2016-12-07 21:58:16
HelloWorld自启动
自启动原理:
内核的最后一部分初始化操作为启动init进程,init进程首先进行一系列的硬件初始化,并挂载根文件系统。最后,init进程会去执行一个特定的程序,此程序可以由用户传递过来的“init=”启动参数指定,或者执行以下几个程序之一,由内核态变为用户态:
execve("/sbin/init",argv_init,envp_init)
execve("/etc/init",argv_init,envp_init)
execve("/bin/init",argv_init,envp_init)
execve("/bin/sh",argv_init,envp_init)
这个程序负责创建一些其他进程并且启动系统的一些关键组件运行。Init进程可以看成是所有进程的父亲。
综上,helloworld自启动有两种策略实现:
策略一:将helloworld程序编译生成init,并将init拷贝到根文件系统映像的/sbin目录下
策略二:通过启动参数“init=helloworld程序所在根文件系统的路径”实现
实验结果:
策略一实现