LoginSignup
18
15

More than 5 years have passed since last update.

NVRAMリセットをターミナルから

Last updated at Posted at 2015-12-17

前提

概ね問題無いという確認はしたものの、ここに書かれていることを試す場合は自己責任で

公式のリセット方法

NVRAM リセットについては
Mac の NVRAM をリセットする方法 - Apple サポート
のように書かれており、こちらでやるのが確実、かつ安全と思われる。

このページのターゲット

  • 再インストールが怖くないぐらい心に余裕がある
  • マシンが遠隔地にあるが、 NVRAM リセットしなければならなくて困っている
  • コマンドがあるなら使う派

確認した環境

  • MacBook Pro (Retina, 15-inch, Mid 2014)
  • OSX 10.11.2

そもそも NVRAM とは

前述の Apple サポートのページから引用すると、

NVRAM には、次のような情報が記憶されます。
・スピーカーの音量
・画面解像度
・選択されている起動ディスク
・最近起きたカーネルパニックの情報 (存在する場合)

と、書かれている。

上記に関連する問題が起きた場合に、とりあえずリセットだよね?というもので、
Kernel Panic 遭遇時にリセットをしたことがある人もいるはず。

頻繁にやると覚えられるけど滅多にやらないので、あれ?何のキーを押しっぱなしで電源ONだっけ?
と、さきほどのページを見る所から始めることになり、意外と面倒だったりする。

nvram コマンドの使い方

存在を知らなかったが、なんとコマンドがあった...
これを覚えてしまえばわざわざブラウザを起動して検索して〜が不要になる。

さっそくターミナルから使い方を見てみる。

$ man nvram

Apple の Man Page はこちら
nvram(8) Mac OS X Manual Page

10.9 からあったのね、このコマンド...

EXAMPLES を見ると -s オプションで boot 時にどうするとか指定できるようなので、
そちらも重宝する人がいるのかもしれない。

なお、サクッと Usage を見たい場合は、存在しないオプションを指定すれば良いようなので、

$ nvram -h
nvram: (usage: no such option as -h)
nvram [-x] [-p] [-f filename] [-d name] [-c] name[=value] ...
        -x         use XML format for printing or reading variables
                   (must appear before -p or -f)
        -p         print all firmware variables
        -f         set firmware variables from a text file
        -d         delete the named variable
        -c         delete all variables
        name=value set named variable
        name       print variable
Note that arguments and options are executed in order.

と、 -h でも指定しておけば出力される。
-h が将来的に割り当てられると危険かな?と不安を感じたなら --help でも可。

NVRAM の状態を確認する

-p オプション(XMLが良ければ -xp )付きで実行してみる。

$ nvram -p
BootCampProcessorPstates        %0f%00
SystemAudioVolume       %80
backlight-level %ac%04
bluetoothInternalControllerInfo %89%82%ac%05%00%003%14%80%e6P%16 %bb
prev-lang:kbd   ja:0
SystemAudioVolumeDB     %80
efi-apple-recovery      <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>C0554C3A-51F0-4191-9618-2FC1D31C3282</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\MBP112_0138_B16_LOCKED.scap</string></dict></array>%00
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>XXXXXXXX-NNNN-XXXX-XXXX-XXXXXXXXXXXX</string></dict></dict><key>BLLastBSDName</key><string>disk0s3</string></dict></array>%00
fmm-computer-name       mbp
ALS_Data        %056
Test_ALS_Data   %01%00
efi-boot-device-data    %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%04%1c%01%01%06%00%00%00%03%12%0a%00%00%00%00%00%00%00%04%01*%00%03%00%00%008%04%25%1d%00%00%00%00 _%13%00%00%00%00%00%a4B%1b;I %c8O%aa{%db~%8csh%1c%02%02%7f%ff%04%00
bluetoothActiveControllerInfo   %89%82%ac%05%01%00%00%003%14%80%e6P%16 %bb

UUID 、マシン名は伏せた(他は伏せなくて大丈夫?)が、似たような出力になるはず。
Apple サポートのページに書かれたように、スピーカーの音量や起動ディスクなどの情報が含まれるようだ。

漢リセット

漢なら全部リセット!な人向け。 -c オプションで全てリセットしてしまう。

$ nvram -c

実行しても出力は何も出ないが、再起動すれば反映される。
(再起動前後で -p で確認してみると良い)

再起動は Ctrl + Eject でメニューからするなり、そのまま sudo shutdown -r now を実行するなりで。

狙い撃ちリセット

-d オプションで特定の項目のみをリセット。
ここでは、影響の少なそうなスピーカーの音量で説明する。

$ nvram -d SystemAudioVolume

これで、スピーカーの音量がリセットされる。
ここでも、やはり再起動が必要。

音量ゼロにしてる人は、再起動したらジャーンって鳴るはず。

備考

余談だが、書いてる本人は、 Kernel Panic 頻発に悩まされた時に NVRAM リセットしたが、
結局、OSクリーンインストールしなければ直らなかった...

NVRAM リセットは SMC リセットとセットでやることが多いと思うので、
そちらをコマンドで出来る方法をご存知なら是非コメントを!

18
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
15