MacBookがログイン後ハングアップする現象
このところ、公私ともに実に忙しく、ブログもSNSもほとんどできていなかったのですが、仕事では、
組み込み関連を少し支援する必要があり、Raspberry Pi2でユニファイラ巻きステッピングモータをMOSFETで駆動してみたり・・・
Arduino Unoでバイファイラ巻きステッピングモータをトランジスタとMOSFETのHブリッジ回路で動かしたり、
Arduino,GR-SAKURA,RaspberryPi2,BeagleBoneGreenなどでUDPパケット送受信能力を調べたりしていました。
そんな内容を書こうかと思っていたのですが、こうやって様々な機器をUSB経由でMacBookにつないでコントロールしていたところ、2回MacBookが使えない状態になり、なんとか復活しましたので、その話しの方が役に立ちそうなので書いておきます。
現象としては、MacBookをブートして、ログイン画面までは普通に立ち上がるものの、ログインするといつまで待ってもデスクトップ画面表示に切り替わらないという感じです。背景としては、USBドライバを追加したりしたのと、多数の機器をUSBでつないでいたこと、VMWareも動かしていたことなどですが、まあ、おそらくドライバー関連の問題でしょう。
こんな時には、「困ったときにやること」みたいなものがいろいろ紹介されていますが、大抵効きません。なんとか復活した手順を簡単に紹介しておきます。この方法で直るとは限りませんし、帰ってひどくなる可能性もありますので、あくまでも参考情報として。困ったときには情報はいくらでも欲しいものですので。
さて、まずは起動途中の様子を見ないと何が悪いのかがさっぱり分かりませんので、冗長モードで起動してみます。Command+Vを押しながらブートします。なお、あとで登場するCommand+Rのリカバリモード以外は、ログイン画面までは普通に出ます。ログインした後に冗長表示になりますので、Command+Vが効いていない、と心配せずに、ログインしましょう。私はキーが効かないと、ここだけでもはまり、nvramのboot-argsに-v,-s,-fなどをセットして再起動したり苦労しました。
さて、冗長モードではダラダラとメッセージが流れますが、しばらくすると不機嫌になった感じになり、警告らしきメッセージが出たり、同じメッセージがノンビリと繰り返したりするようになります。そのメッセージでググってみます。
1回目におかしくなったときには、直前にUSBドライバ関連をいじったのが悪いのだろうと考え、そこを戻してみることにしました。こういうときはシングルユーザモードで起動します。Command+Sを押しながら起動します。ログインした後にシングルユーザで起動します。
シングルユーザモードではディスクがリードオンリーでマウントされていますので、
fsck -fy
mount -uw /
という感じで、読み書き可能にマウントし直します。ところが、これでも/Systemや/Libraryなどは変更できません。
csrutil disable
としてから再起動すると書けるようになります。なお、このコマンドはリカバリモードでないとエラーになるかも知れません。リカバリモードはCommand+Rで入れます。
おかしくなる前の状態に/System/Library/Extentionsの下あたりを修正し、再起動すると無事に使える状態になりました。
ところが、2日後にまたUSBに大量に機器をつないで使っていたらパニック発生でリブートになり、再び同じ現象になりました。
またシングルユーザモードでメッセージを眺めて、ググってみて、を繰り返すと・・・
chown -R root /System /Library
chmod -R u+rwX,go+rX,go-w /System /Library
こんなことをやってみると良い、という情報も海外で見つけましたが、これでもダメ。これは1回目にも実はやっていましたが。
cd /Library/Extensions
mkdir Unsupported
mv *.kext Unsupported
こんな感じに、拡張ドライバーを一度どかしてみると良い、という記事も海外で見つけ、確かにいくつかあったのでやってみると・・・見事復活しました!
まあ、こんな感じで、/System , /Libraryあたりは危険です。普通はcsrutil enable状態なので、変更したくてもできないと思いますが、ドライバーがうまく動かないと意地でもいろいろやってみたくなるもので、そうするとこんな目にあるかもしれません。
無事に使える状態になったらすぐにTimeCapsuleでバックアップを取りましょう。
その後、念のため、リカバリモードからOSX再インストールをしておくことにしました。バックアップを取ったので、OSを入れ直してスッキリと・・・と思って覚悟を決めて実行したところ・・・OS以外はそのまま残っていました!
最初からそうだと分かっていれば、まずこれをやってみるところですねぇ。てっきりデータが消えるものだと思ってました。なお、リカバリモードからのOSX再インストールはインターネット接続が必要です。
他にも、ターゲットディスクモードにして、他のMacBookにデータを移行する手もありましたが、MacBookはType−CのUSBしかなく、そう簡単にMacBookAirに繋げなかったのでした。
くれぐれも、いずれの操作も自分でよく調べ、覚悟を決めてからやってください。なんの責任も取れませんので。
OSXは比較的安定していると思いますが、いざというときにはやっぱりLinuxなどの方が修復が楽ですね。。