本文へ
ハクソク

世界を動かす技術を、日本語で。

忘れっぽいCPU(M4上のLinux)

元記事: 原文(yuka.dev)

概要

  • M4 Mac mini でLinuxを初めて起動した詳細な記録
  • Asahi Linuxチーム への感謝と支援の呼びかけ
  • SPTM導入 などM4世代特有の課題と対応策
  • Linux起動トラブル の原因究明と解決方法
  • 今後の展望 と寄付の案内

M4 Mac miniでのLinux初起動記録

  • 2024年11月、 M4 Mac mini を購入し、Asahi Linuxによる対応を期待
  • M1〜M3世代との共通点を想定しつつも、 SPTM(Secure Page Table Monitor) の導入で難易度上昇
    • SPTMはmacOS XNUカーネルの脆弱性対策機構
  • これまでのLinux移植は m1n1ハイパーバイザ でMMIOトレースを取得し解析
    • SPTM対応にはm1n1の大幅な改修が必要
  • 並行して、 セキュアブートの無効化、m1n1のカスタムブート導入、 シリアルコンソール 取得でLinux起動を試行

ロックされたレジスタ問題と初期トラブル

  • m1n1は BRINGUPモード でのみ起動可能、GXF初期化で即クラッシュ
    • M4以降でGXF機能が無効化、初期化スキップで回避
  • RVBAR(Reset Vector Base Address Register) 書き込みもクラッシュ要因
    • 既に正しい値が入っていたため書き込みをスキップ
  • USBプロキシ(m1n1 uartproxy)がlsusbで認識、シェル起動成功

Linuxカーネル起動時のデバッグ手法

  • Chaos Communication Congressで再挑戦、 最小限のデバイスツリー 作成
  • カーネルからの出力が得られず、 printlnデバッグ で原因調査
    • m1n1のdebug_putcアセンブラルーチンを流用し、カーネル初期段階で'a'を出力
  • MMU初期化 後にUARTへのアクセスが仮想アドレス化されるため出力途絶
    • Linuxの初期ページテーブルを修正し、MMIO空間を1:1マッピングで解決
  • 割り込みコントローラ初期化中に、 SYS_IMP_APL_VM_TMR_FIQ_ENA_EL2 レジスタ書き込みでクラッシュ
    • この書き込みをコメントアウトし、シェル起動に成功

シリアル出力とデバイスツリー修正

  • earlycon パラメータ追加でカーネル初期出力を取得
    • デバイスツリーにstdout-path = "serial0"を追加し、詳細なログとスタックトレース取得に成功

セカンダリコアとWFI命令問題

  • m1n1のsmp_start_offset設定で セカンダリコア起動 を確認
  • WFI(Wait For Interrupt)命令 の仕様非準拠問題に直面
    • M1〜M3ではchicken bitで回避可能だったが、M4ではロック/削除
    • ARM64仕様ではWFIでアーキテクチャ状態を失ってはならない
  • 一時的にカーネル内のWFI/WFIT命令をNOP化し、全コア起動に成功
  • Linuxのerrataフレームワークや仮想化判定の難しさから、 bootargによるWFI idle無効化 を採用
    • m1n1が該当マシンで自動的にbootargを付与
    • 今後はPSCIEFI conduit等による上流対応も期待

今後の展望と支援のお願い

  • Linuxが M4/M4 Pro/M4 Max/M5 で全コア起動可能に
  • 周辺機器(カメラ、ディスプレイコントローラ、GPU等)のリバースエンジニアリングは進行中
    • m1n1ハイパーバイザによるmacOSトレースが今後の鍵
  • 作業成果は積極的に 上流プロジェクトへ還元
  • Asahi Open CollectiveやLiberaPay、GitHub Sponsorsでの 寄付の呼びかけ
  • Linux on Apple Siliconのさらなる発展に向けた支援の重要性

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

オープンなものを動かすために、オープンに反対している会社の機械を買うのは変だよね。

└

ここがどこか忘れてるんじゃない?「Hacker News」ってそういう理由で呼ばれてるんだよ。

└

Appleはオープンなものを意図的にブロックしようとしてるの?それとも無視して新しいハードウェアの開発を続けてるだけ?本当に知りたいんだけど、自分ではわからないんだ。追記:ここでは主にmacOSについて話してるけど、モバイルOSはもっと閉じられてるよね。

└

レノボのノートパソコンで嫌な思いをしたことがある。ファームウェアの問題でスリープから復帰した後、トラックパッドが反応しなくなって、レノボはそれを修正してくれなかった。使うのが本当に苦痛だったから、マックブックに切り替えたよ。アップルはサポートするSKUが少ないから、そんな明らかな問題が放置されることはないだろうし。あと、ウィンドウズが好きじゃないから、macOSならLinuxのサポートが不足してても助けてくれることが多い。Asahi Linuxの早いポートを期待してたけど、残念ながらM3にはまだ来てないけど、最近は進展があったみたいで良かった。

└

だって、ちゃんと動くし、動きもいいからね。

もしAppleがオープンハードウェアを受け入れたら、どれだけ大きくなれるか想像してみて。ここには明確な優位性があるよね。macOSはすごく重いけど、ハードウェアは他のどれよりもずっといいと思う。

└

ハードウェアが本当にそんなに優れてるのか、それとも統合が優れてるだけなのか。macOSは重いけど、効率的な部分もあるよね?私の経験では「ずっといい」ってのは、実際にはバッテリーの持ちがすごくいいってことかな。

└

Appleは地球上で最大の企業の一つだよ。デスクトップLinuxを使いたい人が全員、Appleが売ってる最も高価な製品を買ったとしても、Appleの規模に対しては収益は大したことないよ。自分のバブルから出てみて。

└

アップルは縦型企業だよね。ハードウェアを売りたくないし、ソフトウェアも売りたくない。ただ、全部まとめて売りたいだけ。カトリック教会にラップ音楽の8トラックレコードクラブを始めてくれって頼むようなもんだよ。確率は同じ。ハードウェアは目的のための手段で、彼らにとってはそれだけなんだ。

└

「大きい」をどう定義する?彼らは歴史上最大の企業の一つだよ。もし彼らがすでにマックを使ってる市場の1%にアピールしたら…どうなるの?そのユーザーをサポートしなきゃいけないの?

└

彼らは破産するよ。アップルの歴史を知ってたら、昔にまさにそれを試みたことがあるって知ってたはず。代替体験のためのPCクローンはすでにWinIntelであるし、LinuxのOEMをサポートしたいならすればいいじゃん。

└

面白いのは、みんなが非Appleハードウェアで動かしたいと思ってたのがmacOSだったことだよね。ソニーのVaioの噂から始まって、Hackintoshに至るまで。今は逆になってるけど。

Hacker Newsで議論の続きを見る