比較的新しいIntel CPUでPuppy Linuxがうまく動かない問題
2017/12/05 追記
原因と思われるものがわかった。
以下の記事を参考にしてほしい。
前の記事にもちょっと書いたが、比較的新しいIntel CPUでは、グラフィック周りで不具合が起きているらしい。
Puppy Linux Discussion Forum :: View topic - HP-X360-I3 Tahr=graphics Slacko=No wireless
うちのPCでもTahrPupで同じような症状になった。
上のPuppy Linuxフォーラムで質問している人はIntel Core i3 5010Uで起きているようだが、うちのマシンはCore i5 5200Uである。
同じBroadwellだと思われる。
そんなに新しくないんだけど・・・。
カーネルがどうやらきちんと新しいIntel HD Graphics(うちのマシンはIntel HD Graphics 5500)に対応していないようだ。
XenialPupだと起動できる。
Ubuntu用のIntelドライバインストーラやアップデーターを試してみたが、ディストリビューションのチェックと思われる項目でエラーが出てインストールできない。
直接、グラフィックと関係がないがマルチタスク動作で動きがおかしくなっているのでいろいろ調べてみたら、CPUの周波数コントロールであるPStateがうまく動いていないらしいこともわかった。
起動オプションにacpi=forceとintel_pstate=disableを追加してみたら、起動してXが立ち上がった直後の不安定さは改善した。
acpi-cpufreqでクロック周波数の制御が行われる。
intel_pstate=no_hwpというオプションもあるようだ。
HardWare controlled P-Stateという機能を無効にするものらしいが、この機能はSkylake以降に搭載されているということで、うちの環境には関係がないので、no_hwpオプションも意味がないだろう。
PStateの不具合は結構あるようでツイッターなどでも探すと(Puppy Linuxではないだろうが)同じような記述がある。
さっきのやつ、結局のところintel_pstate=disableすることでとりあえずクロック下がるようにはなった
— TAKUMA327のアトリエ 〜不思議なRyzenの錬金術師〜 (@TAKUMA327) 2017年7月29日
原因判明。新しく導入された intel_pstate が悪い。
— sidewarehouse (@sidewarehouse) 2017年7月27日
カーネルパラメータに intel_pstate=disable をぶっ込んで解決。
リアルタイム性大幅に改善。
CPUの省電力ドライバをintel_pstateからacpi_cpufreqに変更してみる。ターボブーストが使えなくなるけど、モバイルPCだし普段OFF運用だしいいか。
— dictoss (@dictoss) 2016年8月28日
(´・ω・`)ふむー、最近のPC(UEFIとかAHCIとか)にCentOS入れるとき、インストール前の画面でintel_pstate=disableを入れないと不明なエラーがおきるのね……
— K02 (@Knife02) 2016年8月20日
intel_pstateにすると周波数制御の種類がperformanceとpowersaveしかなく、うちのマシンではバッテリー駆動状態だと負荷に関係なくバッテリーの残り残量に合わせてどんどんクロック周波数が落ちていく。
自動的にバッテリー消費を抑えているのだろうが、バッテリーの残りが少ない状態になるとクロック周波数は500MHzにまで低下してしまい、アプリを終了して電源をオフにするのにかえって時間がかかるというおかしなことになっている。
なかなかクセモノだ。
しかし、Intel PStateを無効にすると今度は、負荷がかかったときに動作クロック周波数を一時的に定格よりも引き上げるターボブーストテクノロジー(Intel Turbo Boost Technology)が効かなくなるようだ。
インテル ターボ・ブースト・テクノロジー - Wikipedia
i5-5200Uではベース動作周波数が2.2GHzのところ、ターボブースト時には2.7GHzまで引き上げられる。
これが無効になるのは地味だがちょっと残念。
しかし、安定動作が優先なのは当たり前なのであきらめるしかない。
アイドル状態のクロックや電圧を制御するC-Stateというのもあって、古いCPUではintel_max_cstateというカーネルオプションをつけて安定動作を図る場合もあるようだ。
少しこれで様子を見てみることにする。
グラフィック関係をどうにかできないだろうか・・・。
Puppy Linuxに触発されて作ったらしい、DebianDogやUbuntuベースのXenialDogなら問題なく動く可能性が高い。
カーネルも定期的にアップデートされる。
Puppy Linuxよりもメモリも少なくて良い。
しかし、初期設定がPuppy Linuxよりも面倒。
そこを乗り越えればかなり快適に使える。
2017/11/05 追記
XenialPup64 7.8.0.6を試してみたがやはり途中でフリーズする。
XenialPup64のカーネルのバージョンは4.9だ。
安定して動作するXenialDogは4.4なのでもしかしたらカーネルが新しすぎるのかも知れない。
しかし、Ubuntu(Lubuntu)を先日、Zesty Zapus(17.04)にアップグレードしたが、これは4.10で、もっと新しいのである。
カーネルのせいでは無いのだろうか?
TahrPupは3.14だから古すぎて動かないのは間違いないようだが…。
さらに追記
Slacko64 6.9.9.9を試してみた。
Index of /puppylinux/puppy-slacko-7.0/testing/64/
Slacko64 6.9.9.9はカーネルの異なる複数のイメージが用意されている。
バージョン4.9のカーネルが使われたものはやはり何かの拍子にフリーズする。
バージョン4.4のカーネルが使われたものはうまく動作している。
XenialDogと同じ4.4で安定した動作となっていることを考えると、問題はバージョン4.9のカーネルである可能性が高いのではないかと思う。
Slacko64 6.9.9.9はXenialPup同様テスト版である。
Puppy Linux Release Announcement
公式版とされているSlacko64 6.3.2はカーネルのバージョンは4.1のようだ。
少し古いがもしかすると動くかも知れない。
ここの3つ目の書き込みも関係しているかも知れない。
Puppy Linux Discussion Forum :: View topic - Xenialpup64 CE 7.5