Macでプログラミングのローカル環境を構築しようと「Virtual BOX」をインストールしようとしたらエラーになってしまった。解決したので、その時にした対処を全て紹介する。
調べてみると、MacのOSが「El Capitan」以降はSIP(System Integrity Protection)と呼べれるセキュリティが強化されているとかで、一度はエラーになってしまうということだった。
このような画面が出た。
Macの左上りんごのアイコンから「システム環境設定」→「セキュリティとプライバシー」に入ると以下のような画面が表示されていた。
「読み込みがブロックされました」などと書いてあり、「許可」というボタンが用意されていた。ググった結果では、これを許可すればインストールができるようになるという情報がほとんどだったのだが、「許可」をクリックするも、再びエラーとなってしまった。PCを再起動してもダウンロードし直しても同じ結果だった。
さらに色々調べていると、SIPを一時的にOFFにすることでインストールが可能という情報がいくつか出てきた。方法は、Macをリカバリモードで起動して(Commandキー+R)、ユーティリティーからターミナルに行き、「$ csrutil disable」とSIPを無効にするコマンドを入力して一時的にOFFにするというものだった。そしてインストール後にONに戻すというもの(ONにするにはやはりリカバリーモードで「$ csrutil enable」と入力する)。
その手順に従い、SIPを一時的にOFFにしてから「Virtual BOX」をインストールしてみると、
ようやく「Virtual BOX」のインストールに成功した。
しかし、、、、、
「Virtual BOX」をインストールして、さらに「Vagrant」のインストールに成功し、手順に仮想マシンを起動するコマンドを従いターミナルに打ったのだが、以下のようなエラーが出てしまった。。。。
SIPをONにしていたのが原因だと思われたので、SIPをOFFに してから、ターミナルで「vagrant halt(シャットダウン)」を実行し、再度「vagrant up(立ち上げ)」すると、無事仮想マシンの起動に成功した。その後はまたSIPをONにしておいた。
しかし、その後の利用でもSIPをONにしていると毎回「vagrant up」する時にエラーになってしまう。つまりSIPをONにするためにPCを再起動していて、その後に「Vagrant up」をする必要があるので、常にSIPをOFFにしておかなければならない状況となっていた。常にSIPをOFFにしているのもなんだか不安なので他の方法を考えることにした。
ググっているとSIPは一部を指定してOFFにできるということだった。KEXT(Kernel EXTension)と呼ばれるカーネル(OSの核となる部分)を拡張するための装置だけを指定してSIPをOFFにすると、他のセキュリティは保たれたまま(それでも心配だが)「Virtual BOX」がインストールできたり、「Vagrant up」の際にもエラーにならないといったような情報があった。ターミナルで「$ csrutil enable --without kext」とリカバリーモードでコマンド入力して、再び「vagrant up」を試みた。しかし、どういうわけか再度エラーの表示が出てしまったのだった。もはや八方塞がりでググっても対処方法を探すことができないので諦めようと思っていたのだが、一つ試せそうな方法を思いついた。
非常に簡単な方法なのだが、Mac OSをアップグレードしてみたのだ。OSは「high sierra」だったのだが、「mojave」に変更した。すると、SIPをOFFにせずに「Virtual BOX」をインストールすることができ、「Vagrant up」にも成功した。ちなみにアイコンが「Vertial BOX(日本語)」だけではなく「Vertial BOX VM(英語)」も追加されていた。どういうわけかはわからないが、「Vertial BOX(日本語)」を起動させてると「Vagrant up」でエラーを出すのだが、「Vertial BOX VM(英語)」だとエラーにはならない。そのため、「Vertial BOX VM(英語)」を起動させて使用するようにしている。そのうち原因とかわかってくると思うのだが。