書く動機
最近のMacbook proはTouchbar搭載と新しい周辺機器の導入などによって、
Linuxの起動後にはキーボードやタッチパッドが使用できないケースが多発します。
さらには、ファンなども動作しないので、パソコンが熱くなっていまいます。
しかし、多数のデベロッパーによる貢献でそのような問題は解決されつつあります。
友人や同僚に同じことが起きた場合に、参考になれば幸いと思い書きました。
ちなみに、初めての投稿なので小さいミスまたは改善点などあれば、コメントしてください。
やること
- 周辺機器・ドライバーのアップデート(keyboard, Tocuhar, Touchpad)
- ファン管理モジュール
- 電源管理モジュール
- (随意) WiFiの改善
#環境
- MacBook Pro 2017
- Kali Linux ver2020.2 - https://www.kali.org/downloads/
1. 周辺機器・ドライバーのアップデート
以下のGit Hubレポジトリを使用します。
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レポジトリを使用します。
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.電源管理モジュール
以下の公式サイトによるモジュールを使用しました。
デビアンの公式レポジトリーを**/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につながるようになりました!