「Systemd FAQ」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://cgit.freedesktop.org/」を「https://cgit.freedesktop.org/」に置換) |
細 (英語版に追従) |
||
3行目: | 3行目: | ||
[[Category:ブートプロセス]] |
[[Category:ブートプロセス]] |
||
[[en:Systemd FAQ]] |
[[en:Systemd FAQ]] |
||
− | [[es:Systemd FAQ]] |
+ | [[es:Systemd (Español)/FAQ]] |
− | [[it:Systemd FAQ]] |
+ | [[it:Systemd (Italiano)/FAQ]] |
− | [[zh-hans:Systemd FAQ]] |
+ | [[zh-hans:Systemd (简体中文)/FAQ]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|systemd}} |
{{Related|systemd}} |
||
{{Related|systemd/ユーザー}} |
{{Related|systemd/ユーザー}} |
||
− | {{Related|デーモン |
+ | {{Related|デーモン}} |
{{Related articles end}} |
{{Related articles end}} |
||
== FAQ == |
== FAQ == |
||
101行目: | 101行目: | ||
=== ブートプロセスの間にスクリプトを起動するにはどうすればいいですか? === |
=== ブートプロセスの間にスクリプトを起動するにはどうすればいいですか? === |
||
− | {{ic|/etc/systemd/system}} に新しいファイル |
+ | {{ic|/etc/systemd/system/''myscript''.service}} とのように新しいファイル を作成して以下の内容を追加してください: |
[Unit] |
[Unit] |
||
112行目: | 112行目: | ||
WantedBy=multi-user.target |
WantedBy=multi-user.target |
||
− | 次に: |
||
+ | この例では multi-user ターゲットが起動した時にあなたのスクリプトを実行します。スクリプトには[[ヘルプ:読み方#実行可能属性の付与|実行可能属性が付与]]されているようにしてください。 |
||
− | # systemctl enable ''myscript''.service |
||
+ | ''myscript.service'' を[[有効化]]すると次回起動時からは起動時に実行されます。 |
||
− | この例では multi-user ターゲットが起動した時にあなたのスクリプトを実行します。また、まだスクリプトに実行可能権限を与えてない場合は chmod 755 を使って権限を与えて下さい。 |
||
{{Note|1=シェルスクリプトを起動したい場合は、スクリプトの最初の行に shebang を置くようにしてください: {{ic|#!/bin/sh}}。次のように書いても機能しません: {{ic|1=ExecStart=/bin/sh /path/to/script.sh # DOES NOT WORK}}。}} |
{{Note|1=シェルスクリプトを起動したい場合は、スクリプトの最初の行に shebang を置くようにしてください: {{ic|#!/bin/sh}}。次のように書いても機能しません: {{ic|1=ExecStart=/bin/sh /path/to/script.sh # DOES NOT WORK}}。}} |
2020年6月28日 (日) 10:39時点における版
関連記事
目次
- 1 FAQ
- 1.1 どうしてログメッセージがコンソールに表示されるのですか?
- 1.2 デフォルトで動作する getty の数を修正するにはどうすればいいですか?
- 1.3 起動中の出力をもっと詳細に表示するにはどうすればいいですか?
- 1.4 起動後にコンソールが消されるのを止めるにはどうすればいいですか?
- 1.5 公式の Arch カーネルを使わない場合どのカーネルオプションを有効にする必要がありますか?
- 1.6 あるユニットが依存している他のユニットを調べるにはどうすればいいですか?
- 1.7 コンピューターをシャットダウンにしたのに、電源が落ちません
- 1.8 systemd に移行した後、fakeRAID がマウントされません
- 1.9 ブートプロセスの間にスクリプトを起動するにはどうすればいいですか?
- 1.10 .service の状態が緑の "active (exited)" (例: iptables)
- 1.11 Failed to issue method call: File exists エラー
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
ファイルを使いません。
/etc/systemd/logind.conf
を編集して NAutoVTs
の値を変更することで自動で生成させる getty の数を変更することもできます。このようにすれば、必要なときに生成されるのは変わらずに、上の方法で起動時に実行する getty を指定できます。
起動中の出力をもっと詳細に表示するにはどうすればいいですか?
initram のメッセージの後、コンソールに何も表示されない場合、kernel 行に quiet
パラメータが設定されているのが原因です。パラメータを削除すれば、少なくとも最初に systemd で起動した時、全てが ok かどうか見ることができます。そして、緑の [ OK ]
か赤の [ FAILED ]
のリストが表示されます。
全てのメッセージはシステムログに保存されるので、システムの状態を知りたいときは systemctl
を実行 (root 権限は必要ありません) するか journalctl
を使ってブート・システムログを見て下さい。
起動後にコンソールが消されるのを止めるにはどうすればいいですか?
/etc/systemd/system/getty@.service.d
という名前のディレクトリを作成してその中に nodisallocate.conf
を配置して TTYVTDisallocate
オプションを no
に上書きしてください。
/etc/systemd/system/getty@.service.d/nodisallocate.conf
[Service] TTYVTDisallocate=no
公式の Arch カーネルを使わない場合どのカーネルオプションを有効にする必要がありますか?
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
この例では multi-user ターゲットが起動した時にあなたのスクリプトを実行します。スクリプトには実行可能属性が付与されているようにしてください。
myscript.service を有効化すると次回起動時からは起動時に実行されます。
.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
を使って既存のシンボリックリンクを上書きしてください。