/init 和 /sbin/init 之间的区别

/init 和 /sbin/init 之间的区别

在 Linux 启动顺序中,内核将执行/sbin/init,但是,我可以看到/init我的 Linux(CentOS 8 WSL2、Ubuntu 20 WSL2)上的文件系统中存在另一个文件。

它们是不同的二进制文件:

$ diff /init /sbin/init
Binary files /init and /sbin/init differ

/sbin/init和之间有什么区别/init

答案1

/usr/sbin/init或者/sbin/init是可执行文件启动系统安全初始化系统。出于兼容性原因,当systemd已安装,它是世界的可执行文件的别名systemd

在 Linux 系统中,可执行文件/init是不寻常的。我建议调查它存在的原因。它可能是恶意软件的一部分。

答案2

你提到了 WSL 2。微软仍然在 VM 内部运行特殊的 Linux 内核,并且由于目标不是严格模拟,因此他们引入了自己的定制init流程:就像在您安装的每个发行版中启动 cron/cups/X/etc 有什么意义一样。

微软改变了init流程以避免无用的资源消耗(根据 WSL 2 的预期用例)。

当您导入 Linux 发行版映像时,Microsoft 会添加/init在所有发行版之间共享的自己的文件!

甚至:根据如果没有 systemd,WSL/WSL2/WSLg 如何工作?WSL 2 使用单个 VM 来运行所有发行版。因此,内核是相同的,并且内存中的内核实例是共享的,分离是通过 Linux 命名空间完成的。

相关内容