正如常见的那样,lxd
提供了两个 systemd 单元:lxd.socket
和lxd.service
。lxd.socket
启动时,lxd.service
只要任何应用程序(例如lxc
)尝试访问 lxd 守护程序,它就会启动。
我想lxd
在启动时启动,而无需运行任何命令。但是,当我尝试启用 时lxd.service
,它会启用lxd.socket
:
# systemctl enable lxd.service
Created symlink /etc/systemd/system/sockets.target.wants/lxd.socket → /usr/lib/systemd/system/lxd.socket.
这里发生了什么?我怎样才能启用lxd.service
?
系统运行的是 Fedora 39。这些是单元文件:
/usr/lib/systemd/system/lxd.service
:
[Unit]
Description=LXD - main daemon
After=network-online.target openvswitch-switch.service lxcfs.service lxd.socket
Requires=network-online.target lxcfs.service lxd.socket
Documentation=man:lxd(1)
[Service]
Environment=LXD_DOCUMENTATION=/usr/share/doc/lxd-doc/html
Environment=LXD_OVMF_PATH=/usr/share/edk2/ovmf
Environment=LXD_UI=/usr/share/lxd-ui/ui
ExecStart=/usr/bin/lxd --group lxd
ExecStartPost=/usr/bin/lxd waitready --timeout=600
KillMode=process
TimeoutStartSec=600s
TimeoutStopSec=30s
Restart=on-failure
LimitNOFILE=1048576
LimitNPROC=infinity
TasksMax=infinity
[Install]
Also=lxd-containers.service lxd.socket
/usr/lib/systemd/system/lxd.socket
:
[Unit]
Description=LXD - unix socket
Documentation=man:lxd(1)
[Socket]
ListenStream=/var/lib/lxd/unix.socket
SocketGroup=lxd
SocketMode=0660
Service=lxd.service
[Install]
WantedBy=sockets.target
您看到的行为是由
Also
服务单元中的关键字驱动的,您可以在此处阅读有关内容。由于服务单元未在该部分中指定
WantedBy
(或RequiredBy
) 指令[Install]
,因此这Also
实际上意味着“相反”:当您systemctl enable lxd.service
, 相反 启用lxd-containers.service
和 时lxd.socket
。您可以尝试简单地添加
WantedBy=default.target
到该[Install]
部分,以便该lxd
服务在启动时自动启动。不要忘记systemctl daemon-reload
在编辑单元后(或创建插入配置后)。