Table of Contents
SMCとは何か?
SMC (System Management Controller) はIntel版Macに搭載されたサブシステムです。小さなコンピュータチップですね。Intel版になる前にもこのようなサブシステムは存在していて、SMU (System Management Unit)とかPMU (Power Management Unit)などと呼ばれていたようです。SMCは、メインのIntel CPUとは独立して動いて、次のような仕事を担当しています。
- 温度と電力のモニターと制御
- バッテリー充電
- ビデオモードの切り替え
- スリープ、wake, ハイバネーション、LED表示
ちなみに最近のMacに搭載されているApple T2セキュリティチップは、SMCも内蔵しているらしいです。
SMCのふりをするFakeSMC.kext
一般的なATXマザーボードにはSMCは搭載されていません。SMCは独立したサブシステムですが、OSからアクセスすることもあるので、SMCが無いとmacOSが起動しません。FakeSMX.kextは、名前の通り、SMCがあるかのように振舞ってくれるkextです。macOSを起動するために唯一必須のkextなのです。
また上述のように、SMCには温度をセンシングして冷却コントロールする機能もあります。FakeSMCはこれらの機能も提供するので、連携するアプリケーションを使用することで、コンピュータの温度やファン回転数を知ることもできます。
新登場のVirtualSMC
FakeSMCと同じ機能を実現するために、最近VirtualSMCというkextが登場しているようです。最初のリリースは今年(2018)の9月12日です。出たばかりです。
githubのページには、特徴として以下のことが書かれています。
- macOS 10.8 以降をサポート(10.9 以降を推奨)
- MMIOプロトコルと割り込み応答により最近のOSとの互換性を確保(MMIOってメモリマップドIOのことかなぁ?)
- キー割り当てとR/W保護を正しく報告
- 機種に合わせたチューニングとSMCバージョンを提供
- センサとキーのためのプラグイン拡張可能
- smcdebug=xxブートオプションをサポート
- 本物のSMCが見つかったらそれを置き換える(本物のMacのSMCを置き換える目的でも使用できる)
- 全機能を発揮するにはLilu.kextが必要
だそうです。redditでも紹介されて、FakeSMCとVirtualSMCの比較が書かれていました。
redditの達人達の評価によると、
- FakeSMCは歴史もあって安定していてちゃんと動く
- FakeSMCはハードウェアモニタ機能が充実しているので、それを使いたい場合には引き続き使用すべき
- VirtualSMCは新しい設計に基づいてより厳密なエミュレーションを目指している。性能やデバッグで有利なので、将来性がある。
ということです。安定性を求めるなら定評のあるFakeSMCを使い続けて、新しいものに興味があるならVirtualSMCを使ったら良いのではということでした。ChameleonがCloverに置き換わった時も、こんな感じの評判でしたので、将来はVirtualSMCに置き換わっていくと思われます。
VirtualSMCを使ってみた
そこで早速使ってみました。githubからダウンロードしてmakeするのは面倒なので、コンパイル済みを探します。そこで、最近お世話になっているKext Updater.appを使いました。
ここで、Load Single Kextを選ぶと、VirtualSMCをダウンロードできます。
こうして入手したVirtualSMC.kextをFakeSMC.kextと置き換えてみました。
入れた場所は、ESPの中です。ドキドキしながら再起動したところ、無事、ブートできました。最初の起動には少し時間がかかった気がしましたが、2回目以降の起動はFakeSMCの時よりも早くなったような気がしました。ただし気のせいかもしれません。FakeSMCと同じく、問題なく動く様子ですので、新しい物好きとしてはVirtualSMCを使っていきたいと思います。
ダウンロードしたファイルには、VirtualSMC.kext本体の他に、センサー関係のkextらしきものがいくつか入っています。
今回は、一つもインストールしませんでしたが、そのうち調査したいと思います。
蛇足:両方使うとどうなる?
試しているうちに、うっかりFakeSMCとVirtualSMCを両方使ってしまった期間がありました。気づかず使っていたのですが、手元の環境では、macOSを終了しても電源が切れずにまた起動するようです。気づいて片方のみにしたら、正常に戻りました。両方使う意味はないですし他にも副作用が出ると思いますのでご注意ください。
少し前にVirtualSMCを使いましたがLenovoのE550では起動に失敗します
FakeSMCに変えるとすんなり起動しました。
とくに理由がなければFakeSMCのほうがいいような気もします
そうなのですか。情報ありがとうございます。
このVIRTUALSMCのお供には、このモニターツールが良いですね。
HWMonitorSMC2
Application for monitoring hardware health in macOS
https://github.com/CloverHackyColor/HWMonitorSMC2/releases
バージョン2.6になって元々AMD GPUやPCのFANの回転数とかチェックできるのはもとより、2.6でIT8688E chipにも対応したみたいでさらなる使いがってが良くなったみたいです。
いつも情報ありがとうございます。ハードウェアモニター系はあまり使っていなかったのですが、そのうち試してみます。
https://amp.reddit.com/r/hackintosh/comments/awji5x/mojave_random_freeze_please_help/
上の記事とかを見る限りVirtualSMCよりFakeSMCの方が良いんですかね。
よくわからないですが、この記事の人の不調は、VirtualSMCが悪かったのではなく、WhateverGreenを入れ忘れていたことが原因な気がします。