SDB:systemd

跳转至: 导航, 搜索


Systemd 从 openSUSE 12.3 起成为默认且唯一的启动系统。

一般问题

服务无法按预期启动

尽管通过 chkconfig cron 显示 cron 已经被启用了,但是系统引导后却没有被启动。 使用 systemctl start cron.service 是可以正常启动的。 见 Bug #660493

在这种情况下应当使用 systemctl enable cron.service

如果不手动加载 "loop" 模块 loop mounts 不工作

Bug #661715。使用 SysV 初始化时,loop 模块由 /etc/init.d/boot.localfs 无条件加载,而此脚本已经不再使用了。如果想要它自动加载,运行

echo loop > /etc/modules-load.d/loop.conf

获取 systemd 的调试信息

要获取 systemd 调试信息,你需要:

  • 从内核命令行中移除 quiet 参数
  • 通过在内核命令行中添加debug,增加 systemd 调试输出冗余。你也可以添加 systemd.sysv_console=1 (0: 禁用, 1: 启用) 来在控制台上显示原先的 SysV 初始化脚本输出信息。
  • 使用以下设置修改 /etc/systemd/system.conf (请查看 man systemd.conf) 增加调试输出冗余度:
LogLevel=debug
LogTarget=syslog-or-kmsg
SysVConsole=yes

串口控制台不工作

默认情况下 systemd 会启动一个最小化配置的 getty 使系统可以访问。

当在内核命令行中指定了使用哪一个串口控制台时,getty 只会在参数列表中最后一个(定义了 "active" 的控制台)上启动:

  • console=tty0 console=ttyS0 将会同时在 tty0 (例如物理控制台)和串口控制台上启动
  • console=ttyS0 console=tty0 将只会在 tty0 上启动

如果要强制启动串口控制台,使用:

ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service