MacBook 2017にTripleBoot環境を整えた話

2019-12-31 note debian macbook pc windows

未解決問題

以下の問題を解決できなかった。

実用上問題がないため深くは追っていない。

  • gettyの表示が条件により乱れる 数行切れる (後述)
  • システムをSuspendにすると戻ってこない (後述)
  • Internal Speakerから音が出ない
    • イヤホンジャックからは出る
  • Facetime HDが使えない

動機

WindowsとDebianを比較した際、以下の点でメリットが有ると感じた為、 今回TripleBoot化に踏み切った。

  • 全体の安定性
  • GIMP, InkScape等の起動速度

また、後述の Windows上のBlender表示問題 (解決済み) の解決への期待もあった。

環境

  • MacBook 12" 2017
  • OS
    • macOS HighSierra
    • Windows Server 2016 Datacenter (BootCamp)

手順

Windowsのパーティションを縮める

現状、以下のようなパーティション構成になっている。

  1. FAT32 512MB EFI FileSystem
  2. APFS 59GB macOS
  3. NTFS 406GB Windows

今回はWindowsの「ディスクの管理」より、末尾32GiBを削り以下の構成にした。

  1. FAT32 512MB EFI FileSystem
  2. APFS 59GB macOS
  3. NTFS 374GB Windows
  4. unused 32GB Blank

この際、「縮小可能な領域のサイズ (MB):」内で有るにも関わらず、 「十分なディスク領域がないので、この操作を完了できません。」 というダイアログが出る場合があるようだ。 ツールチップ内の「操作(A)」より「ディスクの再スキャン(R)」を行う事により 上記問題を回避できる。

参考: 容量はあるのに「十分なディスク領域がないので、この操作を完了できません。」というエラーがでる場合の対処 - Qiita

Debianのインストール

MacBook 12"へのDebianのインストールには以下の物が必要になる。

  • netinstイメージを焼くメディア
  • non-freeなドライバを焼くメディア
  • 標準ドライバで動作可能なUSB HIDキーボード

最新のnetinstイメージを公式サイトよりダウンロードし、メディアに焼く。 今回はCD及び外付け光学ドライブを用いた。

通常通りStartup Managerよりnetinstイメージを起動させる。

指示に従っていくと、ネットワークドライバである brcm/brcmfmac4350c2-pcie.bin が求められるはずだ。 Debian – buster の firmware-brcm80211 パッケージに関する詳細 から firmware-nonfree_20190114.orig.tar.xz をダウンロードしUSBメモリに展開。 通常であれば、メディアを挿入するのみで自動で認識されたと記憶しているが、 それに失敗した為、一度ターミナルエミュレーターに落ち、手動でファイルを展開した。

mount /dev/sda /mnt
mkdir -p /lib/firmware/brcm
cp /mnt/firmware-nonfree-20190114/brcm/brcmfmac4350c2-pcie.bin /lib/firmware/brcm/

すると更に、 brcm/brcmfmac4350c2-pcie.clm_blob 及び brcm/brcmfmac4350c2-pcie.txt が求められた。 この問題関連だろう。

参考: Bug #1772624 “Broadcom BCM4356 wifi chipset firmware is not work…” : Bugs : linux-firmware package : Ubuntu

仕方がないのでインストール時は以下で凌いだ。

touch /lib/firmware/brcm/brcmfmac4350c2-pcie.clm_blob
touch /lib/firmware/brcm/brcmfmac4350c2-pcie.txt

今回、32GB全てをext4, root partitionとし、swap無し、optional package無しで インストールしたが、 その様な点では通常のDebianインストールと変わりないため割愛する。

gettyの表示問題

標準のブートオプションのまま起動すると、 GRUBから画面が切り替わった直後(framebuffer直描きから切り替わるタイミング(?))、 画面の表示が乱れる。 期待された入力解像度と入力された解像度が一致していなさそうな乱れ方だ。 ネイティブ解像度、メジャーな解像度をいくつかを GRUB_GFXMODE に設定してみたが解決されず。

とりあえず、 nomodechange optionでframebuffer直描きのまま起動できる為、 それを用いてセットアップする。

Keyboard driver

流石に外付けは辛いのでキーボードドライバをインストールする。

cb22/macbook12-spi-driver: WIP input driver for the SPI touchpad / keyboard found in the 12" MacBook (MacBook8,1 + MacBook9,1)

# リポジトリ内README.mdにある以下をmodulesに書き加える

# # applespi
# applespi
# spi_pxa2xx_platform
# intel_lpss_pci

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

sudo apt install git dkms

git clone https://github.com/cb22/macbook12-spi-driver.git /usr/src/applespi-0.1

dkms install -m applespi -v 0.1

Windows が起動しなくなる

MBRがhybridになっている為、debianよりprotectiveにする。

参考: partitioning - Dual booting: 0xc000000e Windows Error when installing GRUB - Super User

ハードウェア時計

インストール直後、macOS / Windowsはハードウェア時計を utc に合わせたがり、 Debianは localtime に合わせたがる。

その結果、OSを切り替える度、NTPで時間が飛び各種ログ等がハチャメチャになる。

その為、Debianにハードウェア時計がUTCである事を教える。

sudo hwclock --systohc --utc

通常、Windowsが localtime に合わせ、 Debianが utc に合わせた記憶が有るが気のせいだろうか。

完了

あとは通常通り欲しいパッケージをインストールする。

余談

未解決問題とか色々。

X.Org Serverと表示問題

X.Org Serverではfbdev driverが標準で無効になっている為、 nomodechange が有ると起動に失敗する。 とは言え、2019年にもなってframebufferでXを動かすのも変わった話だ。

試しに nomodechange を外し、(乱れて何も見えないが)gettyでloginし、 Xを起動すると解像度がX.Orgにより再設定され正常に表示された。

僕の用途ではgettyの使用頻度が低いため、現在は下記のような運用をしている。

  • 普段
    • Xと共に lightdm を起動
  • gettyを使う場合
    • 手動で nomodechange を追加 (Xは勝手に失敗するのでlightdmにも飛ばない)

gettyの段階での解像度指定と使うAPIが違うのだろうか。興味深い。

追記 (2020-07-09)

いつからか、gettyの表示が乱れることはなくなった。

が、解像度制御が未だ完全ではないのか何行か下に溢れている。 (未調査)

Apple NVMe SSDと電源管理

現状のドライバだと Suspend に落ち Apple NVMe SSDをスリープに落とすと復帰しなくなる。

mate-power-manager でディスプレイを閉じた時の動作を Blank Screen に設定しても Suspend に落ちてしまう様だ。

/etc/systemd/logind.conf からACPIのHandleLidSwitchignore とし、 とりあえず蓋を閉じて持ち運べるようになったので良し。

参考: SystemdSuspendSedation - Debian Wiki

ArchWikiとの未解決問題の差異

MacBook April 2016 12" - バージョン 9,1 | MacBook - ArchWiki

上記Arch LinuxのWikiに有るMacbook 12"での問題の内、 intremap=nosidがキーボード動作に必要な問題は解決されている様だ。

また、キーボードバックライトの点灯も特に問題なく行えた。

Windows上のBlender表示問題 (解決済み)

Windows上でBlenderを起動すると ツールチップの表示がタイトルバーにめり込んでしまう。 macOSでは起こらないらしいし、Debian上でも起こらなかったため、 OS依存の表示領域を取得するAPIが正常に動いていないのだろうか。

しかし、他のWindows PCでは再現しない。なぜだろう…?

追記 (2019-12-31):

BootCamp アシスタントより更新の旨が表示された為、 Intel(R) HD Graphics 615 のドライバを最新 (26.20.100.7373) にした所解決された。

Relevant Topics

VRChat RejoinToolの制作

2019-08-03 portfolio booth csharp oss vrchat windows

VRChatのログをパースしゲーム内インスタンス操作を簡便化するソフトウェア Read More


Recent Posts

Realme X2 Proの導入

2020-07-09 note android device smartphone

安く速いスマートフォンを導入した Read More

MDR-100A メンテナンス

2020-07-09 note audio device repair

ヘッドホンから異音がした為、いじった Read More

独自ページからHugoへ乗り換え

2020-06-30 note hugo web

自前フレームワークからHugoへの乗り換え。その利点と欠点。 Read More

AutoImageCompresserの制作

2020-02-22 portfolio booth csharp oss vrchat windows

軽快なファイル同期 (スクリーンショット想定) の為の画像圧縮デーモン Read More

MultiShortcutの制作

2020-02-15 portfolio booth csharp oss vrchat windows

複数のショートカットをまとめて起動するショートカットを作成するアプリケーション Read More