问题描述
笔者通过WSL安装了CentOS7系统,刚开始一切都很顺利。当执行systemctl命令时,却意外报错:Failed to get D-Bus connection: Operation not permitted,让小白的我不知所措。经过一番折腾,笔者终于找到了正确的解决办法——原来它和systemd有关。
问题原因
我们先来了解下systemd是什么东东?它并不是一个命令,而是一组命令,涉及到系统管理的各个方面。根据Linux惯例,字母d是守护进程 (daemon) 的缩写,systemd这个名字的含义就是要守护整个系统。init和systemd都是Linux的守护进程, 但后者功能更强大,已取代init (initd的PID是0) 成为Linux系统的第一个进程 (systemd的PID是1)。下面是systemd的架构图:
systemctl是systemd的主命令,用于管理系统。除此之外,还有hostnamectl(查看当前主机信息)、timedatectl(查看当前时区设置)、loginctl(查看当前登录的用户)等命令。
为什么CentOS在WSL里会出现上述错误呢?想必你也猜到一半了,没错,就是systemd没有启用引起的(WSL2现已支持)。Ubuntu发行版默认安装已启用systemd,而其它Linux发行版上默认还是init,需要手动启用才行。可以通过以下命令来查看:
# ps --no-headers -o comm 1
init(CentOS7)
08-11 09:02