Omarchy導入TIPS

initは以下の記事で

Xreal Oneを使う
以下ドライバーをインストールすれば利用可能
ただし、ワイドモニターのモードはそのままだと使えない模様
MacBook(Omarchy/Arch Linux)のサスペンド問題を解決した話
この記事はAIに執筆させています。
この修正はClaudeにログを読んでもらいながら対応を一緒に考えて実装しております。
端末によって対応は異なってくるかもしれないので注意。
謝辞
この記事を見つけてくださる人がいなければ辿り着けませんでした。
kmkkiiiさんに感謝を
TL;DR
MacBookでOmarchy(Arch Linux)を使用していて、サスペンド(suspend)からの復帰が不安定だった問題を、Thunderboltドライバのブラックリスト化とs2idleモードの強制で解決しました。
症状
発生していた問題
- サスペンドから復帰しない(キーボード・トラックパッドが反応しない)
- 2回目のサスペンドで必ずフリーズする
- deepモードでサスペンドすると完全にクラッシュして強制再起動が必要
- USBコントローラー(xhci_hcd)のエラーが頻発
エラーログ
xhci_hcd 0000:06:00.0: Controller not ready at resume -19
xhci_hcd 0000:06:00.0: PCI post-resume error -19!
xhci_hcd 0000:06:00.0: HC died; cleaning up
modprobe: FATAL: Module apple_bce is in use.
環境
- 機種: MacBook Air 2017年モデル(T2チップ搭載モデル)
- OS: Omarchy (Arch Linuxベース)
- カーネル: 6.17.1-arch1-Watanare-T2-2-t2
- デスクトップ環境: Hyprland (Wayland)
原因
1. Thunderboltドライバの問題
MacBookのThunderboltドライバ(thunderbolt
モジュール)がサスペンド/復帰時に以下の問題を引き起こしていました:
- USBコントローラー(xhci_hcd)との競合
- 復帰時のデバイス初期化失敗
- 2回目以降のサスペンドでのハング
参考: MacBook Pro 2017でLinuxを使う際のメモ - サスペンド/レジューム
2. サスペンドモードの問題
Arch Linuxのデフォルトではdeep
モードが選択されることがありますが、MacBookでは:
-
deep
モード: キーボードでの復帰ができない、クラッシュする -
s2idle
モード: 比較的安定しているが、デフォルトで選択されない場合がある
3. apple_bceモジュールの扱い
MacBookのキーボード・トラックパッドを制御するapple_bce
モジュールが、サスペンド時に使用中として扱われ、適切にサスペンドできないことがありました。
解決方法
ステップ1: Thunderboltドライバをブラックリスト化
Thunderboltを使用していない場合、ドライバをブラックリストに追加することで問題を回避できます。
sudo nano /etc/modprobe.d/blacklist-thunderbolt.conf
以下を記述:
blacklist thunderbolt
initramfsを再生成:
sudo mkinitcpio -P
ステップ2: s2idleモードを強制
再起動後もs2idleモードを維持するため、カーネルパラメータに追加します。
sudo nano /etc/kernel/cmdline
既存の内容の最後に追加:
mem_sleep_default=s2idle
initramfsを再生成:
sudo mkinitcpio -P
ステップ3: 蓋を閉じたときの動作設定
蓋を閉じたときにサスペンドするよう設定します(お好みで)。
sudo nano /etc/systemd/logind.conf
以下の行を編集(#
を外す):
HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend
HandleLidSwitchDocked=suspend
設定を反映:
sudo systemctl restart systemd-logind
ステップ4: 再起動
sudo reboot
動作確認
s2idleモードの確認
cat /sys/power/mem_sleep
出力例:
[s2idle] deep
[s2idle]
のようにカッコで囲まれていればOK。
Thunderboltモジュールの確認
lsmod | grep thunderbolt
何も出力されなければ、ブラックリストが機能しています。
サスペンドテスト
# 1回目
sudo systemctl suspend
# 復帰を確認
# 2回目
sudo systemctl suspend
# 復帰を確認
または、蓋を閉じて→開けるを繰り返してテスト。
ログ確認(推奨)
sudo journalctl -f > ~/suspend-test.log
別ターミナルでサスペンドテストを実行し、ログを確認します。
成功時のログ例:
kernel: PM: suspend entry (s2idle)
kernel: bce_vhci: suspend done
kernel: PM: suspend exit
kernel: bce_vhci: resume done
systemd-logind: Operation 'suspend' finished.
xhci_hcdのエラーが出なければ成功です!
結果
改善されたこと
✅ サスペンド/復帰が安定して動作
✅ 2回目以降のサスペンドも問題なし
✅ キーボード・トラックパッドが正常に復帰
✅ xhci_hcdのエラーが完全に消失
✅ 蓋の開閉でのサスペンド/復帰が正常動作
ベンチマーク
- サスペンド時間: 約1秒
- 復帰時間: 約2秒
- 連続サスペンド: 10回以上テストして全て成功
注意点
Thunderboltを使用する場合
この方法はThunderboltドライバをブラックリストに入れるため、Thunderbolt接続のデバイスは使用できなくなります。
Thunderboltが必要な場合は、代わりに以下のカーネルパラメータを試すことができます:
thunderbolt.dyndbg=+p
または、特定のThunderboltデバイスのみ無効化する方法を検討してください。
不要なサービスの削除
過去にサスペンド問題を解決しようとして作成したサービスがある場合は、削除することをおすすめします:
sudo systemctl disable unload-bce.service reload-bce.service fix-suspend.service fix-resume.service
sudo rm /etc/systemd/system/unload-bce.service
sudo rm /etc/systemd/system/reload-bce.service
sudo rm /etc/systemd/system/fix-suspend.service
sudo rm /etc/systemd/system/fix-resume.service
sudo systemctl daemon-reload
トラブルシューティング
それでもサスペンドがうまくいかない場合
サスペンドを諦めて画面オフのみにする
安定性を最優先する場合、サスペンドを無効化して画面オフのみで運用する方法もあります。
sudo nano /etc/systemd/logind.conf
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
Hyprlandの場合、hypridle
で画面オフのタイミングを設定できます。
Hibernation(ハイバネーション)を試す
サスペンドが不安定な場合、ハイバネーションの方が安定することがあります:
sudo systemctl hibernate
ただし、swap領域の設定が必要です。
まとめ
MacBookでのLinuxサスペンド問題は、主に以下の要因で発生します:
- Thunderboltドライバとの競合
- サスペンドモード(deep vs s2idle)の選択ミス
- apple_bceなどのハードウェア固有ドライバの問題
これらを適切に設定することで、安定したサスペンド/復帰が可能になります。
特にThunderboltドライバのブラックリスト化は効果が大きく、多くのMacBookユーザーに有効な解決策だと思います。
参考資料
- MacBook Pro 2017でLinuxを使う際のメモ
- Arch Wiki - Power management/Suspend and hibernate
- Arch Wiki - Mac
- systemd-logind - ArchWiki
おわりに
MacBookでLinuxを使うのはまだまだ発展途上の部分がありますが、適切な設定で十分実用的に使えます。
同じ問題で困っている方の参考になれば幸いです!
動作環境
- MacBook Air (T2チップ搭載)
- Omarchy (Arch Linux)
- カーネル 6.17.1
- Hyprland (Wayland)
検証日: 2025年10月12日