请教一个问题,在源码中init函数最后的运行/sbin/init从哪里来的?
在start_kernel之后调用的rest_init函数里面启动了init进程
在init进程里面调用的这些文件是从哪里来的呢?
run_init_process("/sbin/init");
run_init_process("/etc/init");
/sbin/init没有看到内核哪里生成它们啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
对
那就拷贝一个过去呀。
谢谢您的耐心解答
明白了
以后还要多指教!
那如果不用光盘安装,自己编译个内核启动的话是不是
就找不到/sbin/init和/bin/sh等程序
启动不起来呢
那怎么办呢
谢谢大家的回答,我有很多困惑,也许对你们而言问的很幼稚,不好意思,真诚的请求帮助
你用安装光盘装系统的时候
还有,sbin目录下面很多程序,象insmod等,是什么时候加进去的呢
如果不支持initrd的话,它是什么时候拷到那个目录下面的?
这个程序不是 kernel 的一部分,任何人用任何语言都可以编写这个 /sbin/init 程序,你自己也可以编~
不过虽说是如此,System V 对于 init 程序还是有个规范的,man init 就可以看到关于它所应该实现的功能的描述。
在我的 Linux(FC3) 上,/sbin/init 程序是 rpm 包 SysVinit-2.85-34 提供的。
因为 kernel 只是负责调用 init 程序,而对它的行为没有任何假设,因此理论上讲,你使用什么 init 程序都是不重要的。
事实上,根据我的观察,各个发行版自己都改过 init,这一点可以从启动时屏幕上打印出的信息中看到。
谢谢版主的回答
我不明白,这个/sbin/init是哪里来的啊,没有看到这个应用程序的相关代码啊
晕,CU 在搞什么?
数据库出问题了,之前 albcamus 回的贴子没有了。。。。。
呵呵,到你看的这里的时候,
kernel 已经启动完成了,
/sbin/init 是应用层的程序,
和 kernel 不是一起的。
kernel 启动完成后,会主动将控制权移交给 /sbin/init,继续完成应用层的初始化,这也就是你看到的这几行代码。