「OpenRC」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(1版 をインポートしました)
(関連記事を同期)
 
(5人の利用者による、間の21版が非表示)
1行目: 1行目:
[[Category:ブートプロセス]]
+
[[Category:Init]]
 
[[en:OpenRC]]
 
[[en:OpenRC]]
  +
[[pt:OpenRC]]
{{Note|デフォルトでは Arch は [[systemd|systemd]] を使用しています。OpenRC を使う場合、助けを求める時はそのことを明記して下さい。}}
 
  +
[[ru:OpenRC]]
  +
[[tr:OpenRC]]
  +
{{Related articles start}}
  +
{{Related|init}}
  +
{{Related articles end}}
  +
{{Warning|デフォルトでは Arch は [[systemd]] を使用しています。OpenRC を使う場合、助けを求める時はそのことを明記して下さい。}}
   
 
OpenRC は Gentoo の開発者によってメンテナンスされている init システムです。OpenRC は依存関係を前提とした init システムで、sysvinit などの init プログラムが動いているシステムで動作します。OpenRC は sysvinit を置き換えるものではありません。
 
OpenRC は Gentoo の開発者によってメンテナンスされている init システムです。OpenRC は依存関係を前提とした init システムで、sysvinit などの init プログラムが動いているシステムで動作します。OpenRC は sysvinit を置き換えるものではありません。
7行目: 13行目:
 
== インストール ==
 
== インストール ==
   
OpenRC は [[AUR|AUR]] から利用可能です。{{AUR|openrc}} または {{AUR|openrc-git}} パッケージを選んでインストールできます。また、{{AUR|openrc-arch-services-git}} (arch で openrc を使うために必要なサービスファイルを提供します) と {{AUR|openrc-sysvinit}} (伝統的な sysvinit に多少のパッチがあてられたバージョン) もインストールする必要があります。initscripts と互換性を保つために、{{AUR|openrc-sysvinit}} は sysvinit の init バイナリを {{ic|/usr/bin/init-openrc}} としてインストールします。
+
OpenRC は [[AUR]] から利用可能です。{{AUR|openrc}} または {{AUR|openrc-git}} パッケージを選んでインストールできます。
   
  +
バージョン 0.25 から、OpenRC には独自の init が付属しており {{ic|/usr/bin/openrc-init}} にインストールされます。任意で {{Pkg|busybox}} や {{AUR|openrc-sysvinit}} (伝統的な sysvinit に多少のパッチがあてられたバージョン) など他の init を使うこともできます。{{ic|openrc-init}} を使用する場合、他のパッケージの {{ic|shutdown}} や {{ic|reboot}} コマンドの代わりに {{ic|openrc-shutdown}} を使う必要があります。そうしないとエラーが発生します。
パッケージはデフォルトの位置である {{Ic|/etc}} ではなく {{Ic|/etc/openrc}} の元にインストールされるので、ユーザーは必要に応じて initscripts や [[systemd|systemd]] に切り替えることが可能です。
 
  +
  +
基本的なサービスファイルは {{AUR|openrc-arch-services-git}} パッケージでインストールできます。他にもサービスファイルが含まれたパッケージが存在します。AUR を検索してください。
  +
  +
{{AUR|initscripts-fork}} との互換性を保つために、設定ファイルは {{ic|/etc/openrc/}} にインストールされます。
  +
  +
=== ブート ===
  +
  +
OpenRC を使って起動するには使用する init を[[カーネルパラメータ]]に追加してください。
  +
  +
OpenRC に付属している init の場合は {{Ic|1=init=/usr/bin/openrc-init}} を追加します。
  +
{{AUR|openrc-sysvinit}} を使用する場合は {{ic|/usr/bin/init-openrc}} に置き換えてください。
  +
  +
{{ic|openrc-init}} を使用する場合、{{ic|/etc/inittab}} ファイルは使用されないことに注意してください。
   
 
== 設定 ==
 
== 設定 ==
   
  +
OpenRC の設定は {{Ic|1=/etc/openrc/conf.d}} ディレクトリと {{Ic|1=/etc/openrc/rc.d}} ファイルで行います。
OpenRC を使って起動するには {{Ic|1=init=/usr/bin/init-openrc}} を使用しているブートローダーの設定のカーネル行に追加してください。systemd に戻したい場合は、設定したところを {{ic|1=init=/usr/lib/systemd/systemd}} に変えて下さい。
 
  +
  +
設定に関する詳細な資料は以下を参照してください:
  +
* [http://www.calculate-linux.org/main/en/openrc_manuals OpenRC の man ページ]
  +
* [https://wiki.gentoo.org/wiki/OpenRC/Baselayout_1_to_2_migration/ja OpenRC の移行]
  +
* [https://wiki.gentoo.org/wiki/OpenRC gentoo wiki]
  +
  +
[[systemd]] から移行する場合は [[Init#設定]]を参照。
  +
  +
=== サービス ===
  +
  +
OpenRC のサービスは root で {{ic|rc-update add ''service_name'' ''runlevel''}} を実行することで有効にできます。最低でも以下のサービスを有効化することが推奨されます:
  +
{| class="wikitable"
  +
! サービス名
  +
! [https://wiki.gentoo.org/wiki/OpenRC#Named_runlevels ランレベル]
  +
! 説明
  +
|-
  +
| udev
  +
| sysinit
  +
| デバイスのホットプラグ
  +
|-
  +
| alsa
  +
| default
  +
| [[ALSA]] の状態
  +
|-
  +
| acpid
  +
| default
  +
| ACPI イベント
  +
|-
  +
| dbus
  +
| default
  +
| メッセージバス
  +
|-
  +
| dcron
  +
| default
  +
| スケジュール
  +
|-
  +
| syslog-ng
  +
| default
  +
| システムログ
  +
|}
  +
  +
{{Warning|カーネルパラメータで {{ic|1=init=/usr/bin/openrc-init}} を使用する場合は、[[getty]] サービスを手動で有効にする必要があります。そうしないと、[https://github.com/OpenRC/openrc/blob/master/agetty-guide.md ドキュメント]で説明されているように対話型 TTY が残されなくなります。}}
  +
必要に応じて、{{ic|/etc/openrc/init.d/getty}} へのシンボリックリンクを作成して、必要な [[getty]] ごとにサービスを作成します。例: {{ic|/dev/tty1}}:
   
  +
# ln -s /etc/openrc/init.d/agetty{,.tty1}
OpenRC の設定に関する詳細な資料は、[http://www.calculate-linux.org/main/en/openrc_manuals man ページ] を見たり、[http://www.gentoo.org/doc/en/openrc-migration.xml gentoo guide] や [http://wiki.gentoo.org/wiki/OpenRC gentoo wiki] を参照してください。
 
  +
# rc-update add agetty.tty1 default
   
  +
PAM が tty にログインした後に systemd に登録しようとするのを防ぐため ([https://bbs.archlinux.org/viewtopic.php?id=285505 が問題を引き起こす可能性があります])、{{ic|/etc/pam.d/system-auth}} 内の systemd に言及する行を削除するかコメントアウトすると安全です。
udev サービスはデフォルトでは有効になっていないので注意してください。有効にするには、次を実行してください:
 
   
  +
[[Gentoo:Systemd#Native services]] も参照してください。
# rc-update add udev sysinit
 
   
 
=== ネットワーク ===
 
=== ネットワーク ===
32行目: 95行目:
 
ifup_eth0="ip link set \$int mtu 1500"</nowiki>}}
 
ifup_eth0="ip link set \$int mtu 1500"</nowiki>}}
   
network サービスはデフォルトで起動時のランレベルに追加されるため、れ以設定は必要ありません。
+
ネットワーク サービスはデフォルトでブートランレベルに追加されるため、れ以操作は必要ありません。一般的な、ネットワークの設定の詳細においては[[ネットワーク設定]]を見て下さい
   
また、[[NetworkManager|NetworkManager]][[dhcpcd|dhcpcd]]、さらに {{AUR|netcfg}} などを使ことも可能です。それぞれサービスを有効にしてください。
+
{{Note|1=それぞれのサービスを有効にすることで、[[NetworkManager]][[dhcpcd]]、または {{AUR|netcfg}} を使用することもできます。''netcfg'' は [[netctl]] 動作を模倣します (起動時にプロファイル接続を有効にしたい場合は、[https://bbs.archlinux.org/viewtopic.php?pid=1489283#p1489283] を参照してください {{ic|wpa_actiond}} が必要です) [https://archlinux.org/netcfg/features.html netcfg の機能 ]を参照してください。}}
   
  +
=== ブートログ ===
一般的な、ネットワークの設定の詳細においては [[Network Configuration]] を見て下さい。
 
   
  +
ブートログを有効にするには、{{ic|/etc/openrc/rc.conf}} の {{ic|1=rc_logger="YES"}} 行のコメントを解除します。有効にすると、ブートログは {{ic|/var/log/rc.log}} に保存されます。
=== ログ ===
 
 
====syslog-ng====
 
syslog-ng を使う場合、{{ic|/etc/syslog-ng/syslog-ng.conf}} 内の次の行をコメントアウトしてください:
 
{{bc|unix-dgram("/run/systemd/journal/syslog")}}
 
そして、代わりに次の行を追加してください: {{bc|unix-dgram("/dev/log");}}
 
{{Note|この変更を行わないと syslog-ng が起動しないため何もログが残りません。}}
 
 
====起動時のログ====
 
OpenRC の起動時のログはデフォルトで無効になっています。有効にするには、{{ic|/etc/openrc/rc.conf}} 内の次の行をアンコメントしてください:
 
{{bc|<nowiki>#rc_logger="YES"</nowiki>}}
 
   
 
=== ホストネーム ===
 
=== ホストネーム ===
68行目: 121行目:
 
OpenRC でロケールを設定する方法が備わっていません。しかしながら、{{ic|/etc/locale.conf}} ファイルを使って設定することが可能です。このファイルは {{ic|/etc/profile.d/locale.sh}} で読み込まれます。
 
OpenRC でロケールを設定する方法が備わっていません。しかしながら、{{ic|/etc/locale.conf}} ファイルを使って設定することが可能です。このファイルは {{ic|/etc/profile.d/locale.sh}} で読み込まれます。
   
ロケールの設定に関する詳細は、[[Locale|ここ]]を参照してください。
+
ロケールの設定に関する詳細は、[[ロケール]]を参照してください。
  +
  +
== 使用方法 ==
  +
  +
このセクションでは、[[systemd]] と他の [[init]] システムとの類似点を示します。
  +
  +
特に [[カーネルパラメータ]] を一時的に編集する場合は、{{ic|.service}} および {{ic|.target}} 拡張子を省略できます。
  +
  +
{| class="wikitable" width="100%"
  +
! systemd !! SysVinit !! OpenRC !! 説明
  +
|-
  +
| {{ic|systemctl list-units}} || {{ic|rc.d list}} || {{ic|rc-status}} || 実行中のサービスのステータスを一覧表示する
  +
|-
  +
| {{ic|systemctl --failed}} || || {{ic|rc-status --crashed}} || 失敗したサービスを確認する
  +
|-
  +
| {{ic|systemctl --all}} || || {{ic|rc-update -v show}} || 利用可能なサービスをすべて表示します
  +
|-
  +
| {{ic|systemctl (start, stop, restart, status) daemon.service}} || {{ic|rc.d (start, stop, restart) daemon}} || {{ic|rc-service daemon (start, stop, restart, status)}} || サービス状態の変更
  +
|-
  +
| {{ic|systemctl (enable, disable) daemon.service}} || {{ic|chkconfig daemon (on, off)}} || {{ic|rc-update (add, del) daemon}} || サービスをオンまたはオフにします
  +
|-
  +
| {{ic|systemctl daemon-reload}} || {{ic|chkconfig daemon --add}} || || 設定を作成または変更します
  +
|}
  +
  +
== ヒントとテクニック ==
  +
  +
=== ブートメッセージを消す ===
  +
  +
OpenRC でブートメッセージを非表示にするには、{{ic|/etc/inittab}} を編集して全ての openrc コマンドに {{ic|--quiet}} を追加してください。詳しい情報は {{ic|$ openrc -h}} で確認できます。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
101行目: 182行目:
 
sync; sync
 
sync; sync
   
  +
=== /etc/sysctl.conf not found ===
== systemd との比較 ==
 
   
  +
デフォルトで、sysctl の設定をロードするために {{ic|sysctl --system}} が実行されます [https://github.com/OpenRC/openrc/blob/master/init.d/sysctl.Linux.in#L17]。Arch では存在しない {{ic|/etc/sysctl.conf}} も読み込まれます [https://www.archlinux.jp/news/deprecation-of-etcsysctlconf/]。
{| class="wikitable"
 
  +
! systemd !! OpenRC !! 説明
 
  +
ファイルが見つからないというエラーを表示させたくない場合、ファイルを作成してください:
|-
 
  +
| {{ic|systemctl list-units}} || {{ic|rc-status}} || 動作中のサービスの状態を表示
 
  +
# touch /etc/sysctl.conf
|-
 
  +
| {{ic|systemctl --failed}} || {{ic|rc-status --crashed}} || 失敗した、クラッシュしたユニット・サービスの確認
 
  +
=== opentmpfiles-setup failed to start ===
|-
 
  +
| {{ic|systemctl --all}} || {{ic|rc-update -v show}} || 利用できるユニット・サービスを全て表示
 
  +
OpenRC の起動時に以下のようなメッセージが表示される場合:
|-
 
  +
| {{ic|systemctl {start,stop,restart,status} xyz}} || {{ic|/etc/openrc/init.d/xyz {start,stop,restart,status} }} || ユニット・サービスをすぐに起動・停止・再起動・状態を表示
 
  +
* Setting up tmpfiles.d entries ...
|-
 
  +
chattr: Operation not supported while setting flags on /var/log/journal
| {{ic|systemctl {enable,disable} xyz}} || {{ic|rc-update {add,del} xyz}} || サービス・ユニットを追加もしくは削除
 
  +
chattr: No such file or directory while trying to stat /var/log/journal/%m
|}
 
  +
chattr: Operation not supported while setting flags on /var/log/journal/remote
  +
[ !! ]
  +
ERROR: opentmpfiles-setup failed to start
  +
  +
{{ic|/usr/lib/tmpfiles.d/journal-nocow.conf}} で btrfs ファイルシステム上にジャーナルがある場合にしか使えないオプションが有効になっていることが原因です。詳しくは https://github.com/OpenRC/opentmpfiles/issues/2 を参照してください。
  +
  +
空の {{ic|/etc/tmpfiles.d/journal-nocow.conf}} ファイルを作成することで設定を上書きできます。
  +
  +
== systemd に戻す ==
  +
  +
大抵の場合 systemd に戻すのは簡単です。OpenRC から systemd に移行する際は、以下の点に注意してください:
  +
  +
* カーネルコマンドラインの {{ic|1=init=}} パラメータの編集。
  +
* OpenRC 向けに改造された、systemd を使用しないパッケージを標準のパッケージに置き換え (例: {{AUR|dbus-nosystemd}} を {{pkg|dbus}} に置換)
   
  +
== 参照 ==
この表は [http://blog.dastergon.gr/demystifying-systemd/ この投稿] からの引用です。
 
   
== 外部リンク ==
 
 
* [[Wikipedia:OpenRC]]
 
* [[Wikipedia:OpenRC]]
  +
* [https://wiki.gentoo.org/wiki/OpenRC Gentoo wiki]
 
* [https://bbs.archlinux.org/viewtopic.php?id=152606 Arch 上の OpenRC に関するフォーラムスレッド]
 
* [https://bbs.archlinux.org/viewtopic.php?id=152606 Arch 上の OpenRC に関するフォーラムスレッド]
  +
* [http://blog.notfoss.com/posts/openrc-on-arch-linux/ Blog: OpenRC on Arch Linux]
  +
* [https://wiki.manjaro.org/index.php?title=OpenRC,_an_alternative_to_systemd Manjaro wiki]

2024年2月13日 (火) 02:48時点における最新版

関連記事

警告: デフォルトでは Arch は systemd を使用しています。OpenRC を使う場合、助けを求める時はそのことを明記して下さい。

OpenRC は Gentoo の開発者によってメンテナンスされている init システムです。OpenRC は依存関係を前提とした init システムで、sysvinit などの init プログラムが動いているシステムで動作します。OpenRC は sysvinit を置き換えるものではありません。

インストール

OpenRC は AUR から利用可能です。openrcAUR または openrc-gitAUR パッケージを選んでインストールできます。

バージョン 0.25 から、OpenRC には独自の init が付属しており /usr/bin/openrc-init にインストールされます。任意で busyboxopenrc-sysvinitAUR (伝統的な sysvinit に多少のパッチがあてられたバージョン) など他の init を使うこともできます。openrc-init を使用する場合、他のパッケージの shutdownreboot コマンドの代わりに openrc-shutdown を使う必要があります。そうしないとエラーが発生します。

基本的なサービスファイルは openrc-arch-services-gitAUR パッケージでインストールできます。他にもサービスファイルが含まれたパッケージが存在します。AUR を検索してください。

initscripts-forkAUR との互換性を保つために、設定ファイルは /etc/openrc/ にインストールされます。

ブート

OpenRC を使って起動するには使用する init をカーネルパラメータに追加してください。

OpenRC に付属している init の場合は init=/usr/bin/openrc-init を追加します。 openrc-sysvinitAUR を使用する場合は /usr/bin/init-openrc に置き換えてください。

openrc-init を使用する場合、/etc/inittab ファイルは使用されないことに注意してください。

設定

OpenRC の設定は /etc/openrc/conf.d ディレクトリと /etc/openrc/rc.d ファイルで行います。

設定に関する詳細な資料は以下を参照してください:

systemd から移行する場合は Init#設定を参照。

サービス

OpenRC のサービスは root で rc-update add service_name runlevel を実行することで有効にできます。最低でも以下のサービスを有効化することが推奨されます:

サービス名 ランレベル 説明
udev sysinit デバイスのホットプラグ
alsa default ALSA の状態
acpid default ACPI イベント
dbus default メッセージバス
dcron default スケジュール
syslog-ng default システムログ
警告: カーネルパラメータで init=/usr/bin/openrc-init を使用する場合は、getty サービスを手動で有効にする必要があります。そうしないと、ドキュメントで説明されているように対話型 TTY が残されなくなります。

必要に応じて、/etc/openrc/init.d/getty へのシンボリックリンクを作成して、必要な getty ごとにサービスを作成します。例: /dev/tty1:

# ln -s /etc/openrc/init.d/agetty{,.tty1}
# rc-update add agetty.tty1 default

PAM が tty にログインした後に systemd に登録しようとするのを防ぐため (が問題を引き起こす可能性があります)、/etc/pam.d/system-auth 内の systemd に言及する行を削除するかコメントアウトすると安全です。

Gentoo:Systemd#Native services も参照してください。

ネットワーク

ネットワークを立ち上げて動かす方法は複数存在します。一つは /etc/openrc/conf.d/network ファイルを設定することです。ip (iproute2) と ifconfig (net-tools) 両方のコマンドがサポートされています。

以下は ip を使った設定の例です。

ip_eth0="192.168.1.2/24"
defaultiproute="via 192.168.1.1"
ifup_eth0="ip link set \$int mtu 1500"

ネットワーク サービスはデフォルトでブートランレベルに追加されるため、それ以上の操作は必要ありません。一般的な、ネットワークの設定の詳細においてはネットワーク設定を見て下さい。

ノート: それぞれのサービスを有効にすることで、NetworkManagerdhcpcd、または netcfgAUR を使用することもできます。netcfgnetctl の動作を模倣します (起動時にプロファイル接続を有効にしたい場合は、[1] を参照してください wpa_actiond が必要です) netcfg の機能 を参照してください。

ブートログ

ブートログを有効にするには、/etc/openrc/rc.confrc_logger="YES" 行のコメントを解除します。有効にすると、ブートログは /var/log/rc.log に保存されます。

ホストネーム

OpenRC は /etc/openrc/conf.d/hostname からホストネームを設定します。

以下は設定ファイルの例:

/etc/openrc/conf.d/hostname
hostname="myhostname"

モジュールの自動ロード

OpenRC は /etc/modules-load.d/ フォルダを使用せず、そのかわりに /etc/openrc/conf.d/modules を使います。

このファイルに以下のように行を追加してください:

modules=acpi_cpufreq

ロケール

OpenRC でロケールを設定する方法が備わっていません。しかしながら、/etc/locale.conf ファイルを使って設定することが可能です。このファイルは /etc/profile.d/locale.sh で読み込まれます。

ロケールの設定に関する詳細は、ロケールを参照してください。

使用方法

このセクションでは、systemd と他の init システムとの類似点を示します。

特に カーネルパラメータ を一時的に編集する場合は、.service および .target 拡張子を省略できます。

systemd SysVinit OpenRC 説明
systemctl list-units rc.d list rc-status 実行中のサービスのステータスを一覧表示する
systemctl --failed rc-status --crashed 失敗したサービスを確認する
systemctl --all rc-update -v show 利用可能なサービスをすべて表示します
systemctl (start, stop, restart, status) daemon.service rc.d (start, stop, restart) daemon rc-service daemon (start, stop, restart, status) サービス状態の変更
systemctl (enable, disable) daemon.service chkconfig daemon (on, off) rc-update (add, del) daemon サービスをオンまたはオフにします
systemctl daemon-reload chkconfig daemon --add 設定を作成または変更します

ヒントとテクニック

ブートメッセージを消す

OpenRC でブートメッセージを非表示にするには、/etc/inittab を編集して全ての openrc コマンドに --quiet を追加してください。詳しい情報は $ openrc -h で確認できます。

トラブルシューティング

/tmp のアンマウント時にエラーが起こる

システムをシャットダウンするときに、以下のようなエラーメッセージが表示されることがあります:

* Unmounting /tmp ... 
* in use but fuser finds nothing [ !! ]

この問題は /etc/openrc/conf.d/localmount に以下を追加することで修正できます:

no_umounts="/tmp"
ノート: この問題は tmp が tmpfs でマウントされている場合のみ発生します。

IPv6 が無効にできない

OpenRC は /etc/openrc の sysconf ディレクトリにインストールした場合に起こります。

/etc/openrc/sysctl.d 下のファイル (拡張子は .conf にしてください) に以下を記述することで修正できます:

# Disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1

シャットダウン中に読み込み専用での root の再マウントが失敗する

この問題が発生する場合、/etc/openrc/init.d/mount-ro を編集して以下を:

telinit u

次の行の後に記述してください:

# Flush all pending disk writes now
sync; sync

/etc/sysctl.conf not found

デフォルトで、sysctl の設定をロードするために sysctl --system が実行されます [2]。Arch では存在しない /etc/sysctl.conf も読み込まれます [3]

ファイルが見つからないというエラーを表示させたくない場合、ファイルを作成してください:

# touch /etc/sysctl.conf

opentmpfiles-setup failed to start

OpenRC の起動時に以下のようなメッセージが表示される場合:

* Setting up tmpfiles.d entries ...
chattr: Operation not supported while setting flags on /var/log/journal
chattr: No such file or directory while trying to stat /var/log/journal/%m
chattr: Operation not supported while setting flags on /var/log/journal/remote
[ !! ]
ERROR: opentmpfiles-setup failed to start

/usr/lib/tmpfiles.d/journal-nocow.conf で btrfs ファイルシステム上にジャーナルがある場合にしか使えないオプションが有効になっていることが原因です。詳しくは https://github.com/OpenRC/opentmpfiles/issues/2 を参照してください。

空の /etc/tmpfiles.d/journal-nocow.conf ファイルを作成することで設定を上書きできます。

systemd に戻す

大抵の場合 systemd に戻すのは簡単です。OpenRC から systemd に移行する際は、以下の点に注意してください:

  • カーネルコマンドラインの init= パラメータの編集。
  • OpenRC 向けに改造された、systemd を使用しないパッケージを標準のパッケージに置き換え (例: dbus-nosystemdAURdbus に置換)

参照