古い 11 インチ MacBook Air を Ubuntu にして現役化

# はじめに

最近 RaspberryPi Pico を使った同人ハードの開発をしています。

https://twitter.com/suzukiplan/status/1692318899004686655?s=20

開発環境の PC は MacBook Air (2020年モデル) を使っていたのですが、RaspberryPi Pico へのファームウェア書き込みを行う都度「不正なディスクの取り出し」というエラーが通知されたり、ファームウェアを書き込んだ後、稀に RaspberryPi Pico のシリアル通信が認識されなくなる（PC をリブートしなければ復活しない）ことがあって中々ストレスの溜まる環境でした。

最近の MacBook には USB Type-C のポートしかついていなくて、RaspberryPi Pico (micro USB) への接続をするには（A→microのケーブルしか持っていない為）ハブ等を経由する必要があります。

しかし、ハブ経由で USB 接続する場合、1 ポートあたりの消費電力を 100mA 以下にすることが推奨されていて、RaspberryPi Pico は（超低消費電力と言われていますがそれでも）100mA 以下程度の電力を必要とします。そして、RaspberryPi Pico に 3.2 インチ LCD (だいたい 90mA) や UDA1334A (DAC モジュール) などのデバイスを追加してしまうと、ハブ経由では明らかに電力不足になるので、それが原因で接続が安定しなかったのかもしれません。

中国製の RaspberryPi Pico 互換基板なら、USB Type-C のものもあり、それなら PC と直結できるので電流が安定するかもしれませんが、そもそも 2020年モデルの MacBook Air は 「空き USB ポートが少なすぎる」という問題もあります。

私の手持ちの 2020 年モデルの MacBook Air は、USB Type-C のポートが 2 つありますが、その内 1 つは電源用で潰れるので、空きポートは 1 つしかありません。

> _2023 年モデルの MacBook Air/Pro なら MagSafe の電源ポートが復活していますが、PC は可能なら 10 年ぐらいは買い換えたくない主義です...お金がもったいないですし、最近そういうの流行ってますよね（SDGsでしたっけ？）_

もう一つ手持ちの古い MacBook Air (2013 年モデル) には、USB Type-A のポートが 2 つも付いており、更に電源用には USB ポートとは別に MagSafe ポートが付いているので、RaspberryPi Pico の開発向けのハードウェアとしては 2020 年モデルの MacBook Air より遥かに優れていると思われます。

> 「ハードウェアとしてのMacBook」は2013年モデルが完成形で、それ以降はキーボードをバタフライ構造にして入力し難くしてみたり、電源ポートを USB Type-C にして USB ポート不足の状態にしてみたりといったデグレードが目立ちます。
>
> それらの変化を「デグレード」と表現して良いのかは議論の余地があるかもしれませんが、少なくとも MacBook のキーボードと電源については、最新の 2023 年モデルで 2013 年モデル相当に回帰していることは事実です。_（そうやって買い替えを促していく商法なのか？と勘ぐりたくなってしまいます）_
>
> 2013年モデル MacBook Air の唯一の不満点は RAM の増設難度が高いことぐらい。（一応不可能ではないですが難度高めです）

しかし、残念ながら 2013 年モデルの MacBook Air は 2021 年に Apple の macOS サポート期限が切れており、サポート期限切れの macOS を使い続けることはセキュリティなどの観点から好ましくありません。

__つまり、macOS がダメなら OS を Linux に入れ替えれば良いということですね。__

ラズパイ関連の開発には、ラズパイ OS を用いることを公式が推奨しています。

私は (Picoを除く) ラズパイを持っていませんが、どうやら [Raspberry Pi Desktop](https://www.raspberrypi.com/software/raspberry-pi-desktop/) という PC で動作する Debian ベースの Linux OS もあるようです。

ただし、Raspberry Pi Desktop には 32bit モデルしか存在せず、ついでに現時点（2023.08.22時点）では最新版（Debian 12）への追従ができていないようです。

それだけなら許容できないこともないのですが __ネット上の情報量が少ない__ 点が致命的です。

> 念のため、Raspberry Pi Desktop を古い MacBook Air (2013モデル) へのインストールを試みたのですが、何故か USB ブート時に SSD が認識されない状態でした（USB ブートなら問題なくできましたが）。その点についてネット情報で簡単に調べてみた限り、解決策が出てこなかったので「情報量が少ない」と判断。

Linux には数多のディストリビューションがありますが、特別な事情がある場合を除き __ネット上の情報量の多さ__ を基準にチョイスするのが良いです。

そして、私が判読可能な言語圏（英語圏と日本語圏）の情報を確認した限り、Ubuntuの情報量が圧倒的なので、__デスクトップ向け Linux を導入するなら事実上 Ubuntu 一択__ かと思われます。

という訳で、手持ちの古い MacBook Air（2013年モデル, 11インチ, SSD: 128GB）を Ubuntu にリファインしてみました。

# パーティションを準備

私の古い MacBook Air（2013年モデル）は 128GB の SSD を搭載しています。

内蔵 HDD (SSD) の全領域を Ubuntu に切り替えても良いのですが、macOS が無いと本体ファームウェアを更新できずに詰むことがあるかもしれないので、以下のようなパーティション構成（デュアルブート）にしておきました。

1. macOS: 48GB
1. LINUX: 64GB _(※ココに Ubuntu を入れる)_
1. SWAP: 8.99GB _(※物理メモリサイズ = 4GB)_

> _macOS はリカバリ領域だけ残しておけば良いかもしれませんが_

パーティション分割は macOS のディスクユーティリティで実施します。（フォーマットは後でLinuxのインストーラが書き換えるので何でも良いと思われますが MS-DOS/FAT32 をチョイス）

:::note info
予算に余裕があれば、SSD を交換してしまった方が良いです。2013 年モデル〜 2017 年モデルの MacBook Air は、内蔵 SSD を NVMe 対応 SSD に換装・交換できる仕様（[参考](https://www.sin-space.com/entry/macbookair2013-2017-ssd)）なので、SSD 交換により高速化 & 大容量化が見込めます。（パーティションもフルで使える）
:::

# Ubuntu をインストール

以下の手順で Ubuntu をインストールします。

1. Ubuntu Desktop の iso イメージを[こちら](https://jp.ubuntu.com/download)からダウンロード
1. [balenaEtcher](https://etcher.balena.io/) で USB フラッシュに書き込む
1. インストール先の MacBook Air に USB フラッシュを挿入して起動（or 再起動）
1. 起動音が鳴ったら `option` ボタンを押し続ける
1. EFI Boot を選択（USB フラッシュからブート）
1. 画面指示に従いながらインストール

インストール時の操作で困ったり疑問に思ったことは特にありませんが、インストール先パーティションの選択がデフォルトで「ディスクを全消去」（パーティションをクリアして全領域を Ubuntu で使う形）になっているので、何も考えずに Enter 連打はせず、インストーラの画面表示を読みながら操作することをお勧めします。（1敗）

# インストール後のセットアップ

## WiFi ドライバをインストール

MacBook Air 2013 + Ubuntu は、初期状態だと WiFi が使えないので、なんとかしてインターネット接続できる状態にして、以下の手順を実行する必要がありました。

https://dev.to/hart87/fix-no-wifi-adapter-in-ubuntu-20-04-31km

> Terminal で 以下のコマンドを実行
>
> ```
> sudo apt-get update
> sudo apt-get purge bcmwl-kernel-source
> sudo apt-get install broadcom-sta-source broadcom-sta-dkms broadcom-sta-common
> ```

「WiFi 接続できない状態でインターネット接続できるようにすること」が一番の難関かもしれません。

有線接続するか、iPhone を Bluetooth 接続（or USB 接続） してインターネット共有するなどの対処が必要になります。

> 私は激安 MVNO で 1 日 100MB まで高速通信できる契約だった関係で、大半のインストール処理を 128kbps の低速モードで実行する必要があり、めちゃくちゃ時間が掛かりましたｗ _（WiFi 設定はインターネット接続無しでできる手段が欲しいところ）_

## 英数/かな

macOS と同様 「英数」 と 「かな」 で日本語入力を切り替えできるようにするため、以下の手順を実施。

https://namileriblog.com/linux/ubuntu22-04_keyboard_setting/

## Command+C & Command+V でコピペ

macOS と同様 「⌘+C」 & 「⌘+V」 でコピペできるようにするため、以下の手順を実施。

https://namileriblog.com/linux/command_c-command_v/

:::note info
上記記事の手順を実施するには、予め gnome-tweaks をインストールする必要があります。

```
sudo apt install gnome-tweaks
```
:::

## Command+TABでアプリ切り替え

⌘+C/V でコピペできる設定をしてしまうと、アプリケーションの切り替えが ⌘+TAB でできなくなってしまいます。

そこで、`設定` → `キーボード` → `ショートカットの表示とカスタマイズ` → `ウィンドウを切り替える` （※「TAB」で検索すれば出てくる）の設定を、`Alt+TAB` から `Ctrl+TAB` に変更することで、再び ⌘+TAB でアプリの切り替えができるようになります。

## ホームディレクトリの英語化

日本語設定で利用していると、デフォルトだとホームディレクトリ（`~/`）以下が日本語になっていますが、日本語だと bash 等での入力がすごく面倒くさいので、ディレクトリ名は英語にした方が便利かと思われます。

https://www.rough-and-cheap.jp/linux/ubuntu-change-xdg-directory-name/

:::note warn
上記設定をしても、言語設定が日本語だとその後、勝手に日本語ディレクトリが作られたりして面倒くさかったので、OS と genome の言語設定を英語にして使うようにしました。（日本語は入力だけできれば問題ない）
:::

## git commit 時のテキストエディタを vi にする

```
git config --global core.editor vi
```

## vi でカーソルキーでカーソル移動できるようにする

https://qiita.com/blue_camel/items/e2bd59a3b33acd5edfd0

## PlatformIO Core のインストール

普通に `sudo apt install platformio` でインストールしたところ、RP2040向けのビルドが出来ない状態だったので、[公式推奨の Installer Script を用いる手順](https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html)でインストールする必要がありました。


# 所感

13 インチのノート PC は大きすぎて使い難いので、「ノート PC は 11 インチがベストサイズ」だと思っているのですが、何故か最近の MacBook Pro や MacBook Air には 11 インチのモデルがありません。

飛行機のエコノミー座席で操作する時、13インチだと微妙に机からはみ出るのですが、11インチなら良い感じに収まります。

> _ついでに iPhone も私にとってのベストサイズ（3.5 インチ）が無くなって久しい..._

Ubuntu をインストールすることで、お気に入りの 11 インチモデルの MacBook Air が再び現役化できたことが、今回得られた最大の収穫です。

やはり、11 インチの MacBook は使いやすい。

> 大きさだけなら 12 インチ MacBook (無印) がベストサイズかもしれませんが、12 インチ MacBook (無印) は USB ポートが 1 つしかなく、電源も USB ポート共用で、尚且つキーボードがバタフライ構造のみといった点が私にとっては致命的です。

微妙に不便な点としては、Chromeでトラックパッドを2本指でスワイプした時の上下スクロールの速度が微妙に速すぎたり、ピンチアウト・ピンチインで拡大縮小ができない点ぐらいでした。

> スクロール速度については、Genome の Settings のスワイプ操作は問題無かったりするので、Chrome の GTK の使い方が微妙な感じなだけかも？（多分、GTKだとトラックパッドのスクロール時のアクセラレーション処理をアプリ側で実装する必要があるとかそんな感じだろうか...と想像 _※GTKは使ったことがないので勘です）_

バッテリーはだいぶヘタってきましたが、5 千円 〜 1 万円も出せば新品のバッテリーを Amazon 等でお手軽に購入できます。（ネジが星型の若干特殊な形状ですが、専用のドライバーも Amazon 等で簡単に入手できますし、何なら付属しているものもあります）

> _Mac は Windows PC と違い、メーカーが Apple のみなので、互換部品が豊富にある点が有利といえるかもしれません。（流石に古すぎると話は変わると思いますが）_

最新の macOS を動かすには力不足（というか、既に公式サポート終了済み）ですが、Linux であればまだまだ快適に動かせそうなので、あと10年は新しいパソコンが無くても戦えそうです。_（iOS アプリのメンテナンスのため、どうしても OS サポートが切れていない Mac が 1 台は必要ですが）_

当初の目的（RaspberryPi Picoの接続が安定しなかった件）については、今のところ特に不具合なく使えています。

> これについては不具合が出そうな予感はあるので、不具合が出るようになったら記事更新するかもしれません。_（macOS と違ってカーネルのコードが確認できるので、USB ドライバ周りに問題があってもローカルフィックスできるかもしれない...と期待）_