2009年11月30日月曜日

Hyper-V上のCentOSで再構築したカーネルがパニックで止まる

Hyper-V上のLinux(CentOS5.4)をいじり始めているのだが、時計がいちいち早いのが多少なりとも気に食わない。
ということで、有効そうな手段の一つである、カーネルのタイマー割りこみタイミングを1000HZ⇒100HZにしたいと思って再構築をすることにした。
前回の clock=pit だけではまだちょっと早いからね。
 
 


適当に見つくろったこちらの情報を参考に、カーネルを再構築。
>> CentOSのカーネル再構築 - adsaria mood
 

menuconfigのところで割り込みを100HZに変更して新しいカーネルとinitrdで起動してみた。
 

しかし・・・
 
[caption id="attachment_1598" align="alignnone" width="648" caption="画像:カーネルパニック"]画像:カーネルパニック[/caption]
 

カネパ(カーネルパニック)だと?
つーかHDD見えてないやん...これはinitrdの中身がまずいんだよなあ。
手順たらないとかかな?
 
 

原因探しはもうちょっと先でやろう、時刻ずれの応急処置としてはやっぱりntpdateだよな。
 
 
 

仕方なくホストOSのWindowsServer2008をNTPサーバに仕立て上げて5分おきにntpdateする。
これやりたくないんだけどなあ、5分おきのntpdate。。
 

WindowsServer2008 のNTPサーバ化は簡単、レジストリを少々いじる。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\AnnounceFlags
5 に
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer\Enabled
1 に


こんだけ、レジストリを書き換えた後、w32timeを再起動すればOK。
 

少し注意なのは、Hyper-Vではゲストを立ち上げるとそこから見たローカルタイムはWindowsの時間になる。
⇒Windowsが日本時間(UTC+9)で動いてたら、ゲストの基準はそこになる。
ゲストは『UTC+9=UTC』と見てしまう。
という解釈なのかな?とにかくゲストのタイムゾーンを+9にしようもんなら、システムのタイムゾーンは外から見てUTC+18という時間になっちゃう。
 
 


それはいいんだけど、今度はntpdateで問い合わせたら、Windowsは普通にUTCを返す
 

ゲストの時間をUTCにしておく⇒ntpdateで問い合わせたら9時間ずれる。
ゲストの時間をUTC+9にしておく⇒ntpdateで問い合わせる前の時間が9時間ずれている。
 

というなかなか悲しい事態になる、なんじゃいこれは。。
どこに改善要望だしたらいいのか。。『ゲストのhwclockをUTCにしてください?』
ここに書いても拾えないだろうから何処かで受けてほしいなあ。。
 
 

で、結局後者で動かし中。
ntpdateは5分おきなので、起動の瞬間から5分程度だけUTC+18で動いてしまう。
 

ぐぬぬぬぬ。。。
 
 

そのうちカーネルのタイミングを100HZにして、ntpdを動かしたいなあ。
 



カーネルパニックの回避方が判った。
http://sawano.members.icraft.jp/wp/2010/02/07/1666.html
grub.confを編集してね。