2026年10月30日金曜日

dGPU(6630M)への給電を止める

 Mac mini(2011)の壊れたdGPU(6630M)をスルーしてiGPU(intel HD Graphics 3000)を使用するソフト的な迂回で復活したMac miniですけど、ソフト的に封じているだけで機能不全を起こしてる6630Mが完全に沈默しているわけではありません。
ですから負荷に関係なく競合のような状態が起きてしまうことがあります。

以下は、そんなカーネルパニック現象への対策手順です。
原因は、OS上でAMDドライバを無効化していても、壊れたdGPU(Radeon 6630M)チップ自体に微量の電気が流れているので省電力移行時などに誤作動を起こすためです。
起動時にdGPUへの電力供給(給電)を物理的に完全カットすることで安定性と省電力・低発熱化が期待できます。

📌 事前準備(必要な環境)

  • 事前に作成した「-s(シングルユーザーモード起動フラグ)」入りのHigh SierraインストールUSBメモリ
  • または、通常のリカバリーモード(Command + R)が起動できる環境
  1. SIP(システム整合性保護)を一時的に無効化する

    macOSのシステム領域(/sbinなど)へ給電カットスクリプトを書き込むため、まずはSIPを解除。
    OS上書きインストール後はSIPが自動で有効(初期状態)に戻っているため、この作業が必須です。

    1. Mac miniの電源を切り、キーボードの Command(⌘)+ R を押しっぱなしにして「macOSユーティリティ」画面を起動します。
    2. 画面上部のメニューバーから 「ユーティリティ」 ➔ 「ターミナル」 を開きます。
    3. 以下のコマンドを入力して Enter を押します。

    csrutil disable

    無効化に成功したメッセージが出たら、ターミナルに reboot と入力するか、メニューから再起動させます。

  2. 内蔵SSDのシングルユーザーモードに入り、書き込み権限を得る

    1. 再起動の音がしたら、すかさずキーボードの Command(⌘)+ S を押しっぱなしにして、内蔵SSD側のシングルユーザーモード(黒い画面)に入ります。
    2. 画面の文字が止まったら、ディスクへの書き込みロックを解除するため以下のコマンドを入力して Enter を押します。

    mount -uw /
  3. dGPUへの電気を遮断するスクリプトを仕込む

    起動時にRadeonへの給電ポートを直接叩いてオフにするスクリプトファイル(.sh)をシステム内に作成します。

    printf '%s\n' '#!/bin/sh' 'outb 0x750 0x07' 'outb 0x751 0x33' 'outb 0x754 0x02' 'outb 0x755 0x02' > /sbin/disable-amd.sh

    ⚠️ 画面表示のバグについて:シングルユーザーモードでは文字数が長くなると画面右端で折り返されず、同じ行の先頭に上書きされるように見えますけど内部では正常に入力できてます。気にせず打ち切って Enter 。

    続けて、作成したファイルに実行権限を与えるためのコマンドを入力です。

    chmod +x /sbin/disable-amd.sh
  4. Mac起動時にスクリプトが自動実行されるよう登録する

    先ほど作ったスクリプトが、毎回の起動時にバックグラウンドで自動的に呼び出される設定ファイル(LaunchDaemons)を作ります。
    以下のコマンドを打ち込み、1行ごとに Enter を押して進めます。

    cat << 'EOF' > /Library/LaunchDaemons/com.disable-amd.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://apple.com">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.disable-amd</string>
        <key>ProgramArguments</key>
        <array>
            <string>/sbin/disable-amd.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
    </plist>
    EOF

    最後に EOF と打って Enter を押した際、エラーが出ずに通常のプロンプト(-sh-3.2#やroot#)に戻れば登録完了です。

  5. 再起動して通常どおりデスクトップを立ち上げる

    すべての書き込みが終わったら、以下のコマンドでシステムを再起動させます。

    reboot

✨ 対策完了

Mac miniが起動する最初の段階で、壊れたAMDチップへの通電が完全にシャットアウトされるようになります。
これにより突然の再起動(カーネルパニック)が発生しなくなります。
また、dGPUが一切電力を消費しなくなるため本体の発熱も低下します。
温度を調べてみると高負荷時のHD3000より15℃以上下がっています。
※このMac miniはHD3000が入っているCore i7 CPUと6630Mでヒートシンクを共有してるため給電してなくても6630M側でも熱が観測されるようです。




0 件のコメント:

コメントを投稿