# Systemd FAQ (简体中文)

翻译状态： 本文是英文页面 Systemd_FAQ 的翻译，最后翻译时间：2012-11-05，点击这里可以查看翻译后英文页面的改动。

## 常见问题

最新的已知问题，参见：TODO。

#### Q: 为什么控制台上会显示日志信息？

A: 请自行设置内核日志等级（loglevel）。以前，`/etc/rc.sysinit` 帮我们把 dmesg 的日志等级设置为 `3`，是比较合适的。 内核参数中加入 `loglevel=3` 或 `quiet` 即可。

#### Q: 如何修改启用的可登陆的 tty 控制台（getty）数量？

A: 添加新的 getty：

在 `/etc/systemd/system/getty.target.wants/` 添加新的软链接即可：

    # ln -sf /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty9.service
    # systemctl start getty@tty9.service

移除 getty：

从 `/etc/systemd/system/getty.target.wants/` 删除对应的软链接即可：

    # rm /etc/systemd/system/getty.target.wants/getty@tty5.service /etc/systemd/system/getty.target.wants/getty@tty6.service
    # systemctl stop getty@tty5.service getty@tty6.service

用户也可以通过编辑`/etc/systemd/logind.conf`，将`NAutoVTs`修改为需要的 TTY 个数。用这种方式，按需启动将会保持，而之前的方式将会在启动时就启动 TTY.

systemd 不使用 `/etc/inittab` 文件。

注意: 自 systemd 版本 30，系统默认只开启一个 getty。只有切换到别的 tty 时，才会开启新的 getty（socket 激活式）。但仍可使用上述方法强制添加新的 getty。

#### Q: 怎样输出更详细的开机信息？

A: 如果内核信息输出后就什么信息都不输出了，很可能是因为你在内核参数中添加了 `quiet`。删除即可，然后你就可以看到一列列绿色的 [ OK ] 和红色的 [ FAILED ]了。 所有信息都记录在系统日志，可以通过 `$ systemctl` 查看系统状态，通过 `journalctl` 查看日志。

#### Q: 开机后控制台信息会被清空，如何避免？

A: 自己写一个 getty@tty1.service 文件 把 `/usr/lib/systemd/system/getty@.service` 复制到 `/etc/systemd/system/getty@tty1.service`，修改 `TTYVTDisallocate` 为 `no`.

#### Q: 我不用官方内核，内核版本和编译参数有什么要注意的吗？

A: systemd 不支持 2.6.39 版本之前的内核。

这里有一些必须/推荐的编译设置，可能不全：

    General setup
     CONFIG_FHANDLE=y
     CONFIG_AUDIT=y (recommended)
     CONFIG_AUDIT_LOGINUID_IMMUTABLE=y (not required, may break sysvinit compatibility)
     CONFIG_CGROUPS=y
     -> Namespaces support
        CONFIG_NET_NS=y (for private network)
    Networking support -> Networking options
     CONFIG_IPV6=[y|m] (highly recommended)
    Device Drivers
     -> Generic Driver Options
        CONFIG_UEVENT_HELPER_PATH=""
        CONFIG_DEVTMPFS=y
        CONFIG_DEVTMPFS_MOUNT=y (required if you don't use an initramfs)
     -> Real Time Clock
        CONFIG_RTC_DRV_CMOS=y (highly recommended)
    File systems
     CONFIG_FANOTIFY=y (required for readahead)
     CONFIG_AUTOFS4_FS=[y|m]
     -> Pseudo filesystems
        CONFIG_TMPFS_POSIX_ACL=y (recommended, if you want to use pam_systemd.so)

#### Q: 怎样知道一个目标需要哪些进程服务？

A: 例如，你可能想搞明白目标单元 `multi-user.target` 究竟启用了哪些服务，那么以下命令即可：

    $ systemctl show -p "Wants" multi-user.target

    Wants=rc-local.service avahi-daemon.service rpcbind.service NetworkManager.service acpid.service dbus.service atd.service crond.service auditd.service ntpd.service udisks.service bluetooth.service cups.service wpa_supplicant.service getty.target modem-manager.service portreserve.service abrtd.service yum-updatesd.service upowerd.service test-first.service pcscd.service rsyslog.service haldaemon.service remote-fs.target plymouth-quit.service systemd-update-utmp-runlevel.service sendmail.service lvm2-monitor.service cpuspeed.service udev-post.service mdmonitor.service iscsid.service livesys.service livesys-late.service irqbalance.service iscsi.service

除了 `Wants`，还可以查看各种形式的依赖和被依赖信息：`WantedBy`、`Requires`、`RequiredBy`、`Conflicts`、`ConflictedBy`、`Before`、`After`。

#### Q: 电脑关闭了但电源没有断。

A: 使用

    $ systemctl poweroff

而不是 `systemctl halt`.

#### Q: 切换到 systemd 后，为什么 fakeRAID 没有挂载?

A: 请确保使用了

    # systemctl enable dmraid.service

#### Q: 如何在启动的时候，运行自定义的一个脚本？

A: 在`/etc/systemd/system` 中新建一个文件(名称可以为 myscript.service) 然后在其中写入如下内容：

    [Unit]
    Description=My script

    [Service]
    ExecStart=/usr/bin/my-script

    [Install]
    WantedBy=multi-user.target

然后开启该守护进程

    # systemctl enable myscript.service

本例是说当目标multi-usr载入的时候，会启动你这个自定义脚本。

#### Q: .service 状态显示绿色的 "active (exited)" (例如 iptables)

A: 这很正常，本例中的 iptables 并不是守护进程，而是由内核控制，所以装载完规则后自动退出了。通过下面命令检查规则是否正确加载

    # iptables --list

#### Q: `Failed to issue method call: File exists` 错误

A: 此错误一般发生在`systemctl enable`创建系统连接到`/etc/systemd/system/`的时候。一般是在切换显示管理器(例如从 GDM 到 KDM)时出现，这时`/etc/systemd/system/display-manager.service` 已经存在。 要解决此问题，使用 `systemctl -f enable` 覆盖原有链接。
Categories:

- Daemons and system services (简体中文)
- Boot process (简体中文)