未解決問題 ¶
以下の問題を解決できなかった。
実用上問題がないため深くは追っていない。
- 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のパーティションを縮める ¶
現状、以下のようなパーティション構成になっている。
- FAT32 512MB EFI FileSystem
- APFS 59GB macOS
- NTFS 406GB Windows
今回はWindowsの「ディスクの管理」より、末尾32GiBを削り以下の構成にした。
- FAT32 512MB EFI FileSystem
- APFS 59GB macOS
- NTFS 374GB Windows
- 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
が求められた。
この問題関連だろう。
仕方がないのでインストール時は以下で凌いだ。
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 ¶
流石に外付けは辛いのでキーボードドライバをインストールする。
# リポジトリ内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
を起動
- Xと共に
- 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のHandleLidSwitch
を ignore
とし、
とりあえず蓋を閉じて持ち運べるようになったので良し。
参考: 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) にした所解決された。