yuki.nのブログ

田舎情報系大学生が日々の生活で行ったことを書いていきます

Macbook Pro 15 Late 2011 のSSD換装と画面の乱れ (dGPU問題) の対処を同時に行った話

今回がブログ開設後、初めての記事になります。文章が稚拙なところはご容赦していただけると幸いです。  

そもそも、dGPU問題による画面の乱れというのはこの問題に対処する2, 3週間ほど前から発生していて、この時期のモデルに特有な問題を知らなかった私は、使いにくいなぁとは思いつつも騙し騙し使っていました。(ハードに関しての知識があまりなかったせいでもあります)

また、内蔵ストレージをHDDのままで使っていたせいで、以前からその処理の遅さにイライラしていて、流石にSSDに変えるべきだよなぁと思っていた時期でもあり、結果的にSSD換装とdGPU問題への対処を同時に行うことが余儀なくされました...  

今回は、初心者である自分が行ったことに関して無駄だったこと(無駄だと思われることも含む)は省き、するべきことのみをメモとして残します。なるべく初心者でも手が止まらないように書くつもりです。

概要

SSD換装するにあたって、Timemachineで復元を行いたかったのですが、この機能を今まで使ったことがなかったので、まずはTimemachineでバックアップをとることから始めました。
その際に画面の乱れをなくすため、dGPUを使わずiGPUのみで動くように設定を行いました。その後、実際に復元を行います。復元の際のOSはSierraです。

画面の乱れの対処 (dGPUを使わないよう設定する)

まずは、画面の乱れをどうにかしないとまともに動かせないのでこの対処から行います。

行ったことはこれに書かれた通りです。非常にありがたいね。
hardware - Boot hangs on grey screen (even when booting from USB drive with fresh OS X install) - Ask Different

具体的手順

1-
電源ケーブルのみを装着しそれいがいの機器は繋がないようにした状態で、以下のキーを押してSMC (電源周りの管理・制御を行なう) をリセットします。電源ボタンを同時に押しますが、起動はしません。

[左Shiftキー] + [Ctrlキー] + [Optionキー] + [電源ボタン]

2-
次に以下のキーを起動音が二回鳴るまで押し続けます。これによりPRAMをリセットします。PRAMはハードウェア情報を保存しているメモリのことです。

[Commandキー] + [Optionキー] + [p] + [r]

3-
2を行った直後に以下のキーを押し続けてください。黒い画面に遷移し、白い文字列が現れるのでそのタイミングでキーを離してもらえればいいです。

[Commandキー] + [s] + [r]

すると、最終行に以下のような表示がされるので、ここでこれから指定したコマンドを打っていきます。

-sh-3.2#

4-
以下のコマンドでSIP(System Integrity Protection)の無効化を行います。これをしないと、打ち込むコマンドの実行が拒否されてしまいます。

csrutil disable

以後のコマンド打ち込み作業中に、コマンドが実行できない旨のメッセージが出た場合、下のコマンドを打ち込みSIPの状態を確認してみてください。おそらく、enabledになっているので上のコマンドを実行すると解決するかと思います。disabledであれば大丈夫です。

csrutil status

5-
メインの作業である、起動時のdGPUの利用不可設定になります。画面が乱れている状態では打ち込みづらいとは思いますががんばって打ち込んでください。

nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

この時点で以下のコマンドで再起動かけていつも通りに起動してもらうと画面乱れはなくなっているかと思います。しかし、この段階では不完全な状態です。とりあえず再起動は置いときましょう。

reboot

6-
次に、以下のコマンドでVerboseモードを有効にします。このモードはMacにおいて起動プロセスをCUIで表示させるためのものです。

nvram boot-args="-v"

7-
ここで、一度再起動をかけます。

reboot

起動音が鳴った直後に以下のキーを押し続け、シングルユーザーモードを起動させます。押し続けていると、ログイン画面に行くのでそのままログインを行ってください。そうすると3の作業でやったような画面が出てくるかと思います。一回Enterキーを押すとわかりやすいです。

[Commandキー] + [s]

正直なところ、3で行ったものと今回のシングルユーザーモードの違いがあまりわかっていません。(どちらもシングルユーザーモードでできそうだけど...)
ここでもコマンドの打ち込みがあるので、4の内容を使うかもしれません。
8-
kextcacheの再構築を行います。下のコマンドを打ち込んでいってください。

/sbin/mount -uw /

9-
kextのバックアップディレクトリを作成します。

mkdir -p /System/Library/Extensions-off 

10-
問題のRadeonのkextをさきほど作ったディレクトリに移します。

mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/

11-
kextcacheを更新します。

touch /System/Library/Extensions/ 

12-
問題のAMDチップの電源管理方法を認識させます。

sudo kextload /System/Library/Extensions-off/AMDRadeonX3000.kext

13-
12のコマンドは毎回入力しないといけないもので、手動で入力するのは面倒です。なので、自動化を行います。

sudo mkdir -p /Library/LoginHook

14-
ここでnanoというテキストエディタシェルスクリプトを書きます。

sudo nano /Library/LoginHook/LoadX3000.sh

以下の内容を入力後、保存は[Ctrlキー] + [o]で、終了は[Ctrlキー] + [x]を押します。

#!/bin/bash
kextload  /System/Library/Extensions-off/AMDRadeonX3000.kext
exit 0

15-
シェルスクリプトが自動実行されるようにします。

sudo chmod a+x /Library/LoginHook/LoadX3000.sh
sudo defaults write com.apple.loginwindow LoginHook /Library/LoginHook/LoadX3000.sh

16-
5で行ったdGPUの利用不可設定は初期化される場合があるので、対策として14と同じようにシェルスクリプトを書きます。

 sudo nano /force-iGPU-boot.sh

内容は以下のとおりです。

#/bin/sh
sudo nvram boot-args="-v"
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
exit 0

17-
実行可能にします。

sudo chmod a+x /force-iGPU-boot.sh

今後、もし、同様の現象がおこればシングルユーザーモードで起動し、以下のコマンドを実行すれば対処できます。

sh /force-iGPU-boot.sh

これで画面乱れの対処はできましたが、この方法は抜本的な解決方法ではないので様々な不具合が残ってしまうことをご承知ください。

SSD換装

必要な道具

f:id:snowknight0713:20180816030221j:plain

HDDケースとSSDはアマゾンで購入したもので、ドライバーは Xiaomi Mijia Wiha というものを使っています。ドライバービットがたくさんついているため、こういうものがあると分解の際、非常に便利です。

準備

画面乱れが直ったところで、復元する際に使うバックアップデータを作成します。データの保存先としては外付けのストレージもしくは内蔵ストレージになりますが、今回は内蔵ディスク(換装前のHDD)を保存先ディスクとして選択します。

パーティションの追加

保存先として内蔵ディスクを選択する場合は、まず、Timemachineのためのパーティションを追加する必要があります。

そのために、Launchpadその他ディスクユーティリティの順に選択し、ディスクアプリケーション.appを起動します。  

次に、左方にあるリストより、内蔵ディスクを選択します。(この時、ストレージ配下にある項目を選択し、使用済み領域を確認しておいてください。パーティションを追加するときに、少なくともこの領域を超える必要があります。)

選択後、ウィンドウの上方にパーティションという項目があるのでそれを押します。

円状のものが左に表示されるので、その下に表示される+を押します。

すると円の左側に名称未設定という領域が現れるので、これを先程の使用済み領域より十分大きくなるように修正してください。私は全体の3割ほどで済みました。

次にパーティション情報ですが、名前は自分で復元用だとわかりやすいものにしてください。その後、右下の適用を押します。

Timemachineでバックアップをとる

Timemachine.appを起動するため、以下の順に選択してください。
Lauchpadその他TimeMachine

現れたウィンドウ内のディスクを選択...を押し、先程追加したパーティションを選択してください。

そして、左のほうにあるバックアップを自動作成にチェック入れます。すると、次回のバックアップに、バックアップ開始の時間が表示されるので、それまで待機し、バックアップを完了させます。

これで復元のための準備が終わりました。

具体的手順

ここからは実際に画像を用いて説明したいと思います。スマホで撮ったものなので、画質についてはご容赦ください。 まずは、本体の電源をoffにします。

次に本体をひっくり返し、背面の8つのネジをプラスドライバーではずします。 f:id:snowknight0713:20180816032257j:plain:w400

すると画像のようになります。

f:id:snowknight0713:20180816032310j:plain:w400

画像の2つのネジをプラスドライバーではずします。(画像中ではSSDになってはいますが、気にしないでください)
f:id:snowknight0713:20180816032740j:plain:w400

そして、ストッパーはこのように外すことが出来るので外してください。 f:id:snowknight0713:20180816033201j:plain:w400

内蔵ディスクを手前に持ち上げると画像のようになるので、
青い部分のコネクタをはずしてください。
f:id:snowknight0713:20180816032755j:plain:w400

HDDの側面には画像のようなネジが計4箇所あります。
これをすべてT6トルクスドライバーで取り外してください。
f:id:snowknight0713:20180816033703j:plain:w400

取り外したネジは用意したSSDに同じように取り付け、HDDをSDDに置き換えて分解した手順とは逆の手順で組み立てます。

取り外したHDDはHDDケースへとしまっておきます。 f:id:snowknight0713:20180816034111j:plain:w400

復元作業

無事、組み立て終わったら、HDDケースをmacbookproに接続し、以下のキーを白い文字列が表示されるまで押し続けます。

[commandキー] + [r]

しばらく待つと言語選択画面が表示されるので、日本語を選択し、進むとmacOSユーティリティが起動します。

そして、Timemachineバックアップから復元を選択します。このままダイアログ通り進めてください。バックアップ済みデータの選択はTimemachineで保存先に指定したものです。

復元が完了すると、自動的に再起動します。これで作業は完了しました。

もし、復元が終わり、ログイン画面に入ってフリーズ等が起こってしまった場合、一度電源ボタンを長押しして、強制終了してください。そしてもう一度起動するときに、[Shiftキー]を押して、セーフモードで起動させます。セーフモードで起動に成功した場合、通常起動でも正常に起動するようになると思います。

まとめ

実際に作業を行っていたときは、画面乱れを放置してバックアップを取ろうとしたり、余計なところでハマっていました。
以上にあげた操作でうまくいくとは思いますが、この操作による故障や損害等につきましては、一切責任を負いませんので、あくまで自己責任でお願いします。

今回が初めての記事で技術系の内容でしたが、今後はどういうテーマで書いていくのかはまだ決めていません。たぶん好き勝手に書いていくと思います。更新頻度はあまり高くならないと思いますが、よろしくお願いします。