openrcに移行してみる

現在、Gentoo Linuxでは起動時にディレクトリ構造を定義するためのbaselayoutというスクリプトが動作します。initはsysvinitというパッケージです。

スペック

  • openrc-0.4.3-r3
  • basylayout-2.0.1
  • sysvinit-2.86-r12

バックアップ

とりあえず、変更を必要とするファイルをバックアップ

$cd /etc
$sudo mkdir safe
$sudo cp -r conf.d ./safe/
$sudo cp -r rc.conf ./safe/
$sudo cp -r init.d ./safe/
$sudo cp -r modprobe.* ./safe/
$sudo cp -r modules.* ./safe/

keywordに登録

openrcとbaselayout、sysvinitをkeywordに登録します。バージョン制限をしているのは好みです。

$sudo sh -c "echo '<sys-apps/openrc-0.4.4' >> /etc/portage/package.keywords"
$sudo sh -c "echo '<sys-apps/baselayout-2.0.5
' >> /etc/portage/package.keywords"
$sudo sh -c "echo 'sys-apps/sysvinit' >> /etc/portage/package.keywords"

インストール

どうもbaselayoutかopenrcをkeywordsに登録するとシステムがopenrcをインストールしてくれるようになるので以下のようにします。

$sudo emerge -uND system 

設定ファイルの更新(dispatch-conf)

今までetc-updateだったものはdispatch-confというコマンドになりました。ここの作業は慎重によく変更点を見ながら適切に設定することをおすすめします。

$sudo dispatch-conf
基本的な流れ
  1. 差分が表示される
  2. 差分に対して対処を選択する。
    • u:新しいファイルを使用する
    • z:以前のファイルを使用する
    • e:新しいファイルを編集する
  3. 次の更新
主要な変更内容

私自身が変更を行ったもの。他にもあった気がするけど忘れたw

  • /etc/profile

標準のEDITOR設定はrc.confからこのファイルに変更となりました。また、PAGERもこのファイルで設定できます。

  • /etc/rc.conf

"rc_parallel"を"YES"に設定する。

  • /etc/conf.d/hostname

"hostname"再度設定する。

  • /etc/conf.d/keymaps

何かしら変更している場合は再度設定する必要があります。

設定ファイルの更新(手動部分)

手動で変更が必要なもの。

ネットワーク

ちょっとだけ文法が変更になっているので修正します。()が外れているだけですが。。

# cd /etc/init.d
# ln -s net.lo net.eth0
  • Code Listing : Old /etc/conf.d/net style
config_eth0=( "192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.100" )
  • Code Listing : New /etc/conf.d/net style
config_eth0="192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255"
routes_eth0="default via 192.168.1.100"

設定の確認

boot runlevel

基本的にはdispatch-confで登録されるけど漏れていると大変ので確かめます。
root, procfs, mtab, swap, fsck が表示されるかをチェックしてください。また、mdraidやlvmを使用している場合はこれら二つのチェックを忘れずに!

$ls -l /etc/runlevels/boot/

登録されていないものがあれば、下記のように登録します。

$sudo rc-update add [スクリプト名] boot
$sudo rc-update add mdraid boot
udev

openrcはudevの起動を標準では行わないのですが、sysvinitランレベルで起動しないといけません。なので、sysvinitランレベルで起動するようになっているか確認します。

$ls -l /etc/runlevels/sysvinit/

udevへのsymlinkが張られていればokです。
張られていない場合は下記のように対処します。

$sudo rc-update add udev sysvinit
clock

/etc/timezone
timezoneの設定します。"/usr/share/zoneinfo"を参考に設定します。基本的にはAsia/Tokyoを設定すると思います。

$sudo sh -c "echo 'Asia/Tokyo' > /etc/timezone"
カーネルモジュールの自動読み込み

参考先が正確です!