macOS MojaveとUbuntu 18.04をデュアルブート(新しいMac等は非対応)

**注意！: ここに書かれている方法に従っても、Macの機種によってはUbuntuを起動することができない場合があります。下にも書いてあるように、最近のMacだとインストールさえ現時点では難しいようです。私はMacBook Proの2015年モデルで行っています。デュアルブートするときは自己責任で、バックアップを常にとりながら行ってください。**
# MacBookでいかにUbuntuを使うか
私のメイン機はMacBook Pro Retina(2015)で、開発するときは極力それを使いたい、という個人的な希望から、開発環境はなるべくmacOSに対応するものを構築してきました。それでも、Ubuntu/Linuxを使う必要はいずれ出てきます。私の場合、ロボットを扱うのでROSは必須です。ROSはmacOSには正式対応していないので、MacBookでROS系の開発をするために今回、macOSとUbuntuのデュアルブートができるようにしました。
これらのOSの組み合わせでデュアルブートするための記事は今までもいくつもありましたが、このmacOS MojaveとUbuntu 18.04という**最新バージョン**(2019年2月現在)の組み合わせで書かれた記事が見当たらなかったため、また、他の記事で書かれているよりも**シンプルに**デュアルブートできたので、自分のための備忘録も兼ねて書きました。

他に書いてある、rEFIndというツールを使う必要はなく、懸念事項だったWifiもドライバのインストールなどをすることなく動いてくれたので、意外とあっさりデュアルブートに成功しました。
(2019.3/1 追記：iSightカメラのドライバーが付属していないらしく、そのままだとカメラが使えませんでした。おそらくネットのどこかにiSightカメラ用ドライバーが転がってると思いますが、ビデオ通話するときはmacOSに戻せばなんとかなるのでやってません。）
![IMG_3026.jpg](https://qiita-image-store.s3.amazonaws.com/0/225983/f48c4d59-364d-2eda-a47f-6f32139777b7.jpeg)

起動時にoptionキーを押すことで、以下のような画面が出てきて、UbuntuかmacOSか選べます。（何も押さずに起動すると、そのままUbuntuが起動します）
![IMG_3027.jpg](https://qiita-image-store.s3.amazonaws.com/0/225983/21272a49-ddc4-24d8-fa74-2ca98667448b.jpeg)

# ※軽い作業なら、バーチャルマシンの方が手軽
今まではバーチャルマシンを使ってきました。macOS内の一つのウィンドウとして扱えるので、パーティションを作成したり、OSを切り替えるためにいちいちPCをシャットダウンしたり、…という手間がないので、あまりヘビーな計算をさせる必要がないなら、バーチャルマシンを使った方が良いと思います。
私は今まで[VMware Fusion](https://www.vmware.com/jp/products/fusion.html)を使っていましたが、フリーなものとしては[VirtualBox](https://www.virtualbox.org)などもあります。

# macOS MojaveとUbuntu 18.04のデュアルブート設定方法
## 1. 必要なもの
* USBスティック：Ubuntuのイメージを保存するために使います。私は16GBのものを使いましたが、4GBもあれば十分なはずです。
* PCのバックアップ：この作業をする前に、**事前にバックアップ**を取っておくことを強くお勧めします。（デュアルブートをしない場合でも、Time Machineを使ったバックアップは常にするべきですが）
* Mac：私が使用しているのは、MacBook Pro (Retina, 13-inch, Early 2015)です。これと違うモデルだと、手順などが若干変わる可能性があります。新しいモデルだと、キーボードが使えない、Ubuntuが起動しないなどの問題があるようなので、デュアルブートがうまくいかない可能性があります。
* 時間：半日もあれば、（うまくいけば）確実に終わると思います。macOSの再インストールが必要になった場合は、Time Machineからの復元などに時間がかかるので、Macがすぐに必要になる時はやめておきましょう。

# ※新しいモデルのMacの場合
私のMacbook Pro (Retina, 13-inch, Early 2015)ではキーボードやタッチパッドやWifiドライバなどがそのまま動きましたが、これと異なるモデルだとドライバが対応しておらず、<b>そのままだと使えない</b>場合があるようです。タッチバー世代のMacbook Proではキーボードなどがそのままでは使えなかったり、**最新モデルだとインストールさえ現時点では難しい**ようです。。私のモデルでは特に問題なかったので何もしていませんが、解決につながるかもしれない参考リンクをこちらに貼っておきます。
* [Linux-On-MBP-Late-2016.md](https://gist.github.com/roadrunner2/1289542a748d9a104e7baec6a92f9cd7): Macbook Pro Late 2016にLinuxを入れる時の、必要なドライバなどの設定方法をまとめてある。
* [State of Linux on the MacBook Pro 2016 & 2017](https://github.com/Dunedan/mbp-2016-linux): Linuxを最近のMacBook Proで使おうとした場合、どういう問題が起きるかをまとめてある。
* [macbook12-spi-driver](https://github.com/cb22/macbook12-spi-driver): 12" MacBookのキーボードとトラックパッド用のドライバ。MacBook Proでも使えると、"State of Linux on the MacBook Pro 2016 & 2017"に述べてある。
* [Keyboard and touchpad are not working when booting from live USB](https://apple.stackexchange.com/questions/310290/keyboard-and-touchpad-are-not-working-when-booting-from-live-usb)(stackexchange): 新しいMacBook Proを使用した場合、キーボードなどが使えないとの、質問フォーラムでの指摘。
* [MacBook Pro 2018にUbuntuがインストールできない話](https://qiita.com/KazukiOta/items/fed98943037d7e4ad013)
* [https://www.omgubuntu.co.uk/2018/11/apple-t2-chip-cant-boot-linux](https://www.omgubuntu.co.uk/2018/11/apple-t2-chip-cant-boot-linux): 2018のMBPだとセキュリティを弱めればUbuntuを起動できるが、SSDにアクセスできないためインストールはできないとのこと。
* https://github.com/Dunedan/mbp-2016-linux/issues/71#issuecomment-507325112 2018のMBPのSSDにアクセスできない問題を解決するかもしれないカーネルパッチ。PC自体を壊すかもしれないので、あまり使うべきではないと思う。

## 2. バックアップをとる、十分な空き容量を確保する
私は、大学のPCでWindowsとUbuntuをデュアルブートさせようとした時に、要領をよく分かっていなかったので、PC全体のメモリを消してしまった前科があります。
一連の作業を始める前に、Time Machineなどで必ずmacOSのバックアップを取っておきましょう。（ちなみに、ターミナルで`sudo sysctl debug.lowpri_throttle_enabled=0`と打つことで、Time Machineのバックアップが一時的に速くなります。）
また、Ubuntuのためのストレージを、Macのストレージ容量から分け与える必要があるので、Ubuntuのためのストレージを空けておく必要があります。

## 3. UbuntuのイメージをUSBスティックに書き込む
1. [Ubuntu 18.04](http://releases.ubuntu.com/18.04/)のデスクトップ版のイメージをダウンロードする。
2. USBの中身は全て上書きされるので、保存内容のバックアップを取っておく。
3. [Etcher](https://www.balena.io/etcher/)などを使って、USBにその.isoファイルを書き込む。（FinderなどからUSBに直接コピーしようとしても失敗します）
<img width="803" alt="Screen Shot 2019-02-17 at 8.50.48 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/225983/6a29081f-a1ef-fbfa-5878-5a0ecbfc173c.png">
ちなみに、私はかつてこの段階で、USBではなくPCのハードドライブ自体にイメージを書き込もうとして、PCを使い物にならなくしたことがあります。（Etcherを使えば、基本的にそのような失敗はありえません。優秀。）
4. イメージが出来上がったら、ここから先に実行する、パーティション分割などの後戻りが難しい作業をする**前に、このUSBイメージから起動できるか確認**してみます。電源を消して、USBを指した状態でoptionキーを押しながら電源キーを押してみてください。起動ディスクを選ぶ画面になったらUSBの方を選び、「Try ubuntu without installing」で一通り動くか確認してみてください。ここで動いたから必ずインストールも成功する、という訳でもありませんがここで起動しなかったらインストールがそもそも不可能なので、以降で後戻りしづらい操作を加える前に確認しておくのが良いと思います。

## 4. Ubuntu用のパーティションを作成
各PCには、HDDなりSSDのような保存装置が、大抵は一つだけついていますが、パーティションに分割することで、それぞれに別のOSを割り当てることが可能になります。
各パーティションには異なったファイルシステムを用いることができます。macOSのファイルシステムはAPFS(Apple Filesystem)ですが、Ubuntuはそれに対応していません。　MS-DOS(FAT)形式のパーティションを作ってやる必要があります。

1. Disk Utilityを開いて、左のパネルで、macOSを含んだ最上位のストレージデバイス（下の画像でいうとAPPLE SSD SM025...）を選んだ上で、Partitionを選択します。（スクリーンショットは、パーティションを実施した後で撮影したものので、細かい部分は異なるかもしれません）
<img width="855" alt="Screen Shot 2019-02-17 at 9.03.58 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/225983/b0bceb2f-afdd-9912-63f0-20083851fbb1.png">

1. 左下の＋ボタンで新しいパーティションを追加し、容量を調整します。新しいパーティションのFormatは、MS-DOS(FAT)を選択します。
<img width="796" alt="Screen Shot 2019-02-17 at 9.08.06 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/225983/cc950ac5-2ecf-4e19-2e91-8fe3cb43b75c.png">

…ここでうまくパーティションに成功すれば次のステップに進んで良いのですが、私の場合ここで`APFS Container Resize error code is 49174`というエラーが出て、失敗してしまいました。
![IMG_3014.jpg](https://qiita-image-store.s3.amazonaws.com/0/225983/9c4635e8-bf5c-de1d-1ee1-1ef00f5f3bd7.jpeg)
このエラーは、検索しても解決することができませんでした。なので、泣く泣くディスク全体のリセットをすることにしました。（ここに来て、さっきのバックアップが有効活用できます）

というわけで、
### 4.1 ディスクを消去、macOSを再インストールする(前のステップが失敗した場合)


めげずに進めましょう。
1. [ディスクを消去](https://support.apple.com/ja-jp/HT208496)します。起動する時に「command (⌘) + R」を押して復元モードに入り、Disk Utilityを起動し、APFS形式で起動ディスクをフォーマットします。
2. 消去が終わり、「command (⌘) + R」を押して起動すると、何もOSが入っていない状態なので、「Internet Recovery Mode」に入ります。その際、インターネットに接続する必要があリマス。
3. Internet Recovery Modeで、[macOSを復元](https://support.apple.com/ja-jp/HT201314)。「macOSを再インストール」を実行。
4. 多分、古いバージョンのmacOSがインストールされているので、App Storeから最新のmacOS Mojaveにアップデートします。
5. Mojaveが起動したら、前のステップに書いた通り、Ubuntu用のパーティションを作成。（私の場合、作成した後にMS-DOS(FAT)ではなくAPFSのパーティションが何故か作成されていたが、その後ファイルシステムのフォーマットを変えられたので、それによってMS-DOS(FAT)を選べた）ちなみに、パーティションの容量の割り当てをこの後に変えようとしたら、前項のエラー(49174)がまた出てきて変えられませんでした。macOSとUbuntuにはどれくらいの容量を割り当てたきかよく考えてからパーティションを作りましょう。
6. パーティションが無事作成されたら、Time Machineから自分のデータを復元。

## 5. Ubuntuのインストール
1. 例のUSBを挿した状態で、optionを押しながら起動します。すると、USBから起動する選択肢が表示されるので、そこから起動します。
2. とりあえず「Try Ubuntu without installing」を選択し、Ubuntuを起動します。USBからUbuntuを起動し、試すことができます。いい感じだったら、インストール作業に移りましょう。
![Ubuntu_14.04_InstallUEFI_SelectBoot.jpg](https://qiita-image-store.s3.amazonaws.com/0/225983/e693c8a6-476e-abfb-bc0f-ebf5f13042f1.jpeg)
2. インストール作業については数多の解説記事が書かれているので、省略します。インストール先を選ぶ画面で、「Erase disk and install Ubuntu」を選ぶとmacOSもろともパーティションが全て消えてしまうので選ばないでください。「Something else」を選んで、Ubuntu用に割り当てたパーティションを選択します。![ub3.png](https://qiita-image-store.s3.amazonaws.com/0/225983/7179d19b-0da3-d519-b591-b8f7e2867dbf.png)
3. そのパーティションを選択して、「edit partition」の画面に入り、「Use as: Ext4 journaling file system」、「Format the partition」にチェックを入れ、「Mount point: /」とします。（他の設定でも大丈夫かもしれませんが、私はこれでうまくいきました）ここでSizeを変更するとmacOSのAPFSと干渉しそうなので、やめておきます。![IMG_5567.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225983/dc266332-6e82-a67d-4847-9e1b61500167.png)
4. 上の手順でのDevice, Type, Mount point, Format?の設定が反映されていることを確認して（青い矢印の部分）、「Device for boot loader installation」でUbuntu用のパーティションを選び（赤い矢印の部分）、Install Nowします。![IMG_5568.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225983/76354f65-9987-ae27-a1f7-0f5df69faa41.png)
3. サードパーティのドライバをインストールするか聞かれますが、従っておくのがよいと思います。

## お疲れ様です
デュアルブートができるようになったはずです！
macOSやUbuntuのOSアップデートをする時は、念の為両方ともバックアップをとってからするようにしてください。

## おまけ　Swap領域の追加・拡張（3/2 追記）
動作がもっさりしている場合、RAMが不足している場合があります。スワップ領域を設定することで、物理メモリの代わりにストレージ領域をRAMとして使えるようになるので、応急処置的ではありますが多少は動作を改善させられます。
私の場合、最初から勝手に2GBのスワップ領域を作ってくれていましたがちょっと足りなかったので、この記事（[Change swap size in Ubuntu 18.04](https://bogdancornianu.com/change-swap-size-in-ubuntu/)）を参考に、6GBまで増やしてみました。またもっさりしたら増やしてみるかもしれません。

## おまけその２ Ubuntu 16.04の場合（2019/05/04追記）
その後必要にかられて16.04もインストールしました。その時もそのまま動いてくれたのですが、処理が重くなってもファンが回らないという問題がありました。CPU温度を計測して、必要に応じてファンを回してくれるプログラムがあったのでそれへのリンクを貼っておきます。あまり
* [GitHub: dgraziotin/mbpfan](https://github.com/dgraziotin/mbpfan)
* [mac book proにubuntuを入れるとなぜかファンがうまく回らないので設定してみた ](https://uesitasayuu.blogspot.com/2017/05/mac-book-proubuntu.html)

## おまけその３ 気に入ったテーマを紹介(2019/05/04追記)
GNOME TweaksをUbuntuソフトウェアセンターからインストールしたうえで、以下のテーマやアイコンをインストールすると、GNOME Tweaksから有効化できるようになります
* [papirus-icon-theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
* [materia-theme](https://github.com/nana-4/materia-theme)

# 参考リンク
* [How to Install and Dual Boot Linux and Mac OS](https://www.lifewire.com/dual-boot-linux-and-mac-os-4125733) -lifewire
* [Ubuntu 17.10とmacOS High Sierraでデュアルブート構成にしてみた](https://hnakamur.github.io/blog/2018/03/23/ubuntu-17.10-mac-os-high-sierra-dual-boot/) -hnakamur's blog at github
* [ひょんなことからMacにUbuntuをインストールすることになった。後悔はしていない。](https://www.karelie.net/move-from-osx-to-ubuntu/) -karelie
* [Speed up Time Machine backups by 10x on macOS High Sierra](https://blog.shawjj.com/speed-up-time-machine-backups-by-10x-f6274330dc6f) -blog.shawjj