macOSの主なNVRAM Boot Argumentsまとめ

macOSではカーネル引数 - Boot Arguments(boot-args)コマンドをターミナルで実行することで特殊なモードの指定や処理をさせることが可能だ(iOSにもBoot Argumentsは存在するが脱獄が必要なため非推奨)。

Boot Argumentsは膨大な数に上るため、本記事ではmacOSで指定できるBoot Argumentsコマンドの中でも特に重要であると思われるものをまとめる。

なお、コマンドによっては「Error setting variable iokit/common not permitted」というエラーが表示され、Macをリカバリーモードで起動してリカバリーモード内のターミナルで実行する、あるいはSIPを無効にする必要があるがSIPの無効化についてはここでは割愛するため必要であれば下記記事をご参照頂きたい。

macOSの各種プロテクト無効化方法

主なBoot Argumentsと処理の内容一覧

下記ではmacOSで指定できる主なBoot Argumentsをまとめているが、macOSのバージョンやMacのモデルによっては効果がない、あるいは不具合を起こす可能性があるものも含まれるため実行する際は注意して頂きたい。

なお、管理人は下記のコマンドをmacOS Catalina 10.15.6/macOS Big Sur Beta 6の環境で実際に全て実行している。

コマンド実行内容SIPの無効化
sudo nvram boot-args="-x"常にセーフブートで起動する必要
sudo nvram boot-args="-v"常にVerboseモードで起動する不要
sudo nvram boot-args="-s"常にシングルユーザーモードで起動する必要
sudo nvram boot-args="iog=0x0"MacBookシリーズなどで外部モニターを接続すると蓋を閉じなくても内蔵のモニターが消灯する

macOS Catalina及びBig Surにおいて効果なし
必要
sudo nvram boot-args="maxmem=16"使用されるメモリの容量を制限する

単位はGBであり、このコマンドの場合はmacOSで使用されるメモリが最大16GBに制限される

macOS Catalina及びBig Surにおいて効果なし
不要
sudo nvram boot-args="cpus=1"使用されるCPUのコア数を制限する

元々はマルチプロセッサ向けのコマンドだが現在のMacではコア数が対象となる

このコマンドの場合は「1コア1スレッド」に制限される

この場合、Hyper Threadingにより論理コアが存在していても1スレッドに制限される

「1コア1スレッド」に制限した場合、とんでもなくMacの処理が重くなるため注意

なお、使用されるコアを制限するのであってCPUのコア数自体は正常に認識される
不要
sudo nvram boot-args="arch=x86_64"macOSを強制的に64bitモードで起動する

Mac OS X Snow Leopardなどではカーネル自体は64bit対応だが、デフォルトの動作は32bitになっているため、このコマンドでSnow Leopardなどを強制的に64bitで起動させることができる
必要
sudo nvram boot-args="no32exec=0"32bitアプリの実行を許可する

64bitアプリのサポートが終了したmacOS Catalina以降でこのコマンドを実行した場合、一部のCLIアプリが動作するようになるが大半のユーザーにとっては関係がなく、GUIアプリは依然として実行不可
必要
sudo nvram boot-args='"Graphics Mode"="1024x768x32@30"'解像度を強制的に指定する

このコマンドの場合、1024x768解像度・32bitカラー・リフレッシュレートを30Hzに制限するが、少なくともmacOS Catalina及びBig Surにおいて実行した場合、起動時に画面が真っ暗になりmacOSが固まってしまう

復旧にはキーボード操作によるNVRAMのリセットが必要
必要
sudo nvram boot-args="debug=0x144"カーネルデバッグを有効にする

ソフトウェアデベロッパーが主に使用するコマンドであり、このコマンドの恩恵を受けるには別途Apple Developer ProgramでKernel Debug Kitを入手する必要がある
必要
sudo nvram boot-args=""
sudo nvram -d boot-args
Boot Argumentsに指定した処理を全て削除する

このコマンドによりここまでに紹介したBoot Argumentsコマンドの指定を全て消去し、デフォルトの動作に戻すことが可能
不要

Boot Argumentsの指定でトラブルが起きた場合の対処法

Boot Argumentsの指定でMacが起動しなくなったなどの場合、一度Macを終了させMacの電源ボタンを押してすぐにCommand+Option+P+Rキーを押し続けてNVRAMをリセットすることで大抵の場合、問題なく復旧させることが可能だ。

絶対安全というわけではないがBoot Argumentsの指定は例え起動不可になったとしてもNVRAMをリセットすれば解決するため、管理人は前述のようなコマンドの実行にそれほど抵抗はない。

Boot Argumentsの関連記事

上記でまとめたBoot Argumentsのいくつかは個別の記事で詳しく解説しているため、そちらもご覧頂きたい。

ターミナルコマンドでセーフブートで起動する方法 Macを常にVerboseモードで起動する方法

まとめ

特に有用であると思われるBoot Argumentsをまとめたが、中でも重宝するのは「セーフブート」、「Verbose」関連だろう。

SIPを無効にする必要はあるものの「セーフブートで起動する」という挙動をリカバリーモード内のターミナルで指定できるため、管理人はリカバリーモード中にMacをセーフブートで起動させたいといった場合に使用している。