OS の起動時に speedstep-smi をロードして cpufreq が有効になるように設定を行う。
チップセットが 440BX + PIIx4M の場合に SpeedStep を有効化するモジュールは speedstep-smi.o である。このモジュールは Vine Linux 3.2 から導入され,カーネルの再構築を行うことで有効化することができるようになった (nlog(n): カーネルの再構築でスピードステップに対応)。その際,speedstep-smi モジュールの動作確認を行ったが,OS を再起動したときのことを考えていなかった。以下では OS を再起動したときにモジュールをロードするように設定を行う。
環境は Vine Linux 3.2 (kernel-2.4.31) で,自分で再構築したカーネルを使っている (nlog(n): カーネルの再構築でスピードステップに対応)。
まずは事前調査を行う。speedstep-smi モジュールの情報を表示する。ここでは,モジュールがインストールされているディレクトリをチェックする。
次に,OS の起動時にどこでモジュールをロードするかを考える。cpufreqd の起動スクリプト /etc/init.d/cpufreqd を見たが,書けそうなところがない。モジュールのロードは1回だけでいいので,起動スクリプト内にはない方がいいのだろう。その他に探してみると,/etc/rc.sysinit に次の記述を見つけた。
/etc/rc.modules ファイルが存在したら,そのファイルを実行するようになっている。Vine Linux 3.2 のデフォルトの状態では,このファイルは存在しない。しかもコメント部分に「下位互換のため」とか書いてあるのが微妙。近いうちに rc.sysinit からなくなる運命なのかも知れない。しかし,他に適当な場所がないので,このファイルを新しく作ることにした。方針としては,rc.sysinit と同様に,実体を /etc/rc.d/rc.modules に作り,/etc/rc.modules からシンボリックリンクを張ることにする。
準備ができたので,実際の作業に移る。
/etc/rc.d/rc.modules を新規に作成し,次の内容を記述する。
カーネルの更新をしてモジュールのインストールディレクトリが変わった場合でもスクリプトを変更しなくてもいいように,カーネルのリリース番号を `uname -r` で取得している。このスクリプトには実行許可を与えておく。
このスクリプトに /etc からシンボリックリンクを張る。実際に rc.sysinit から呼び出されるのは,このシンボリックリンクになる。
再起動する前に動作確認をしておく。モジュールの組み込み確認は lsmod でできる (cat /proc/modules でも同じ)。
最後に OS をリブートして最終確認をすれば完了である。
speedstep-smi をロードするには,上記の他に,CPUSpeed パッケージを導入するという方法もあるようだ。
2006年1月22日追記:
kernel-2.4.31-0vl1.12 では,speedstep-smi.o をモジュールではなく,ビルトインして再構築するようにしました(nlog(n): speedstep-smi をビルトインしてカーネルを再構築)。ビルトインすれば,OS 起動時にモジュールをロードする必要がなくなります。
Master Archive Index
Total Entry Count: 1957