MacBookPro15,4(2019)にUbuntu20.04のインストール

2016年以降のMacには、T2セキュリティチップがあり、簡単にLinuxを実行できなくなりました。
キーボード、トラックパッド、オーディオ、タッチバー、Wifiがそのまま動作しなかった、しかし、ドライバーやLinuxカーネルとパッチをインストールすれば、動作するようになっています。

自分の検証環境では、キーボード、トラックパッド、オーディオ動作したですが、タッチバー動作しませんでした。

- タッチバーのファンクションキー：外付けキーボードのファンクションキーで代用

# 検証環境
- MacBookPro: MacBookPro 15,4(2019) 13.3インチ Model(A2159)

# 資料
-  marcosfad/mbp-ubuntu：https://github.com/marcosfad/mbp-ubuntu
-  各世代動作リスト：https://github.com/Dunedan/mbp-2016-linux

# 準備必要な物
- USB メモリ
- USB キーボード
- USB マウス
- USB Ethernetアダプタ、LANケーブル

インストール途中でMacのキーボードとマウスが動作しないので、USBののキーボードとマウスを使用します。

# パーティションの分割
macOS を起動し、Utilities -> Disk Utilities からパーティションを作成します。

macOSとUbuntuOSでデュアルブート場合、UbuntuをインストールするパーティションをmacOSのパーティションから分割して用意します。


- MacintoshHD 100G
- Linux 150G (フォーマットは何でもいい、Ubuntuインストール時にフォーマットできます)


自分の環境では、mac OSパーティションを削除して、Ubuntu OSのみ運用したいので、ここでパーティション分割しなくてもよいです。（Ubuntuインストール画面でパーティション作成できます）

注意：mac OSパーティションを削除したい場合、事前にデータをバックアップしてください。

# MacBookのT2セキュリティ設定変更
T2セキュリティが有効した場合、Apple認証していないUbuntu USB ディスクから起動できないので、T2セキュリティ設定を変更します。

macOS を再起動し、 Cmd+R をおしながら起動します。

macOS Utilities が表示されたら、上部メニューバーの Utilities -> Startup Security Utility を起動し、以下を設定します。

- Secure Boot : No Security
- Allowed Boot Media : Allow booting from external or removable media

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/f8084447-ba20-0b0b-74dd-86f28756f59d.png)


Utilities -> Terminal を起動し、以下を実行します。

```
csrutil disable
```

# UbuntuインストールUSBの作成
- Ubuntu20.04のダウンロード 

[Ubuntu公式サイト](https://jp.ubuntu.com/download)からUbuntu Desktop 20.04.3 LTS(ubuntu-20.04.3-desktop-amd64.iso)をダウンロードします。

- 起動用USB作成ツール（balenaEtcher）でisoファイルを書き出します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/bb69eb57-0a9b-d056-5271-292a27ae5404.png)

# USBメモリから起動
- Option キーを押しながら起動する。
- USB メモリっぽい EFI Boot が 2 つ表示される、右側を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/6b95db88-db7a-8fda-3b6b-ca9ac29cbcc6.png)

- Grub メニューでは Ubuntu を選択します。
Ubuntu のインストーラが立ち上がるが、新たに接続した USB キーボードとマウスしか反応しないため、USB キーボードとマウスを使用します。

- Ubuntu の Desktop が表示されるが、「Ubuntuをインストール」を選択します。

# インストール先のパーティション設定

- インストールの種類
「それ以外」を選択します。自分でパーティションを削除や作成を行うため、これを選択します。

- パーティションの削除と作成
自分の環境では、mac OSパーティションを削除して、Ubuntu OSのみ運用したいので、ここでMacOSのパーティションを全部削除します。

- [-]より既存のmac OSパーティション(/dev/nvme0n1p1、/dev/nvme0n1p2)を削除
注意：【すべてデータが削除されますので、自己責任で実行してください。】

- [+]より500Mのefiパーティション(/dev/nvme0n1p1)を新規作成 
このあと、rEFInd Boot ManagerをこのESPパーティションにインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/79605178-c5bf-aee5-27ba-d07c86b8d2e3.png)

- Ubuntu20.04本体インストールパーティション(/dev/nvme0n1p2)を新規作成 
残りの全部空き領域をext4フォーマットしてマウントポイント：「/」で設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/2840d3aa-607d-ca01-d7d3-882f46b7af34.png)

- ブートローダのインストール先をUbuntu20.04本体パーティション(/dev/nvme0n1p2)で選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/06b4d2c0-26a9-0aa0-3ce2-82341b88d593.png)

- その他のインストールの設定はお任せ。

# rEFInd Boot Managerのインストール
これでインストールしたUbuntuがMac起動時に起動しないので、rEFInd Boot Managerをインストールをします。

- Option キーを押しながら起動する。
- USB メモリっぽい EFI Boot が 2 つ表示される、右側を選択します。
- Grub メニューでは Ubuntu を選択します。
- Try Ubuntuを選択します。

- rEFIndをダウンロード
[rEFInd公式サイト](http://www.rodsbooks.com/refind/getting.html)から「A binary zip file」よりrefind-bin-0.13.2.zipをダウンロードします。

- rEFIndのインストール
解凍したzipのrefind-installを実行します。
インストールしたrefindをBOOTへリネームします。

```
$ sudo -s
# ./refind-install
# cd /boot/efi/EFI
# mv BOOT BOOT_bak　　（元のBOOTをバックアップ）
# mv refind BOOT
# reboot
```

これでMac起動時にrEFInd Boot Managerが起動され、起動対象Ubuntu（boot\vmlinuz-5.11.0-27-generic）を選択して起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/874565c7-1195-dddd-da53-d9c091ac5e36.png)

# キーボードとトラックパッドのドライバーをインストール
キーボード、トラックパッド、オーディオ、タッチバーのドライバーをDKMSのモジュールとしてインストールします。

https://wiki.t2linux.org/guides/dkms/

- DKMSのインストール

```
sudo apt-get install dkms
```

- BCE (Buffer Copy Engine) モジュールのインストール

キーボード、オーディオのドライバーをインストールします。

```
sudo git clone https://github.com/t2linux/apple-bce-drv /usr/src/apple-bce-0.2
cd /usr/src/apple-bce-0.2
sudo vi dkms.conf
下記dkms.conf内容を入力します。
```

```dkms.conf
PACKAGE_NAME="apple-bce"
PACKAGE_VERSION="0.2"
MAKE[0]="make KVERSION=$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="apple-bce"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"
```

```
sudo dkms install -m apple-bce -v 0.2
```

- apple-ibridgeモジュールのインストール

Touchbar and Ambient Light sensorのドライバーをインストールします。

```
sudo git clone https://github.com/t2linux/apple-ib-drv /usr/src/apple-ibridge-0.1
sudo dkms install -m apple-ibridge -v 0.1
```

- Linuxカーネルにモジュールのロード

```
sudo modprobe apple_bce
sudo modprobe apple_ib_tb
sudo modprobe apple_ib_als
```

これで、キーボード、トラックパッド、オーディオが動作できます。

- PC起動時モジュールロードの設定

```
sudo -s
echo apple-bce >> /etc/modules-load.d/t2.conf
```

- タッチバーモードの設定

```
sudo vi /etc/modprobe.d/apple-tb.conf
下記apple-tb.conf内容を入力します。
```

```apple-tb.conf
options apple-ib-tb fnmode=2
```

```fnmode
0: Only show F1-F12
1: Show media and brightness controls, use the fn key to switch to F1-12
2: Show F1-F12, use the fn key to switch to media and brightness controls
3: Only show media and brightness controls
4: Only show the escape key
```

トラックパッドはクリックができるだけで、2 本指タップや 2 本指スクロールができないため、以下のカーネルパッチをインストール必要があります。

# Linux Kernelとパッチのコンパイル＆インストール
Kernel にパッチを当てて、トラックパッドを快適(2 本指タップや 2 本指スクロール)に使います。
https://wiki.t2linux.org/guides/kernel/
[linux-mbp-arch](https://github.com/aunali1/linux-mbp-arch)Kernelとパッチをインストールします。（Linuxカーネルコンパイル時間がかかる）

```
sudo apt-get install build-essential libncurses-dev libssl-dev flex bison libelf-dev dwarves
pkgdir=/
git clone https://github.com/aunali1/linux-mbp-arch
cd linux-mbp-arch
source PKGBUILD
wget https://www.kernel.org/pub/linux/kernel/v${pkgver//.*}.x/linux-${pkgver}.tar.xz
tar -xf $_srcname.tar.xz
prepare
make all -jX # change "X" to the number of cpu threads you have.
cd ..
_package # use sudo if installing directly
cd ..
_package-headers # use sudo if installing directly
```