ディストリビューション: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 と大きく乖離することはないと考えています。
ミラーリスト
現在のミラーリスト
- https://cdn.asahilinux.org/$arch/$repo (bunny.netが 親切にスポンサーする世界規模のCDN)
- https://de.mirror.asahilinux.org/$arch/$repo (ドイツ)
- https://jp.mirror.asahilinux.org/$arch/$repo (日本)
ここでは 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
SecureROMとiBoot1はシステムの中核となるファームウェアであり、私たちは管理しておりません。iBoot2 と m1n1 (ステージ1) は Asahi Linuxインストーラによって提供され、通常、初期インストール後に変更されることはありません。m1n1 (ステージ2) 以降については、 Pacmanパッケージとして出荷・更新されます。
Asahi Linux Core
Arch Linux ARM の軽量版リミックスです。
linux-asahi
私たちのメインカーネルパッケージです。通常、AsahiLinux/linux の asahi
ブランチから
ビルドされます。頻繁に更新され、しばしば最先端のカーネル (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イメージをm1n1
やu-boot-asahi
、linux-asahi
パッケージに含まれるファイルから生成/usr/bin/first-boot
とfirst-boot.service
: プリベークイメージの初回起動時に自動タスクを実行- rootfs の UUID をランダム化
- EFIシステムパーティションのFATボリュームIDをランダム化
- etc/fstab` を再作成
update-grub
の実行(上記参照)- Pacman のキーリングを初期化(通常は ALARM で手動で実行)
/usr/bin/update-vendor-firmware
とupdate-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-rtkit
とapple-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
はセキュリティ上の理由からデフォルトでは無効。alarm
とroot
ユーザのパスワードを変更した後に手動で有効にする- 標準の
systemd-firstboot.service
には、UX がひどく、長くかかるとユニットのタイムアウトがキックされるので、初回起動時の プロンプトを無効にするオーバーライド (/etc/systemd/systemd-firstboot.service.d/no-prompt.conf
)が存在。 ユーザーは、タイムゾーンを後で手動で設定すべき。マシンIDをランダム化するためのツールはまだ実行される
Asahi Linux Plasma
KDE Plasma 環境と、Apple Silicon 上ですぐに使えるパッケージがプリインストールされたイメージです。
(TODO)