印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux speedstep-smi を OS 起動時にロードする

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 モジュールの情報を表示する。ここでは,モジュールがインストールされているディレクトリをチェックする。

# modinfo speedstep-smi
filename:    /lib/modules/2.4.31-0vl1.8.1/kernel/arch/i386/kernel/speedstep-smi.o
description: "Speedstep driver for IST applet SMI interface."
author:      "Hiroshi Miura"
license:     "GPL"
parm:        smi_port int, description "Override the BIOS-given IST port with this value -- Intel's default setting is 0xb2"
parm:        smi_cmd int, description "Override the BIOS-given IST command with this value -- Intel's default setting is 0x82"
parm:        smi_sig int, description "Set to 1 to fake the IST signature when using the SMI interface."

次に,OS の起動時にどこでモジュールをロードするかを考える。cpufreqd の起動スクリプト /etc/init.d/cpufreqd を見たが,書けそうなところがない。モジュールのロードは1回だけでいいので,起動スクリプト内にはない方がいいのだろう。その他に探してみると,/etc/rc.sysinit に次の記述を見つけた。

# Load modules (for backward compatibility with VARs)
if [ -f /etc/rc.modules ]; then
        /etc/rc.modules
fi

/etc/rc.modules ファイルが存在したら,そのファイルを実行するようになっている。Vine Linux 3.2 のデフォルトの状態では,このファイルは存在しない。しかもコメント部分に「下位互換のため」とか書いてあるのが微妙。近いうちに rc.sysinit からなくなる運命なのかも知れない。しかし,他に適当な場所がないので,このファイルを新しく作ることにした。方針としては,rc.sysinit と同様に,実体を /etc/rc.d/rc.modules に作り,/etc/rc.modules からシンボリックリンクを張ることにする。

準備ができたので,実際の作業に移る。

/etc/rc.d/rc.modules を新規に作成し,次の内容を記述する。

# SpeedStep SMI support
if [ -f /lib/modules/`uname -r`/kernel/arch/i386/kernel/speedstep-smi.o ]; then
  /sbin/modprobe speedstep-smi
fi

カーネルの更新をしてモジュールのインストールディレクトリが変わった場合でもスクリプトを変更しなくてもいいように,カーネルのリリース番号を `uname -r` で取得している。このスクリプトには実行許可を与えておく。

# chmod 755 /etc/rc.d/rc.modules

このスクリプトに /etc からシンボリックリンクを張る。実際に rc.sysinit から呼び出されるのは,このシンボリックリンクになる。

# cd /etc
# ln -s rc.d/rc.modules rc.modules

再起動する前に動作確認をしておく。モジュールの組み込み確認は lsmod でできる (cat /proc/modules でも同じ)。

# /etc/rc.modules
# lsmod
Module                  Size  Used by    Tainted: P
speedstep-smi           3056   0  (unused)
speedstep-lib           2196   0  [speedstep-smi]
...
# cat /proc/cpufreq
          minimum CPU frequency  -  maximum CPU frequency  -  policy
CPU  0       700000 kHz ( 70 %)  -    1000000 kHz (100 %)  -  powersave

最後に OS をリブートして最終確認をすれば完了である。

speedstep-smi をロードするには,上記の他に,CPUSpeed パッケージを導入するという方法もあるようだ。

2006年1月22日追記:
kernel-2.4.31-0vl1.12 では,speedstep-smi.o をモジュールではなく,ビルトインして再構築するようにしました(nlog(n): speedstep-smi をビルトインしてカーネルを再構築)。ビルトインすれば,OS 起動時にモジュールをロードする必要がなくなります。

Posted by n at 2005-11-08 01:22 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?