ターミナルコマンドでセーフブートで起動する方法

Macでは起動時にShiftキーを押し続ければセーフモードでmacOSを起動することができるが、ここではターミナルコマンドでセーフモード(セーフブート)を起動する方法を紹介する。

なお、eGPU(外付けGPU)を接続しているとセーフモードの起動が上手くいかない場合があるので、あらかじめeGPUは外しておこう。

ターミナルコマンドでセーフモードを起動する手順

SIPを無効にするかリカバリーモードでコマンドを実行する

下記コマンドをターミナルで実行すると次回起動時にMacが自動的にセーフモードで起動する。

sudo nvram boot-args="-x"

ただし、上記ターミナルコマンドは通常起動時においてはSIP(System Integrity Protection)というプロテクトによりエラーが出るため、リカバリーモードのターミナルで実行するか、SIPを無効にする。

上記写真ではリカバリーモード内のターミナルで実行している(リカバリーモードでのターミナルにおいてはsudoは必要ない)。

SIP無効化方法

リカバリーモード内のターミナルから実行するのが一番手っ取り早いが、SIPを無効にしてコマンドを実行したい場合は下記の手順でSIPを無効にしよう。

Macを起動・または再起動してすぐにCommand+Rキーを押し続け、リカバリーモード(macOS復旧)に入る。

「日本語」をクリックして次へ。

管理者ユーザーを選択して次へ。

メニューバーの「ユーティリティ」から「ターミナル」を起動し以下のコマンドを実行する。

csrutil disable

英文が出たらMacを通常再起動させる。

セーフモードでの作業が終わったらフラグコマンドを消す

Macが無事にセーフモードで起動し、セーフモード内での作業が終わったらセーフモード内でターミナルを起動し下記のコマンドを実行してセーフモードを解除する。

sudo nvram boot-args=""
sudo nvram -d boot-args

なお、セーフモード内ではSIPが有効の状態でも上記コマンドは実行可能だ。

今回セーフモードを起動するために使用したフラグコマンドは解除しない限り永遠にセーフモードで起動してしまうため、上記のコマンドでフラグコマンドを解除する必要がある。

ちなみにセーフモード内では下記のコマンドで、NVRAMに書き込まれたフラグコマンドを確認可能だ。

nvram boot-args

先ほどのコマンドでセーフモードを解除したらMacを通常再起動して完了。

なお、SIPを無効にする方法で上記作業を行った場合は再度リカバリーモード内のターミナルで下記のコマンドを実行してSIPを再度有効にしよう。

csrutil enable

まとめ

ターミナルコマンドを使ってセーフモードを起動する方法は多少の手間がかかり、あまり有用ではないかもしれないが、例えばリカバリーモードでの作業中にセーフモードで起動したいといった場合にリカバリーモード内のターミナルで簡単にセーフモードを指定できるといったメリットがある。

トラブルが起きた時に備えて覚えておいても損はないだろう。