何気にUbuntu純正のlowlatencyカーネルをインストールし、そのconfigファイルとカスタムカーネルのconfigファイルを比較した所、CONFIG_DEBUG_PREEMPTが純正側にはセットされていなく、その設定の説明を調べたところこんなことが書いてあった。
If you say Y here then the kernel will use a debug variant of the commonly used smp_processor_id() function and will print warnings if kernel code uses it in a preemption-unsafe way. Also, the kernel will detect preemption count underflows.
なるほど。BUGメッセージが出まくる原因ってそういうことだったのか。解決。
とりあえず、意図的に変えた設定以外は純正カーネルの設定に合わせて再ビルドした。
意図的に変えた設定:
- ローカルバージョンを"-core2-lowlatency"にセット
- ビルドを最適化してサイズを削減するようコンパイラにセット
- Core 2/Xeon向けにビルド
- Centaur製CPUのサポート無効化
- IBM Calgary IOMMUのサポート無効化
- Dell Inspiron 8000シリーズのサポート無効化
- アマチュア無線のサポート無効化
- HD Audioのバッファを2048に増強(自分の環境では意味ないと思うが)
- ※タイマー周波数1000Hzは純正カーネルにもセットされていた
…が、いざ使ってみると突然フリーズするなどの怪奇現象*1が起きたりしたので一旦純正genericカーネルに戻して様子見中。カーネルコードがアカン*2のか、どっかのオプション*3がアカンのか、それとも…。
そういえばGRUBメニューが呼び出せてもなんかおかしいとか書いていたが、Shift押しっぱなしでメニューを出すと操作できないようで、Esc押しっぱなしでメニューを出すと正常に操作できる模様。