systemd FAQ (日本語) - ArchWiki

# systemd FAQ (日本語)

## FAQ

既知の問題の最新のリストについては、アップストリームの TODO を調べて下さい。

### どうしてログメッセージがコンソールに表示されるのですか？

カーネルの loglevel はあなた自身の手で設定してください。歴史的に、`/etc/rc.sysinit` がこれを行って dmesg のログレベルを `3` (適度に quiet なログレベル) に設定していました。`loglevel=3` か `quiet` のどちらかをカーネルパラメータに追加してください。

### デフォルトで動作する getty の数を修正するにはどうすればいいですか？

getty を追加するには、`/etc/systemd/system/getty.target.wants/` ディレクトリに getty をインスタンス生成するシンボリックリンクを作ってください:

    # 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/` ディレクトリから削除したい getty のシンボリックリンクを削除してください:

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

systemd は `/etc/inittab` ファイルを使いません。

Note: systemd 30 では、デフォルトで getty はひとつだけ起動します。他の tty に切り替えた場合、そこに getty が起動します (socket-activation style)。上の方法を使って agetty プロセスの追加を強制することは可能です。

`/etc/systemd/logind.conf` を編集して `NAutoVTs` の値を変更することで自動で生成させる getty の数を変更することもできます。このようにすれば、必要なときに生成されるのは変わらずに、上の方法で起動時に実行する getty を指定できます。

### 起動中の出力をもっと詳細に表示するにはどうすればいいですか？

initram のメッセージの後、コンソールに何も表示されない場合、kernel 行に `quiet` パラメータが設定されているのが原因です。パラメータを削除すれば、少なくとも最初に systemd で起動した時、全てが ok かどうか見ることができます。そして、緑の `[ OK ]` か赤の `[ FAILED ]` のリストが表示されます。

全てのメッセージはシステムログに保存されるので、システムの状態を知りたいときは `systemctl` を実行 (root 権限は必要ありません) するか `journalctl` を使ってブート・システムログを見て下さい。

### 起動後にコンソールが消されるのを止めるにはどうすればいいですか？

Create a directory called `/etc/systemd/system/getty@.service.d` という名前のディレクトリを作成してその中に `nodisallocate.conf` を配置して `TTYVTDisallocate` オプションを `no` に上書きしてください。

    /etc/systemd/system/getty@.service.d/nodisallocate.conf

    [Service]
    TTYVTDisallocate=no

### 公式の Arch カーネルを使わない場合どのカーネルオプションを有効にする必要がありますか？

This article or section is out of date.

Reason: see Systemd_FAQ#What_kernel_options_are_required_for_systemd.3F (Discuss)

2.6.39 以前のカーネルはサポートされていません。

以下は必須・推奨オプションのリストの一部です、全てではありません:

    General setup
     CONFIG_FHANDLE=y
     CONFIG_AUDIT=y (推奨)
     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] (強く推奨)
    Device Drivers
     -> Generic Driver Options
        CONFIG_UEVENT_HELPER_PATH=""
        CONFIG_DEVTMPFS=y
        CONFIG_DEVTMPFS_MOUNT=y (必須、initramfs を使わない場合)
     -> Real Time Clock
        CONFIG_RTC_DRV_CMOS=y (強く推奨)
    File systems
     CONFIG_FANOTIFY=y (readahead に必須)
     CONFIG_AUTOFS4_FS=[y|m]
     -> Pseudo filesystems
        CONFIG_TMPFS_POSIX_ACL=y (推奨、pam_systemd.so を使う場合)

### あるユニットが依存している他のユニットを調べるにはどうすればいいですか？

例えば、`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 org.cups.cupsd.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` を使うこともできます。

### コンピューターをシャットダウンにしたのに、電源が落ちません

`systemctl halt` ではなく次のコマンドを使って下さい:

    $ systemctl poweroff

### systemd に移行した後、fakeRAID がマウントされません

次を使っているか確認してください:

    # systemctl enable dmraid.service

### ブートプロセスの間にスクリプトを起動するにはどうすればいいですか？

`/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-user ターゲットが起動した時にあなたのスクリプトを実行します。また、まだスクリプトに実行可能権限を与えてない場合は chmod 755 を使って権限を与えて下さい。

Note: シェルスクリプトを起動したい場合は、スクリプトの最初の行に shebang を置くようにしてください: `#!/bin/sh`。次のように書いても機能しません: `ExecStart=/bin/sh /path/to/script.sh # DOES NOT WORK`。

### .service の状態が緑の "active (exited)" (例: iptables)

これはおかしなことでは全くありません。iptables の場合、実行するデーモンがなくカーネル内でコントロールされるためです。従って、ルールがロードされた後 iptables は終了します。

iptables のルールが正しくロードされたか確認するには:

    # iptables --list

### `Failed to issue method call: File exists` エラー

`systemctl enable` を使った時に `/etc/systemd/system/` 内にすでに作成しようとしたシンボリックリンクが存在する場合にこのエラーが表示されます。大抵はディスプレイマネージャを他のものに切り替える時 (例えば GDM から KDM に、それぞれ `gdm.service` と `kdm.service` を使って有効にできます) 該当するシンボリックリンク `/etc/systemd/system/display-manager.service` が既に存在する場合にエラーが起きます。

この問題を解決するには、まず適切なディスプレイマネージャを無効にしてから新しいディスプレイマネージャを有効にするか、`systemctl -f enable` を使って既存のシンボリックリンクを上書きしてください。

Categories:

- Daemons and system services (日本語)
- Boot process (日本語)