ユーザ用ツール

サイト用ツール


linux:linux-etc

文書の過去の版を表示しています。


Linuxメモ

Linux関係で調べたりしたメモ。調べた当時の情報なので、改善されたり変更されたりしている可能性あり。

Portageの設定ファイル上書き管理

GentooのPortageでは、同じパッケージをインストールしても設定ファイルなどユーザが手を加えたファイルを保護するようになっている。保護対象となるのは基本的に設定ファイルで、環境変数CONFIG_PROTECTで定義される。この変数に含まれている場所であれば、上書きされるかどうか判断される。

パッケージがインストールされる時、ファイルがCONFIG_PROTECTのパスに含まれていれば、/var/lib/portage/configにそのファイルのmd5sumが記録される。つまり、パッケージで提供される初期ファイルのハッシュが記録される。

次に、何らかの理由で同じパッケージを再度インストールする場合、既に/var/lib/portage/configにそのファイルのハッシュが記録されているので、インストールしようとするファイルのmd5sumと記録されているハッシュを比較する。この場合、基本的には初期ファイルは同じ内容なので、ハッシュが一致するため既存のファイルを残し、新たなファイルは破棄される(何もしない:._cfg0000ファイルを造らない)。基本的に、というのはインストール時にファイルに乱数や時刻を取り込むようなものは、毎回ハッシュ値が変わるのでその都度._cfg0000ファイルが作成されるため、設定ファイルを上書きするかどうか判断しなければならない(dispach-confなど)。パッケージのバージョンが変わる場合には、保護されているファイルの初期内容が変更されることが多いため、更新処理を行わなければならないが、ファイルに変更が無い場合はそのまま既存のファイルが利用される。

整理すると、再インストールにしてもアップデートにしても、CONFIG_PROTECTで保護されているファイルは、パッケージをインストールする際の生のファイルが依然と変化したファイルについてのみ、既存のファイルが存在すれば、新ファイルを._cfg0000ファイルに一時待避させてユーザに判断を促す。

KDMのキーボードレイアウト

KDEのグラフィカルログインマネージャのキーボードレイアウトは、KDEの設定と連動しない。コンソールの設置もxorg.confの設置もうまく反映されないので、あまりスマートではないがKDMの起動スクリプトで無理矢理設定する。

/usr/share/config/kdm/Xsetup

setxkbmap -rules evdev -model jp106 -layout jp

setxkbmapコマンドでjp106レイアウトに変える。Gentooの場合、/usr/share/config/kdmはアップデート時に上書きされるので、アップデートするたびに確認する必要がある。CONFIG_PROTECTなどで保護するとよい。

kernel埋め込みのrootデバイス

一般的にはブートローダの「root=/dev/sda2」などとして指定するが、カーネルそのものにコンパイル時にパラメータが埋め込まれている。

この値を確認するためのコマンドがrdev。

rdev

ただし、Gentooのamd64ではutil-linuxパッケージから削除されたみたい。

ext4ファイルシステムドライバ

ext4ファイルシステムドライバでext2/ext3をマウントできるように設定し、ext2/ext3ファイルシステムドライバを組み込まないと、rootファイルシステムのマウント時にext4ファイルシステムがうまくext4として認識されない場合がある1)

カーネルの起動オプションに「rootfstype=ext4」パラメータを指定するとうまくファイルシステムタイプを認識する。

 kernel /kernel-2.6.37-gentoo-r4 root=/dev/sda2 rootfstype=ext4

OpenRC移行メモ

OpenRCにアップデートした場合のファイルシステムマウント

baselayout2およびOpenRCにアップデートすると、ファイルシステムのマウント状況がおかしいように見える。表面的な問題らしい。

具体的には、「/」に二重にマウントされているように見える。

rootfs on / type rootfs (rw)
/dev/root on / type ext4 (rw,commit=0)

rootファイルシステムは、起動時に仮にマウントされfstabを読み込んでもう一度マウントし直す。その際、/proc/mounts、/etc/mtabにはマウントされた情報が記録される。この処理にバグ?があるようで、mountコマンドなどでマウント状況を表示した際に2重にマウントされているように見えるようだ。

OpenRCでは高速にシャットダウンする場合などに必要なものらしい。

/etc/conf.d/net

設定を書く際に「=」の前後にスペースなどを入れない。「コマンドが見つからない」とエラーになる。

config_eth0="192.168.0.1/24"

/etc/rc.conf

起動時に警告が出るので以下の設定をコメントアウトを外し、値は空にしておく。

sys_init=""

シンボリックリンク関連

リンクが壊れたシンボリックリンクを検索、削除するツール

app-misc/symlinks

並列起動

OpenRCでは各種起動スクリプトを並列実行できるようだ。

rc_parallel="YES"

を設定すると依存関係に問題ないサービスが並列起動する。起動がかなり高速になるが推奨はされないようだ。

alsaサウンドシステムの音量設定の保存

alsaの音量設定は、デフォルトでミュート状態となる。起動時に一定の音量にする場合は、以下の設定をおこなう。

音量の設定

alsamixer

適当な音量に設定する。その後、設定を保存する。

alsactl store

保存すると、/etc/asound.stateに設定が書き込まれる。

起動時に設定を復元するように、alsasoundサービスが起動するようにする。

rc-update add alsasound default

カーネルモジュール(ドライバ)のパラメータ設定

カーネルモジュールにパラメータを渡す方法。

それぞれのモジュールは、module_param()関数でパラメータを受け取って内部動作を制御できるようになっている。 この関数にパラメータを渡したい場合、動的モジュールになっていればmodprobeでロードする際に、オプションをつけてやれば良い。起動時に設定するなら、/etc/modprobe.d/等で設定しておく。

カーネルに静的に組み込んでいる場合は、起動時にカーネルのコマンドラインオプションで渡してやる。

モジュールの情報は、

/sys/module/MODULE名/parameters/PARAM名

にあるので、ここでecho等で値を書き換えてもよいが、起動時にしか設定できないものもある。その場合は、ブートローダでカーネルにパラメータを渡せばよい。その場合は、/boot/grub/grub.confのkernel行に

MODULE名.PARAM名=VALUE

という形式でカーネルに引数を与えてやる。

1)
下位互換性の関係で間違うのか?
linux/linux-etc.1371060433.txt.bz2 · 最終更新: 2013/06/13 03:07 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki