VirtualSMC: もう1つのFakeSMC

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も内蔵しているらしいです。

f:id:siroanko:20181122224250p:plain

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をダウンロードできます。

f:id:siroanko:20181122234604p:plain

こうして入手したVirtualSMC.kextをFakeSMC.kextと置き換えてみました。

f:id:siroanko:20181122235445p:plain

入れた場所は、ESPの中です。ドキドキしながら再起動したところ、無事、ブートできました。最初の起動には少し時間がかかった気がしましたが、2回目以降の起動はFakeSMCの時よりも早くなったような気がしました。ただし気のせいかもしれません。FakeSMCと同じく、問題なく動く様子ですので、新しい物好きとしてはVirtualSMCを使っていきたいと思います。

ダウンロードしたファイルには、VirtualSMC.kext本体の他に、センサー関係のkextらしきものがいくつか入っています。

f:id:siroanko:20181123000059p:plain

今回は、一つもインストールしませんでしたが、そのうち調査したいと思います。

蛇足:両方使うとどうなる?

試しているうちに、うっかりFakeSMCとVirtualSMCを両方使ってしまった期間がありました。気づかず使っていたのですが、手元の環境では、macOSを終了しても電源が切れずにまた起動するようです。気づいて片方のみにしたら、正常に戻りました。両方使う意味はないですし他にも副作用が出ると思いますのでご注意ください。

2件のコメント

  1. 少し前にVirtualSMCを使いましたがLenovoのE550では起動に失敗します
    FakeSMCに変えるとすんなり起動しました。
    とくに理由がなければFakeSMCのほうがいいような気もします

返信を残す

メールアドレスが公開されることはありません。

「名前」「メールアドレス」「サイト」は空白でも投稿できますが、日本語が含まれない投稿は無視されます。(スパム対策)