Ubuntu Linux 10.04 Lucid LynxとAsus M2A-VMでlm-sensorsを利用する。

以前Ubuntu Linux 9.10でAsus M2A-VM (AMD 690G + SB600) を利用した際に、CPUやマザーボードの温度・ファン速度・電圧などを表示するlm-sensorsがバグのため動作しなかった。

理由はACPIのI/Oマップがセンサー読み取りI/Oマップと衝突してしまうという問題だが、回避策としてカーネルパラメータに、

acpi_enforce_resources=lax

という文字列をgrub経由でカーネルに渡してやる必要があった。ただしデスクトップ利用の場合はファイルコピー等I/O処理に負荷をかけるとマウスやキーボード、画面表示のレスポンスがかくついて悪くなる副作用が出た。

Ubuntu Linux 10.04 Lucid Lynxではカーネルバージョンとlm-sensorsのバージョンも上がりバグは修正されているとのことなので早速試した。

カーネルは2.6.32-23-preenmpt、lm-sensorsは3.1.2 (2010-02-02)を使用した。

ここからは非常に長いので飛ばして最後のみ読んでもらっても良い。

(さらに…)

Ubuntu Linux 10.04 Lucid Lynx AMD 690G Radeonグラフィクスでカーネルモードドライバを有効化する

Ubuntu Linux 9.10から10.04にバージョンアップした際に自動的にAMD 690G Radeonのカーネルモードドライバが有効にされたが、起動時にフリーズするため無効化していた。

今回カーネルとxorg-edgerドライバのバージョンアップを行なった上でRadeonカーネルモードドライバが動作するか検証した。なおすべてオープンソースドライバで確認したため、プロプライエタリのfglrxドライバは不明である。

カーネルバージョンは2.6.32-23-preempt、xorg-edgerのRadeonドライバは6.13.99+git20100709.06691376-0を利用。マザーボードはいつもの通りAsus M2A-VM。

まずは2箇所設定ファイルを修正する。

$ sudo vi /etc/default/grub

にてテキストエディタでファイルを開き、下記の行の「nomodeset」を削除した。

GRUB_CMDLINE_LINUX_DEFAULT=”splash nomodeset”

修正後にgrubのアップデートを行う。

$ sudo update-grub

次にRadeonドライバの設定。

$ sudo vi /etc/modprobe.d/radeon-kms.conf

にて下記の行を「0」→「1」と書き換えてカーネルモードドライバを有効化する。

options radeon modeset=1

そして再起動する。

再起動時にgrubの表示後VGA 640×480 60Hzのコンソールでブートプロセスログが表示されたあと画面がちらついてUbuntuロゴが1280×1024@75Hzの解像度で表示された。ちゃんと液晶モニタのDDC(Display Data Channel)経由でEDID(Extended Display Identification Data)を読み出し解像度とリフレッシュレートを設定したようだ。

gdmを表示する際に一瞬画面がちらついたが正常に表示され、ログイン後もCompiz-fusionが利用出来た。

正常に動作すると見てよいだろう。

ただ何かの表示で画面全体がちらつくことがごくまれにあった。いつもどおりsyslogを確認すると下記のログが出力されていた。

Jul 12 16:15:48 server kernel: [12440.607917] [drm:edid_is_valid] *ERROR* Raw EDID:
Jul 12 16:15:48 server kernel: [12440.607923] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607925] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607927] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607929] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607931] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607933] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607935] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607936] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
Jul 12 16:15:48 server kernel: [12440.607938]
Jul 12 16:15:48 server kernel: [12440.607941] radeon 0000:01:05.0: HDMI Type A-1: EDID invalid.
Jul 12 16:15:48 server kernel: [12440.607947] [drm:radeon_dvi_detect] *ERROR* HDMI Type A-1: probed a monitor but no|invalid EDID

ログを読むと、「radeonのHDMI Type A-1のEDIDが不正だよ。drm Radeon DVI端子検出時にモニタを確認したところEDIDが無いか不正確だよ。」と書かれている。

現在液晶モニタはVGA D-sub15ピン接続でDVI端子には何も接続していないのでエラー内容の通りである。なので無視しても問題ない。

Ubuntu Linux 10.04 + ASUS M2A-VMマシンが暑さでメモリが熱暴走

ここ最近Ubuntu Linuxマシンが突然フリーズする現象に襲われていた。規則性などは特になく突然である。

syslogを読んでもフリーズ前のログに不審な点はなかった。ただ一度だけフリーズする前にPCI Expressに接続しているデバイス全てでタイムアウトエラーを記録していた。

そこでLinuxカーネルのバージョンを2.6.31-21から2.6.32-23や2.6.35-rc2などいろいろ試したがフリーズ現象は変わらず。CPUかチップセットの熱暴走を疑ってPhenom X4 9750やAMD 690G、SB600に風が行き渡るようPCファンを設置したが現象は変わらず。

最後にDDR2-800MHz 2GB×2、1GB×2のメモリにファンで冷却するとフリーズ現象はピタリと止まった。

暑さでコンピュータが不安定な場合CPUやチップセット、増設ボードのみでなくメモリ冷却も気をつけてみるといいかも。

なおJetway MA3-79GDG COMBO/D + PhenomII X4 955BE@3.7GHz 1.4750v + Radeon HD4850 マシンはGPUボードの排熱がCreative Audigyに伝わり再起動がかかったw

ケース側面のカバーを外すと安定動作。本当に趣味のPCいじりは熱との戦いだ。

Ubuntu Linux 10.04 Lucid Lynxのカーネルでタイムアウトでハングアップしたとログが表示される

Ubuntu Linux 10.04 Lucid Lynxのsyslogに大量にカーネルログが吐き出されていた。

以下の通り。

Jul  9 14:06:07 server kernel: [13200.403026] INFO: task jbd2/dm-0-8:1311 blocked for more than 120 seconds.
Jul  9 14:06:07 server kernel: [13200.403032] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
Jul  9 14:06:07 server kernel: [13200.403036] jbd2/dm-2-8   D ffff8800805a9880     0  1311      2 0x00000000
Jul  9 14:06:07 server kernel: [13200.403042]  ffff880186b65d30 0000000000000046 ffff88005d173430 ffff880188f64f50
Jul  9 14:06:07 server kernel: [13200.403048]  ffff880186b64000 ffff880186b65fd8 0000000000015bc0 ffff880186b65fd8
Jul  9 14:06:07 server kernel: [13200.403054]  ffff880196c15bc0 ffff880196c15f80 ffff880186b65fd8 0000000000015bc0
Jul  9 14:06:07 server kernel: [13200.403059] Call Trace:
Jul  9 14:06:07 server kernel: [13200.403071]  [<ffffffff8122aa75>] jbd2_journal_commit_transaction+0x1c5/0x12c0
Jul  9 14:06:07 server kernel: [13200.403078]  [<ffffffff815696e9>] ? sub_preempt_count+0x9/0xa0
Jul  9 14:06:07 server kernel: [13200.403082]  [<ffffffff81566561>] ? _spin_unlock_irq+0x21/0x50
Jul  9 14:06:07 server kernel: [13200.403088]  [<ffffffff810580a0>] ? finish_task_switch+0x50/0xd0
Jul  9 14:06:07 server kernel: [13200.403092]  [<ffffffff815696e9>] ? sub_preempt_count+0x9/0xa0
Jul  9 14:06:07 server kernel: [13200.403095]  [<ffffffff8156651c>] ? _spin_unlock_irqrestore+0x2c/0x50
Jul  9 14:06:07 server kernel: [13200.403100]  [<ffffffff81089190>] ? autoremove_wake_function+0x0/0x40
Jul  9 14:06:07 server kernel: [13200.403106]  [<ffffffff81232747>] kjournald2+0xb7/0x210
Jul  9 14:06:07 server kernel: [13200.403110]  [<ffffffff81089190>] ? autoremove_wake_function+0x0/0x40
Jul  9 14:06:07 server kernel: [13200.403114]  [<ffffffff81232690>] ? kjournald2+0x0/0x210
Jul  9 14:06:07 server kernel: [13200.403118]  [<ffffffff81088da6>] kthread+0x96/0xa0
Jul  9 14:06:07 server kernel: [13200.403123]  [<ffffffff810142da>] child_rip+0xa/0x20
Jul  9 14:06:07 server kernel: [13200.403128]  [<ffffffff81088d10>] ? kthread+0x0/0xa0
Jul  9 14:06:07 server kernel: [13200.403132]  [<ffffffff810142d0>] ? child_rip+0x0/0x20

要はRAIDブロックデバイスが120秒間返答なしでタイムアウトでハングしたということらしい。

ハードディスクを確認したところ故障の兆候はなく、単純にファイルコピーの容量が大きくて時間がかかっているときに吐き出されているようだ。そこで下記のURLを参考にsyslog表示を止めた。

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=517586

方法はsyslog中にも出力されているが、下記の通り。

$ sudo -s

$ echo 0 > /proc/sys/kernel/hung_task_timeout_sec

これでsyslogにカーネルのタイムアウトハングアップのメッセージは表示されなくなる。