LoginSignup
8

More than 3 years have passed since last update.

2016年以降のMacBookAir/MacBookProへのUbuntu 20.04のインストール

Posted at

こちらは、MacBookAir9,1(2020)で実践しましたが、MacBookProでも動作すると思います。
2016年以降のMacには、T2セキュリティチップがあり、単純にはLinuxを実行できなくなりました。
しかし、有志でドライバやLinuxカーネルへのパッチが作られ、おおよそのハードウェアは動作するようになっています。

各世代のMacBookAir/Proで動作するものリスト https://github.com/Dunedan/mbp-2016-linux

なお、自分の環境では、以下は動作しませんでした。

  • WiFi : USBの外付けWiFiアダプタで代用

資料

必要なもの

  • USB メモリ
  • USB キーボード
  • USB マウス
  • USB WiFiアダプタ、もしくは、Ethernetアダプタ

USBキーボードとマウスは、ドライバが動作するまで必要になります。

パーティションの分割

macOS を起動し、Utilities -> Disk Utilities からパーティションを作成。

  • MacintoshHD 50G
  • Linux exfat 200G

( exfat にしたのは特に理由はありません )

Boot 可能な USB メモリの作成

Ubuntu 20.04 Desktop を使用。USB メモリの作成手順については、Ubuntu サイトの上部の Download タブを開き、TUTORIALS の Create a bootable USB stick on ...を参照。

BIOS の設定的なの

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

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

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

Utilities -> Terminal を起動し、以下を設定する

csrutil disable

USB メモリの起動と、インストーラーの起動

Option キーを押しながら起動する。
USB メモリっぽい EFI Boot が 2 つ表示される(2 つ表示されない場合は、電源を長押しして再起動する)ため、右側を選択する。

Grub メニューでは Ubuntu を選択する。

Ubuntu のインストーラが立ち上がるが、新たに接続した USB キーボードとマウスしか反応しないため、これを使用する。

Ubuntu の Desktop が表示されるが、Try Ubuntuを選択する。

左下のメニューから、Terminal を起動し、Bootloader なしのオプションを追加して Ubuntu のインストーラを起動する。

sudo ubiquity -b

インストール先の設定

インストール先の選択で、Something else を選択する。

/dev/nvme0n1p3 が分割したパーティションに当たるため、これを、Format Ext4、Mount Path / に設定する。

Boot Loader のインストール先は /dev/nvme0n1p3 を選択する。

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

GRUB のインストール

再び USB メモリでTry Ubuntuで Ubuntu を起動し、Terminal を起動する。

以下のコマンドで、パーティション nvme0n1p1 、nvme0n1p2 、nvme0n1p3 があることを確認する。

lsblk

ここではパーティションは以下としている

  • nvme0n1p1 : EFI
  • nvme0n1p2 : macOS
  • nvme0n1p3 : Ubuntu

ここで EFI と Ubuntu のパーティションをマウントして、grub-install を行う。
この時 --force を付ける必要があった。

sudo -s
mount /dev/nvme0n1p3 /mnt
mount /dev/nvme0n1p1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install --force /dev/nvme0n1
update-grub

PC を再起動する。このとき、Option キーを押しながら起動し、EFI Bootを選ぶ。すると、Ubuntu が起動するようになる。この Ubuntu ではキーボードとトラックパッドがまだ使うことができないため、USB のキーボード、マウスを利用する。

また、私の場合には WiFi が使えるようにならなかったため、USB の WiFi アダプタを使用する。

キーボードとトラックパッドが動くまで

今動いているカーネルのバージョンを確認する。

uname -r

bce というモジュールをビルド、インストールする。

git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git
cd mbp2018-bridge-drv
make
sudo cp bce.ko /usr/lib/modules/5.4.0-37-generic/kernel/drivers/pci/bce.ko

起動時にモジュールを読み込むようにする。

# vi /etc/modules
bce

ここのドライバをインストールする。

sudo apt install dkms
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git /usr/src/apple-ibridge-0.1
sudo dkms install -m apple-ibridge -v 0.1

再起動する。上の 2 つのモジュールが正しく読み込まれればキーボードとトラックパッドが動作する。ただしトラックパッドはクリックができるだけで、2 本指タップや 2 本指スクロールができないため、以下のカーネルパッチを当てる必要がある。

Kernel にパッチを当てて、トラックパッドを快適に使う

自分の環境では、全てのパッチを当てると動作しなかったため、以下のパッチのみを適用している。

3002-applesmc-make-io-port-base-addr-dynamic.patch
3003-applesmc-switch-to-acpi_device-from-platform.patch
3004-applesmc-key-interface-wrappers.patch
3005-applesmc-basic-mmio-interface-implementation.patch
3006-applesmc-fan-support-on-T2-Macs.patch
4001-touchpad.patch
4002-keyboard-backlight.patch

パッチと、Linux Kernel を入手する。

git clone https://github.com/aunali1/linux-mbp-arch
git clone https://github.com/torvalds/linux
cd linux
git checkout v5.6

トラックパッドは USB デバイスとして認識する。
マシンによって、ProductID が異なるので、dmesg でそれを確認する。ここでは、 0x0280 であることが確認できる。

# dmesg
[    2.546351] usb 5-5: New USB device found, idVendor=05ac, idProduct=0280, bcdDevice= 9.20
[    2.546353] usb 5-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    2.546355] usb 5-5: Product: Apple Internal Keyboard / Trackpad
[    2.546356] usb 5-5: Manufacturer: Apple Inc.
[    2.546357] usb 5-5: SerialNumber: FM7020402GHN1QWAH+CML

これをパッチ中の適当なデバイスのものを上書きする。このリストにあるマシンならば変更は不要。自分は USB_DEVICE_ID_APPLE_WELLSPRING10_T2_Aに上書きした。
本来ならPRにすべきところなのだが、patchの作り方を心得ていなくて出せていない。

# vi linux-mbp-arch/4001-touchpad.patch
 #define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO        0x0273
 #define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS        0x0274
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A  0x0280
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B  0x027b
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C  0x027c

パッチを適用する。

patch -p1 --verbose < 3002-applesmc-make-io-port-base-addr-dynamic.patch
patch -p1 --verbose < 3003-applesmc-switch-to-acpi_device-from-platform.patch
patch -p1 --verbose < 3004-applesmc-key-interface-wrappers.patch
patch -p1 --verbose < 3005-applesmc-basic-mmio-interface-implementation.patch
patch -p1 --verbose < 3006-applesmc-fan-support-on-T2-Macs.patch
patch -p1 --verbose < 4001-touchpad.patch
patch -p1 --verbose < 4002-keyboard-backlight.patch

ビルドする設定が設定できるが、特に標準のままで OK。

make menuconfig

カーネルをビルドする。-j16は 16 並列のビルドを行うことを示すので、CPU のスレッド数を設定する。自分の場合は別マシンでビルドを行っていた(MacBookAir だと貧弱)。

make-kpkg -j 16 --rootcmd fakeroot --initrd --append_to_version=-mbp20 kernel_image kernel_headers

ビルドが終わると、Debian パッケージができるのでインストールする。

sudo apt install ./linux-headers-5.6.0-mbp20+_5.6.0-mbp20+-10.00.Custom_amd64.deb ./linux-image-5.6.0-mbp20+_5.6.0-mbp20+-10.00.Custom_amd64.deb

次の起動でこのカーネルが起動するように Grub を設定し、再起動する。

sudo grub-reboot 2
sudo reboot

Ubuntu 起動後、目的のカーネルで起動しているかどうかを確認する。

uname -r

bce を再ビルドしてインストールする。再ビルドインストールの方法は上と同じ。

spi ドライバが正しく起動しないことがあったため、再インストールする。

sudo dkms uninstall -m apple-ibridge -v 0.1
sudo dkms install -m apple-ibridge -v 0.1

再起動する。

sudo grub-reboot 2
sudo reboot

正しくトラックパッドのパッチがあたっている場合、bcm5974 というトラックパッドが認識する。

# xinput list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ bcm5974                                   id=12   [slave  pointer  (2)]

大丈夫そうならば、Grub で起動するカーネルをビルドしたものに変更する。grub-customizer を使うと直感的に変更できるので便利です。

sudo apt install grub-customizer
sduo grub-customizer

キーボードとトラックパッドのカスタマイズ

# Functionキーをメディアキーではなく、Functionキーとして使う
echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode

# CmdキーをAlt、OptionキーをSuperに割り当てる
echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

# 2本指タップでの右クリックを有効にする
xinput set-prop 'bcm5974' 'libinput Tapping Enabled' 1

# ダブルタップドラッグを無効化する
xinput set-prop 'bcm5974' 'libinput Tapping Drag Enabled' 0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8