Mac mini (2011) dGPU故障時のiGPU固定化手段
PRAMクリアや電池交換を行うと設定がリセットされ画面が映らなくなるだけでなく、SIP(システム保護)が自動的に有効に戻ってしまいます。
これが有効のままだとシングルユーザーモードでのNVRAM書き込みが拒否されるので、必ず最初に以下の「ステップ0」を実行すること。
ステップ 0:リカバリーモードでSIPを無効化する
1. Mac miniの電源を入れ、すぐに Command + R を押し続けてリカバリーモードを起動。
2. メニューの「ユーティリティ」から「ターミナル」を開き以下を実行。
csrutil disable
3. 実行後、左上のアップルメニューからMacを一度「システム終了」させせる。
【手動ルート】初回・クリーンインストール時の設定手順
初めてiGPU固定化を行う場合、またはOSを再インストールした場合はシステム領域に自動実行ファイルを仕込む必要があります。
Macの電源を入れ、すぐに Command + S を押し続けてシングルユーザーモードを起動する。
1. 書き込み権限の取得とNVRAM書き換え
mount -uw / nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 nvram -d boot-args reboot
2. 通常起動後のターミナルでスクリプトと常駐設定を配置する
上記コマンドで一度通常起動(デスクトップ画面)まで進める。
シングルユーザーモードでのファイル作成はOSのバグで弾かれやすいため、起動後の通常の「ターミナル」アプリを開いて、以下のコマンドをそのまま貼り付けて実行するのが確実。
# 給電遮断スクリプトの作成(Python版)
sudo sh -c "cat << 'EOF' > /sbin/disable-amd.sh
#!/usr/bin/env python
import os
os.system('nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%%01%%00%%00%%00')
EOF"
sudo chmod +x /sbin/disable-amd.sh
# 自動実行設定(LaunchDaemons)の登録
sudo sh -c "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"
# 設定をOSに即時認識させる
sudo launchctl load /Library/LaunchDaemons/com.disable-amd.plist
【USBメモリ一発復旧ルート】今後の再発時に手打ちを無くす方法
一度上記の手動ルートを完了してしまえば自動実行ファイル(shやplist)はHDD内に保存されます。
今後、PRAMクリア等で画面が映らなくなった(NVRAMがリセットされた)場合は、長いコマンドを手打ちする必要はなく、以下の「NVRAM書き換え専用スクリプト」を保存したUSBメモリを用意するだけで挿すだけで復旧できるようになります。
A:事前準備(通常起動できているmacで作業)
USBメモリ(ボリューム名を半角英大文字で RECOVERY としたもの)を用意し、テキストエディタで以下のコードをそのまま貼り付けて fix_gpu.sh というファイル名でUSBメモリの直下に保存。
#!/bin/sh # 消えてしまったNVRAMのiGPU固定命令を再書き込みするスクリプト nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00 nvram -d boot-args echo "--- NVRAM Fix Completed! Rebooting... ---" sleep 2 reboot
B:今後、トラブル(再発)が起きた時の復帰手順
1. Command + R でリカバリーモードを起動後、ターミナルで csrutil disable を実行して一度システム終了する(SIP解除)。
2. 【重要】Macの電源が切れた状態で、あらかじめUSBメモリを挿しておく。
3. Command + S でシングルユーザーモードを起動。黒い画面が出たら以下を入力して手動マウントしスクリプトを実行する。
mount -uw / ls -l /dev/disk*
💡 どの番号がUSBメモリか分からない場合の見分け方:
一度USBメモリを物理的に引き抜いてから、もう一度 ls -l /dev/disk* を実行。
リストから消えた数字(例:disk3s1 など)がUSBメモリの番号。
※番号を確認した後は、USBメモリを挿し直しただけでは認識しないため、一度Macの電源を切り、もう一度「USBメモリを挿した状態」でCommand+S起動をやり直して本番のコマンドへ進む。
USBのdisk番号(例ではdisk3s1とします)が分かったら、以下を順に入力
※うちのモデルはCTOで750GB HDD+256GBのデュアルドライブ構成だったので外部に挿したUSBメモリの番号が3になったらしい・・・
mkdir /tmp/usb mount_msdos /dev/disk1s1 /tmp/usb cd /tmp/usb sh fix_gpu.sh
※USBメモリを「Mac OS拡張形式」にしている場合は、mount_msdos ではなく mount_hfs を使用。
実行後は全自動で処理が完了し再起動がかかる。
正常に設定が完了したかの最終確認手段
ターミナルを開いて以下の3つの手段で答え合わせ。
確認①:自動実行タスクがエラーなく稼働しているか
sudo launchctl list | grep disable-amd
👉 画面に 0 com.disable-amd と、左端に「0」が表示されれば自動実行は成功。
確認②:NVRAM(iGPU固定設定)が維持されているか
nvram -p | grep gpu-power-prefs
👉 gpu-power-prefs=%01%00%00%00 と表示されれば成功。
確認③:【重要】Macs Fan Controlによる物理的な温度検証
システム情報(SPDisplaysDataType)を確認した際、表示上だけ「AMD Radeon 6630M」のまま変わらない現象が起きることがある。
本当にiGPUへの迂回とdGPUへの給電カットが成功しているかは、Macs Fan Control などのアプリで各チップの温度を確認するのが一番確実。
・Intel HD Graphics 3000(iGPU): 40℃〜50℃前後(画面出力を担当してフル稼働しているため熱を持つ)
・AMD Radeon 6630M(dGPU): 30℃台(給電がカットされ完全に眠っているため室温近くになっている)