ディストリビューション:Arch Linux ARMとの違い - asfdrwe/asahi-linux-translations GitHub Wiki

2024/1/23時点のDistro:Differences from Arch Linux ARMの翻訳

訳注: 英語版wikiへのリンクは対応する日本語版wikiへのリンクに変更。


Asahi Linux プロジェクトはApple Silicon機器向けのLinux対応の最新版を紹介することを目的とした設定済みの OS イメージを提供しています。 私たちは Arch Linux ARM をベースとして、私たち自身のパッケージリポジトリを追加することでこれを 実現しています。この随時更新文書では私たちのイメージとバニラALARM(訳注:オリジナルのArch Linux ARM)との違いを示します。

ビルド

イメージは asahi-alarm-builder リポジトリのスクリプトを 使用してビルドします。このスクリプトは公式の Arch Linux ARM generic rootfs パッケージから始まり、それをカスタマイズします。

イメージ形式

これらのイメージは、オンラインの Asahi Linux Installer で直接インストールするためのもので、特定のフォーマットに従った ZIP アーカイブにパッケージングされています。詳しくは Installer:OS Packages (訳注:2022/3/17時点でリンク先ページなし)をご覧下さい。

リポジトリ

私たちは『asahi』リポジトリを出荷していて、Apple Silicon対応パッケージ、上流パッケージの最新版やまだ上流で対応されてなかったり 開発中のパッケージ、Asahi Linuxのブランディングなどを含みます。

これらのコンポーネントのほとんどはある程度オプションとなっており、Arch Linux ARM と大きく乖離することはないと考えています。

ミラーリスト

現在のミラーリスト

ここでは Arch Linux ARM パッケージを再ミラーリングしていませんが、私たちは jp.mirror.archlinuxarm.org のスポンサーになっています (実際は上記の日本ミラーと同じサーバーです)。

ブートチェーン

Asahi Linux のリファレンスイメージは、U-Boot と GRUB を使った『フルファット』ブートチェーンを使用しています。

SecureROM → iBoot1 → iBoot2 → m1n1 (ステージ1) → m1n1 (ステージ2) → U-Boot → GRUB (UEFI) → Linux → initramfs → Arch

SecureROMiBoot1はシステムの中核となるファームウェアであり、私たちは管理しておりません。iBoot2m1n1 (ステージ1) は Asahi Linuxインストーラによって提供され、通常、初期インストール後に変更されることはありません。m1n1 (ステージ2) 以降については、 Pacmanパッケージとして出荷・更新されます。

Asahi Linux Core

Arch Linux ARM の軽量版リミックスです。

linux-asahi

私たちのメインカーネルパッケージです。通常、AsahiLinux/linuxasahi ブランチから ビルドされます。頻繁に更新され、しばしば最先端のカーネル (linux-next) をベースにしています。リファレンスカーネルの設定は こちらです。

このカーネルは外部デバイスを使えるようにするためにUSB デバイスドライバの多くの品揃えして構築していますが、Apple マシンで 役立つのは PCI/SPI/I²C/SPMI/etc ドライバのみです (PCI ドライバは Thunderbolt が動けば有効になります)。Apple 以外の システムで起動することは想定していません。

Asahiを含むようにカーネル構成を変更することに関するメモ

ほとんどのドライバはモジュールとしてビルドされていますが、モジュール化できないコアなもの、apple_wdt、 フレームバッファを早期に動作させるための simpledrm の依存関係などは別です (注: これは、DCP ドライバがほとんどのユーザにとって simpledrm よりも優先されるまでの一時的なハック。フレームバッファのデバイスから GPIO バックライト機能を取り除き、 gpio-Macsmc と 依存関係をモジュールに変更する予定)。

まだ有効になっていない .config オプションが必要な場合は、IRC や こちらのissue で 遠慮なくリクエストしてください。

asahilinux-keyring

プロジェクトが配布するパッケージとレポのためのキーホルダーパッケージです。現在の署名者:

  • Hector Martin Cantero <[email protected]> (FC18F00317968B7BE86201CBE22A629A4C515DD5)
    • Linux カーネルプルリクエストのタグ署名に使用されているキーと同じです。署名のサブキーは、タッチモードが必須の冗長なYubiKeyに 保持されています。マスターキーは2つのサイトにバックアップされ、非常に強力なパスフレーズで保護されており、オフラインのマシンで しかロックを解除できません。

Asahi イメージは Arch Linux ARM リポジトリとキーリングも継承しています。

m1n1

Apple Silicon機器用第2ステージm1n1ブートローダ。 AsahiLinux/m1n1を参照

このパッケージは/usr/lib/asahi-bootにm1n1をインストールします。ESP内の結合されたイメージをアップデートするために update-m1n1コマンドを使用してください。これはm1n1がそこにインストール済みならば自動的にpostupgradeで実行されます。

TODO: パッケージのアンインストールやEFIパーティションのアンマウントなしにpostupgradeステップを無効にする方法を提供

uboot-asahi

Apple Silicon機器用のU-Bootの移植版。AsahiLinux/u-bootからビルドしました。 UEFIサービスをGRUBに提供します。

mkinitcpio

上流の mkinitcpio にマイナーなパッチを当てました。上流に統合されたら、おそらくすぐになくなるでしょう。

asahi-scripts

Apple Silicon機器のメンテナンスと自動化のためのスクリプトです。 AsahiLinux/asahi-scripts からビルドしています。

  • /usr/bin/update-grub: GRUB の設定を生成し、EFI システムパーティションに GRUB をインストール・更新
    • 正しいパーティション UUIDを探索
    • パーティションインデックスの代わりにUUIDでルートパーティションを検索するGRUBコアイメージを生成しインストール (注:Debian/Ubuntuも似たようなことを実行)
    • grub-mkconfig を実行
  • /usr/bin/update-m1n1: 第2ステージのm1n1イメージをm1n1u-boot-asahilinux-asahiパッケージに含まれるファイルから生成
  • /usr/bin/first-bootfirst-boot.service: プリベークイメージの初回起動時に自動タスクを実行
    • rootfs の UUID をランダム化
    • EFIシステムパーティションのFATボリュームIDをランダム化
    • etc/fstab` を再作成
    • update-grubの実行(上記参照)
    • Pacman のキーリングを初期化(通常は ALARM で手動で実行)
  • /usr/bin/update-vendor-firmwareupdate-vendor-firmware.service: EFI システムパーティションからベンダーファームウェアを取得し、各起動時に必要ならば /lib/firmware にインストール またはアップグレードを実行。これはWiFi を箱から出して動作させるために必要で、将来的にはより多くのドライバが必要
  • systemd-udev-trigger-early.service: update-vendor-firmware.service の実行前にNVMe モジュールが ロードされ、 EFI パーティションをマウントできるようにするが、他のサブシステムがまだ使用できないファームウェアを要求しないようにするヘルパーサービス。 これは実際には他のブートプロセスと並行して実行されるが、 update-vendor-firmware.service は EFI パーティションがマウントされるのに 依存し (マウントされるまで待つ)、それが完了するまで systemd-udev-trigger.service をブロック (これにより他のモジュールが 早期にオートロードされるのを防止)
  • /lib/initcpio/install/asahi: Apple Silicon システムで必要なモジュールを追加するための mkinitcpio フック。 mkinitcpio の自動モジュール選択ロジックが動的なデバイスプロバイダの依存関係に従えず、DeviceTree内のみで表現され モジュールの依存関係として表現されないので(例えば、 nvme_apple とその直接の依存関係である apple-rtkitapple-sart は取り込んでも、実際にNVMe デバイスを調べるために必要となる apple-mailbox は取り込めない)、これが必要。 これは mkinitcpio 時のモジュールのフィルタリングと選択だけに関係することに 注意。udev は実行時にモジュールのエイリアスを デバイスにマッチさせる方法を知っているので、必要なモジュールは 適切にロードされるから、明示的なモジュール読み込みを強制しない

プリインストールされている上流パッケージ

  • grub: UEFI モードで使用される Linux ブートローダ。これは U-Boot UEFI サービスを使用しているので、GRUB 自身に Apple Silicon 特有のパッチは不要
  • iwd: WiFiに接続できるようにするためにすぐ使えるもの

調整(Tweaks)/ハック

  • /etc/grub.d/30_uefi-firmware を削除(時々壊れたりノイズを発生させるようで、これらのプラットフォームでは役に立たない) TODO: 何が問題なのか正確に把握して、アップストリームで修正。シェルスクリプトでバイナリデータをパースしようとしているらしい...
  • sshd.service はセキュリティ上の理由からデフォルトでは無効。 alarmroot ユーザのパスワードを変更した後に手動で有効にする
  • 標準の systemd-firstboot.service には、UX がひどく、長くかかるとユニットのタイムアウトがキックされるので、初回起動時の プロンプトを無効にするオーバーライド (/etc/systemd/systemd-firstboot.service.d/no-prompt.conf)が存在。 ユーザーは、タイムゾーンを後で手動で設定すべき。マシンIDをランダム化するためのツールはまだ実行される

Asahi Linux Plasma

KDE Plasma 環境と、Apple Silicon 上ですぐに使えるパッケージがプリインストールされたイメージです。

(TODO)