「OpenRC」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「Tips and tricks」を「ヒントとテクニック」に置換) |
(関連記事を同期) |
||
(5人の利用者による、間の14版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:Init]] |
[[en:OpenRC]] |
[[en:OpenRC]] |
||
+ | [[pt:OpenRC]] |
||
[[ru:OpenRC]] |
[[ru:OpenRC]] |
||
+ | [[tr:OpenRC]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related|eudev}} |
||
{{Related|init}} |
{{Related|init}} |
||
− | {{Related|init 比較表}} |
||
− | {{Related|SysVinit}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
{{Warning|デフォルトでは Arch は [[systemd]] を使用しています。OpenRC を使う場合、助けを求める時はそのことを明記して下さい。}} |
{{Warning|デフォルトでは Arch は [[systemd]] を使用しています。OpenRC を使う場合、助けを求める時はそのことを明記して下さい。}} |
||
14行目: | 13行目: | ||
== インストール == |
== インストール == |
||
− | OpenRC は [[AUR]] から利用可能です。{{AUR|openrc}} または {{AUR|openrc-git}} パッケージを選んでインストールでき |
+ | 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]] に切り替えることが可能です。 |
||
+ | 基本的なサービスファイルは {{AUR|openrc-arch-services-git}} パッケージでインストールできます。他にもサービスファイルが含まれたパッケージが存在します。AUR を検索してください。 |
||
− | == 設定 == |
||
+ | {{AUR|initscripts-fork}} との互換性を保つために、設定ファイルは {{ic|/etc/openrc/}} にインストールされます。 |
||
− | OpenRC を使って起動するには {{Ic|1=init=/usr/bin/init-openrc}} を使用しているブートローダーの設定のカーネル行に追加してください。systemd に戻したい場合は、設定したところを {{ic|1=init=/usr/lib/systemd/systemd}} に変えて下さい。 |
||
+ | |||
+ | === ブート === |
||
+ | |||
+ | 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 の設定に関する詳細な資料は、[http://www.calculate-linux.org/main/en/openrc_manuals man ページ] を見たり、[http://wiki.gentoo.org/wiki/OpenRC gentoo wiki] を参照してください。 |
||
+ | 設定に関する詳細な資料は以下を参照してください: |
||
− | udev サービスはデフォルトでは有効になっていないので注意してください。有効にするには、次を実行してください: |
||
+ | * [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#設定]]を参照。 |
||
− | # rc-update add udev sysinit |
||
=== サービス === |
=== サービス === |
||
61行目: | 74行目: | ||
|} |
|} |
||
+ | {{Warning|カーネルパラメータで {{ic|1=init=/usr/bin/openrc-init}} を使用する場合は、[[getty]] サービスを手動で有効にする必要があります。そうしないと、[https://github.com/OpenRC/openrc/blob/master/agetty-guide.md ドキュメント]で説明されているように対話型 TTY が残されなくなります。}} |
||
− | [https://wiki.gentoo.org/wiki/Systemd#Native_services Native services] や[[デーモン]]も参照してください。 |
||
+ | 必要に応じて、{{ic|/etc/openrc/init.d/getty}} へのシンボリックリンクを作成して、必要な [[getty]] ごとにサービスを作成します。例: {{ic|/dev/tty1}}: |
||
+ | |||
+ | # ln -s /etc/openrc/init.d/agetty{,.tty1} |
||
+ | # rc-update add agetty.tty1 default |
||
+ | |||
+ | PAM が tty にログインした後に systemd に登録しようとするのを防ぐため ([https://bbs.archlinux.org/viewtopic.php?id=285505 が問題を引き起こす可能性があります])、{{ic|/etc/pam.d/system-auth}} 内の systemd に言及する行を削除するかコメントアウトすると安全です。 |
||
+ | |||
+ | [[Gentoo:Systemd#Native services]] も参照してください。 |
||
=== ネットワーク === |
=== ネットワーク === |
||
74行目: | 95行目: | ||
ifup_eth0="ip link set \$int mtu 1500"</nowiki>}} |
ifup_eth0="ip link set \$int mtu 1500"</nowiki>}} |
||
− | + | ネットワーク サービスはデフォルトでブートランレベルに追加されるため、それ以上の操作は必要ありません。一般的な、ネットワークの設定の詳細においては[[ネットワーク設定]]を見て下さい。 |
|
− | |||
− | また、[[NetworkManager]] や [[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 の機能 ]を参照してください。}} |
||
− | === ログ === |
||
− | === |
+ | === ブートログ === |
− | syslog-ng を使う場合、{{ic|/etc/syslog-ng/syslog-ng.conf}} 内の次の行をコメントアウトしてください: |
||
− | {{bc|unix-dgram("/run/systemd/journal/syslog")}} |
||
− | そして、代わりに次の行を追加してください: {{bc|unix-dgram("/dev/log");}} |
||
− | {{Note|この変更を行わないと syslog-ng が起動しないため何もログが残りません。}} |
||
+ | ブートログを有効にするには、{{ic|/etc/openrc/rc.conf}} の {{ic|1=rc_logger="YES"}} 行のコメントを解除します。有効にすると、ブートログは {{ic|/var/log/rc.log}} に保存されます。 |
||
− | ====起動時のログ==== |
||
− | OpenRC の起動時のログはデフォルトで無効になっています。有効にするには、{{ic|/etc/openrc/rc.conf}} 内の次の行をアンコメントしてください: |
||
− | {{bc|<nowiki>#rc_logger="YES"</nowiki>}} |
||
=== ホストネーム === |
=== ホストネーム === |
||
111行目: | 122行目: | ||
ロケールの設定に関する詳細は、[[ロケール]]を参照してください。 |
ロケールの設定に関する詳細は、[[ロケール]]を参照してください。 |
||
+ | |||
+ | == 使用方法 == |
||
+ | |||
+ | このセクションでは、[[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}} || || 設定を作成または変更します |
||
+ | |} |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
151行目: | 184行目: | ||
=== /etc/sysctl.conf not found === |
=== /etc/sysctl.conf not found === |
||
− | デフォルトで、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. |
+ | デフォルトで、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/]。 |
ファイルが見つからないというエラーを表示させたくない場合、ファイルを作成してください: |
ファイルが見つからないというエラーを表示させたくない場合、ファイルを作成してください: |
||
# touch /etc/sysctl.conf |
# touch /etc/sysctl.conf |
||
− | |||
− | === root 以外のユーザーで X サーバーが起動しない === |
||
− | |||
− | Xorg のバージョン 1.16 から、X は systemd-login を使用して rootless で起動するようになっています。init システムとして OpenRC を使っている場合は {{ic|startx}} が機能しなくなります。 |
||
− | |||
− | 以下の内容で {{ic|/etc/X11/Xwrapper.config}} ファイルを作成することでこの問題は解決します: |
||
− | |||
− | # Xorg.wraper configuration file |
||
− | needs_root_rights = yes |
||
=== opentmpfiles-setup failed to start === |
=== opentmpfiles-setup failed to start === |
||
181行目: | 205行目: | ||
空の {{ic|/etc/tmpfiles.d/journal-nocow.conf}} ファイルを作成することで設定を上書きできます。 |
空の {{ic|/etc/tmpfiles.d/journal-nocow.conf}} ファイルを作成することで設定を上書きできます。 |
||
+ | == systemd に戻す == |
||
− | == OpenRC でデスクトップ環境を使う == |
||
+ | 大抵の場合 systemd に戻すのは簡単です。OpenRC から systemd に移行する際は、以下の点に注意してください: |
||
− | ''OpenRC'' で[[デスクトップ環境]]を使う場合、ConsoleKit が役に立ちます。[https://gist.github.com/ad73f9087f39d7cadd8e サービス] を {{ic|/etc/openrc/init.d}} にインストールして、有効化してください: |
||
+ | * カーネルコマンドラインの {{ic|1=init=}} パラメータの編集。 |
||
− | # rc-update add consolekit default |
||
+ | * OpenRC 向けに改造された、systemd を使用しないパッケージを標準のパッケージに置き換え (例: {{AUR|dbus-nosystemd}} を {{pkg|dbus}} に置換) |
||
− | |||
− | 詳しくは [[ConsoleKit]] を参照。 |
||
− | |||
− | OpenRC 0.28 から SysVinit は openrc-init に置き換えられ、shutdown は openrc-shutdown に置き換えられています。consolekit を使用している場合、デスクトップセッションからシャットダウンした際にシステムがフリーズする可能性があります。{{AUR|elogind-openrc}} を代わりに使うようにしてください。以下のコマンドで有効化できます: |
||
− | |||
− | # rc-update add elogind default |
||
− | |||
− | また、polkit-consolekit は {{AUR|polkit-elogind}} に置き換える必要があります。置き換えないと USB デバイスをマウントした際にシステムから "not authorized to perform operation" という警告が表示され、デスクトップセッションから再起動やシャットダウンができなくなります。 |
||
− | |||
− | == systemd との比較 == |
||
− | |||
− | {| class="wikitable" |
||
− | ! systemd !! OpenRC !! 説明 |
||
− | |- |
||
− | | {{ic|systemctl list-units}} || {{ic|rc-status}} || 動作中のサービスの状態を表示 |
||
− | |- |
||
− | | {{ic|systemctl --failed}} || {{ic|rc-status --crashed}} || 失敗した、クラッシュしたユニット・サービスの確認 |
||
− | |- |
||
− | | {{ic|systemctl --all}} || {{ic|rc-update -v show}} || 利用できるユニット・サービスを全て表示 |
||
− | |- |
||
− | | {{ic|systemctl {start,stop,restart,status} xyz}} || {{ic|/etc/openrc/init.d/xyz {start,stop,restart,status} }} || ユニット・サービスをすぐに起動・停止・再起動・状態を表示 |
||
− | |- |
||
− | | {{ic|systemctl {enable,disable} xyz}} || {{ic|rc-update {add,del} xyz}} || サービス・ユニットを追加もしくは削除 |
||
− | |} |
||
+ | == 参照 == |
||
− | この表は [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] |
* [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時点における最新版
関連記事
OpenRC は Gentoo の開発者によってメンテナンスされている init システムです。OpenRC は依存関係を前提とした init システムで、sysvinit などの init プログラムが動いているシステムで動作します。OpenRC は sysvinit を置き換えるものではありません。
インストール
OpenRC は AUR から利用可能です。openrcAUR または openrc-gitAUR パッケージを選んでインストールできます。
バージョン 0.25 から、OpenRC には独自の init が付属しており /usr/bin/openrc-init
にインストールされます。任意で busybox や openrc-sysvinitAUR (伝統的な sysvinit に多少のパッチがあてられたバージョン) など他の init を使うこともできます。openrc-init
を使用する場合、他のパッケージの shutdown
や reboot
コマンドの代わりに 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
ファイルで行います。
設定に関する詳細な資料は以下を参照してください:
サービス
OpenRC のサービスは root で rc-update add service_name runlevel
を実行することで有効にできます。最低でも以下のサービスを有効化することが推奨されます:
サービス名 | ランレベル | 説明 |
---|---|---|
udev | sysinit | デバイスのホットプラグ |
alsa | default | ALSA の状態 |
acpid | default | ACPI イベント |
dbus | default | メッセージバス |
dcron | default | スケジュール |
syslog-ng | default | システムログ |
必要に応じて、/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"
ネットワーク サービスはデフォルトでブートランレベルに追加されるため、それ以上の操作は必要ありません。一般的な、ネットワークの設定の詳細においてはネットワーク設定を見て下さい。
ブートログ
ブートログを有効にするには、/etc/openrc/rc.conf
の rc_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"
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-nosystemdAUR を dbus に置換)