页次: 1
我猜想是内核在执行initramfs里的init的时候内核给它打开了,exec systemd的时候进程没主动关掉导致所有进程全继承了三个fd,除非主动关掉才能停止继承到子进程?@依云
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
对于终端,是让你登录到终端的程序。详情你可以查阅 APUE 对话期(session)和控制终端相关章节。
对于服务,是 systemd。
离线
对于终端,是让你登录到终端的程序。详情你可以查阅 APUE 对话期(session)和控制终端相关章节。
对于服务,是 systemd。
所以内核确实不会为进程打开文件描述符对吧,systemd主动打开的。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
所以内核确实不会为进程打开文件描述符对吧,systemd主动打开的。
当然的。
离线
显然是作为0 1 2三个文件描述符是继承自parent的,那么问题来了,
作为pid 1的parent的pid 0 idle,给pid 1的这三个又是什么呢。。。
我记得idle在整个生命周期内都没有动过这三个文件描述符。
那么说init和kthreadd都需要自己处理这三个文件描述符了?
那么initramfs的init在传递给switch root之后的真 init的时候,真init会重新初始化一遍么?
最近编辑记录 yw662 (2018-12-19 13:06:33)
ecmascript是世界上最好的语言
离线
处于内核态的 kthreadd 没有打开任何文件描述符。
离线
那么initramfs的init在传递给switch root之后的真 init的时候,真init会重新初始化一遍么?
取决于早期init,如果initramfs用了systemd貌似会代替一部分 真-systemd 的工作。。。最近似乎在根文件系统无法挂载的情况下,屏幕上产生了大量绿色日志,然后pvscan失败,我被initramfs-systemd扔到了emergency shell里。后来直接重新生成了initramfs,加了模块,没具体研究当时的情况。
否则的话,真-systemd 就不对原来的init做任何假设,应该会自己开一次文件描述符。毕竟也不能保证系统上的initramfs是啥个样子,存不存在,systemd依赖够多了,不能还依赖特定的initramfs吧。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
页次: 1