# OpenRC (日本語)

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

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

## インストール

OpenRC は AUR から利用可能です。openrc または openrc-git パッケージを選んでインストールできます。また、openrc-arch-services-git (arch で openrc を使うために必要なサービスファイルを提供します) と openrc-sysvinit (伝統的な sysvinit に多少のパッチがあてられたバージョン) もインストールする必要があります。initscripts と互換性を保つために、openrc-sysvinit は sysvinit の init バイナリを `/usr/bin/init-openrc` としてインストールします。

パッケージはデフォルトの位置である `/etc` ではなく `/etc/openrc` の元にインストールされるので、ユーザーは必要に応じて initscripts や systemd に切り替えることが可能です。

## 設定

OpenRC を使って起動するには `init=/usr/bin/init-openrc` を使用しているブートローダーの設定のカーネル行に追加してください。systemd に戻したい場合は、設定したところを `init=/usr/lib/systemd/systemd` に変えて下さい。

OpenRC の設定に関する詳細な資料は、man ページ を見たり、gentoo guide や gentoo wiki を参照してください。

udev サービスはデフォルトでは有効になっていないので注意してください。有効にするには、次を実行してください:

    # rc-update add udev sysinit

### ネットワーク

ネットワークを立ち上げて動かす方法は複数存在します。一つは `/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"

network サービスはデフォルトで起動時のランレベルに追加されるため、これ以外の設定は必要ありません。

また、NetworkManager や dhcpcd、さらに netcfg などを使うことも可能です。それぞれのサービスを有効にしてください。

一般的な、ネットワークの設定の詳細においては Network Configuration (日本語) を見て下さい。

### ログ

#### syslog-ng

syslog-ng を使う場合、`/etc/syslog-ng/syslog-ng.conf` 内の次の行をコメントアウトしてください:

    unix-dgram("/run/systemd/journal/syslog")

そして、代わりに次の行を追加してください:

    unix-dgram("/dev/log");

Note: この変更を行わないと syslog-ng が起動しないため何もログが残りません。

#### 起動時のログ

OpenRC の起動時のログはデフォルトで無効になっています。有効にするには、`/etc/openrc/rc.conf` 内の次の行をアンコメントしてください:

    #rc_logger="YES"

### ホストネーム

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` で読み込まれます。

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

## トラブルシューティング

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

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

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

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

    no_umounts="/tmp"

Note: この問題は 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

## systemd との比較

systemd | OpenRC | 説明
--- | --- | ---
`systemctl list-units` | `rc-status` | 動作中のサービスの状態を表示
`systemctl --failed` | `rc-status --crashed` | 失敗した、クラッシュしたユニット・サービスの確認
`systemctl --all` | `rc-update -v show` | 利用できるユニット・サービスを全て表示
`systemctl {start,stop,restart,status} xyz` | `/etc/openrc/init.d/xyz {start,stop,restart,status}` | ユニット・サービスをすぐに起動・停止・再起動・状態を表示
`systemctl {enable,disable} xyz` | `rc-update {add,del} xyz` | サービス・ユニットを追加もしくは削除

この表は この投稿 からの引用です。

## 外部リンク

- Wikipedia:OpenRC
- Arch 上の OpenRC に関するフォーラムスレッド

Category:

- Boot process (日本語)