Boot Linux on MacBook Air 2020

MacBook Air 2020 (Intel) で Linux (Ubuntu) をデュアルブートできるようにしたのでそのメモ書きです.

万が一のために, ディスクのデータはすべてバックアップをとっておいてください.

Prepare Devices

Linux をデュアルブートするために, いくつかハードウェアが必要になります.

USB メモリ

Linux のインストーラを書き込むために必要です. 8 GB 以上あれば十分です. インストーラを書き込むと既存のデータが消えてしまうので, バックアップが必要です (そんなに高価なものではないので新しく購入するほうがいいかもしれません).

外付けキーボード

搭載キーボードは, デフォルトでは機能しないので必要になります.

マウス

こちらも, MacBook Air のトラックパッドは機能しないので, 操作を快適にするためにはあったほうがいいかもしれません. ただ, 最低限, 外付けキーボードがあれば必要な操作はできます.

Download Image and Create Installer

Ubuntu ディスクイメージをダウンロードします (ちなみに, 2022 / 04 / 09 時点での LTS は 20.04, 最新バージョンが 21.10 です. 今回は, LTS を使いました). また, ディスクイメージをもとに USB メモリにインストーラを作成するために, balenaEtcher を使います (dd コマンドを使う場合は不要です).

事前に, USB メモリを Disk Utility を使って, FATGUID Partition Map でフォーマットしておきます.

USB メモリ フォーマット

あとは, balenaEtcher のナビゲーションにしたがって, ディスクイメージを選択して, 書き込み先の USB メモリを指定して, 書き込むだけです.

インストーラの書き込み

Enable to boot from USB

SIP (System Integrity Protection

wip

macOS のデフォルトの設定だと, USB メモリから Ubuntu を起動することはできないので, macOS Recovery を起動して設定を変更します. まず, 電源を ON にしたときに (再起動時に), command + R を押し続けると, macOS Recovery が起動します.

macOS Recovery の起動

ユーザーを選択して, パスワードを入力したら, 左上のメニューバーにある, Startup Security Utility を起動します.

Startup Security Utility

以下のように設定を変更します

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

Startup Security Utility の設定変更

最後に, 同じように左上のメニューバーから, Terminal を起動して, csrutil disable と入力します. これは, SIP (System Integrity Protection) を (一時的に) 無効にしています (Linux インストールが完了すればもとに戻します).

Terminal

SIP の無効化

これで, ようやく, USB メモリに書き込んだインストーラを起動する準備ができました !

Create Partition for Linux

Linux をインストールするためのパーティションを作成します. Disk Utility を使って, パーティションを作成します (ボリュームではないので注意してください). 割り当てたいディスクサイズを選択して, FAT でフォーマットします. Name は任意です (ただ, あとから判別しやすいようなパーティション名にしておくほうがよいでしょう).

パーティションの作成

もし, 割り当てサイズを変更したい場合などは, 以下のように 1 度パーティションを削除して, 再度割り当て直します.

パーティションの削除

Install Linux

電源を ON にする前に, インストーラを書き込んだ USB メモリと, 外付けキーボードを接続しておきます. 起動時に, option キーを押し続けると, 起動するディスクを選択することができるので, 最も右側の USB メモリのようなアイコンの EFIBoot を選択すると, Ubuntu が起動します.

起動ディスクの選択

「Try Ubuntu」を選択して, ターミナルを起動します (ここからは, 外付けキーボード, マウスで入力してください). そして, sudo ubiquity -b でインストーラを起動します (-b は, ブートローダーはインストールしないオプションです).

ブートローダーである GRUB (GRand Unified Bootloader) は, あとから別途インストールします.

Try Ubuntu

ターミナルの起動

インストーラの起動 (ブートローダーなし)

言語や, キーボードレイアウトは自由に選択してください.

インストールでは「通常のインストール」を選択します (オプションはインストール後でも対応可能なのでどちらでも問題ありません). インストールの種類では「それ以外」を選択して, パーティションの割り当てやフォーマットを手動で実行します.

インストール・インストールの種類 パーティションの編集では, FAT (fat32) でフォーマットしたパーティション (先に, Linux 用に割り当てたパーティション. おそらく, /dev/nvme0n1p3 になっているかと思います. 割り当てたディスク容量などと合わせると確実です) を選択します.

利用方法
ext4 ジャーナリングファイルシステム
(ちなみに, extN は Linux の標準的なファイルシステムです)
パーティションの初期化
チェックをつける
マウントポイント
/

上記の設定で, パーティションの編集をします.

パーティションの編集

あとは, タイムゾーンやユーザー名, パスワードなどを入力してインストールを開始します.

Install GRUB

先ほどまでの手順では, Ubuntu をディスクにインストールしただけなので, 起動することはできません. Linux を起動するための, ブートローダーである GRUB をインストールします.

まず, 同じ手順で, 再度, USB メモリから Ubuntu を起動して, 「Try Ubuntu」を選択して, ターミナルを起動します.

ターミナルを起動したら以下のコマンドを実行します.

$ sudo -s
$ mount /dev/nvme0n1p3 /mnt # Ubuntu をインストールしたパーティションをマウント
$ mount /dev/nvme0n1p1 /mnt/boot/efi  # EFI (Extensible Firmware Interface) のパーティションをマウント
$ 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

マウント

/dev/nvme0n1pX の数値の部分は, もしかしたら異なる可能性もあるので, 以下のコマンドで確認しておくと確実です.

$ lsblk

lsblk の出力

grub-install では警告は発生しますが, エラーが発生していなければ問題ありません. update-grub で 「cannot find a GRUB drive for/dev/sda1.」 とエラーが発生するようであれば, USB メモリを取り外して, 再度 update-grub を実行してみてください.

grub-install

update-grub でエラー

USB メモリを外して, update-grub を実行

ここまで完了したら, 再起動します.

Boot Linux

USB メモリを外し, option キーを押しながら電源を ON にして, 今度は, ディスクのようなアイコンの EFIBoot を選択して起動すると, GRUB のターミナルが起動します.

grub> ls

と入力し, (hdX,gptY) と表示されているデバイスに対して, しらみつぶし (といっても, 数としては多くないですが …) に, 以下のコマンドを入力すると, いずれかで Ubuntu が起動します.

grub> configfile (hd0,gpt1)/boot/grub/grub.cfg

GRUB ターミナル

GRUB ls

GRUB configfile (hdX,gptY)/boot/grub/grub.cfg

Ubuntu を MacBook Air でブート

Ubuntu デスクトップ画面

Ubuntu がディスクから起動できたら, 再度, macOS Recovery を起動して, SIP の設定をもとに戻しておきます.

$ csrutil enable

また, Macintosh HD を選択すれば, macOS が起動できることも確認しておきましょう.

macOS を起動

Enable Devices

2016 年以降の Mac には, T2 セキュリティチップがあり, 搭載のキーボードやトラックパッド, オーディオデバイス, WiFi はそのままでは動作しません. さいわい, ドライバーや Linux カーネルとパッチをインストールすれば動作します.

ドライバーやパッチは, ネットワーク経由で取得するので, インターネットに接続している必要があります. 初期状態では WiFi が動作しないので, スマートフォンの有線テザリングなどを利用してインターネットに接続します.

有線テザリングでネットワークに接続

Install Drivers

キーボード, トラックパッド, オーディオデバイスのドライバーをインストールします.

DKMS のインストール.

$ sudo apt -y 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 に以下の設定を記述します.

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"

dkms.conf に設定を書き込んだら, 以下のコマンドを実行します.

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

Linux カーネルにモジュールをロードします.

$ sudo modprobe apple_bce

以上で, キーボード, トラックパッド, オーディオデバイスが動作します.

あとは, 起動時にモジュールをロードするように設定を追記します.

$ sudo -s
$ echo apple-bce >> /etc/modules-load.d/t2.conf
Share Comments
comments powered by Disqus