Kali Linux ver2020.2をMacBook pro 2017にDual Boot(VMではなく)

# 書く動機

最近のMacbook proはTouchbar搭載と新しい周辺機器の導入などによって、
Linuxの起動後にはキーボードやタッチパッドが使用できないケースが多発します。
さらには、ファンなども動作しないので、パソコンが熱くなっていまいます。
しかし、多数のデベロッパーによる貢献でそのような問題は解決されつつあります。
友人や同僚に同じことが起きた場合に、参考になれば幸いと思い書きました。
ちなみに、初めての投稿なので小さいミスまたは改善点などあれば、コメントしてください。

# やること

1. 周辺機器・ドライバーのアップデート(keyboard, Tocuhar, Touchpad)
2. ファン管理モジュール 
3. 電源管理モジュール
4. (随意) WiFiの改善

#環境

- MacBook Pro 2017
- Kali Linux ver2020.2 - https://www.kali.org/downloads/

## 1. 周辺機器・ドライバーのアップデート

以下のGit Hubレポジトリを使用します。

https://github.com/cb22/macbook12-spi-driver

```
git clone https://github.com/cb22/macbook12-spi-driver
```

そして、カーネルバージョンを確認します。
Kali Linux ver2020.2は*5.3*です。
カーネルが*4.11*以下であれば,ブートする際には*intremap=nosid*と、
*noapi*をカーネルオプションに入っていないことを確認する必要があります。

---

次にファイルシステムイメージ**/etc/initramfs-tools/moduleに含ませるspiを書き足します。
それから、dkmsというカーネルモジュールサポートを入れ、Appleの周辺機器をインストールします。

```
echo -e "\n# applespi\napplespi\nspi_pxa2xx_platform\nintel_lpss_pci" >> /etc/initramfs-tools/modules

apt install dkms
git clone https://github.com/cb22/macbook12-spi-driver.git /usr/src/applespi-0.1
dkms install -m applespi -v 0.1
```

以上の行いによって、以下のことができるようになりました。

-キーボードでのタイピング
-TouchBar (Fnを押して、Fnキーが使える）
-基本的なタッチパッド機能（2,3,4本指のスクロール動作）

# 2.ファン管理モジュール

最初に、applesmcとcoretempというモジュールが存在するか確認します。

```
lsmod | grep -e applesmc -e coretemp
```

存在しなければ、**/etc/modules/**に以下のものを足します。

```
coretemp
applesmc
```

次に以下のGit Hubレポジトリを使用します。

https://github.com/linux-on-mac/mbpfan

```
git clone https://github.com/linux-on-mac/mbpfan
```

そして、リポジトリに入って、

```
make && sudo make install
sudo make tests
```

管理ファイル**/etc/mbpfan.conf**に入って、
適度にファン速度と反応温度を買えることができます。

**注意**: macbookはファンが二つついているので、min_fan1, min_fan2とそれぞれ左右の情報を足します。

```
min_fan1_speed = 4500
min_fan2_speed = 4500	
max_fan1_speed = 5500
max_fan2_speed = 5500	
low_temp = 63			# try ranges 55-63, default is 63
high_temp = 66			# try ranges 58-66, default is 66
max_temp = 86			
polling_interval = 1	# default is 1 seconds
```

普通はファン速度2000rpmなんですけど、自分は冷やしたいので4500rpmに上げました。
あと、max_fan*はたまにいきなりmax_tempに到達するので、6200はファンに悪いと思い、下げました。

Boot時にmbpfanを実行するために、mbpfan.debianをmbpfanに改名して、

```
sudo update-rc.d mbpfan defaults
```
と実行

実行ファイルは**/usr/sbin/mbpfan**にあります。

こんな感じで、ファン管理はお終いです。

# 3.電源管理モジュール

以下の公式サイトによるモジュールを使用しました。

https://linrunner.de/tlp

デビアンの公式レポジトリーを**/etc/apt/sources.list**に足します。

```
deb http://ftp.debian.org/debian buster-backports main
deb http://ftp.debian.org/debian stretch-backports-sloppy main
```
インストール

```
apt update && apt install tlp tlp-rdw
```

起動

```
systemctl start tlp
```

#4.WiFiの改善

デフォルトの状態だと、WiFiが届きません。

参考：Wi-Fiの出力を下げることによる利点とは？  -gigazine.net-
https://gigazine.net/news/20190411-wi-fi-power/

なので、WiFiの出力をさげました。

```
iwconfig wlan0 txpower 10
```
結果：

```
wlan0     IEEE 802.11  ESSID:"router-xxx"  
          Mode:Managed  Frequency:2.422 GHz  Access Point: xx:xx:xx:xx   
          Bit Rate=72.2 Mb/s   Tx-Power=10 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=31/70  Signal level=-79 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:64  Invalid misc:0   Missed beacon:0
```

ちょっと離れていても、WiFiにつながるようになりました！