最終更新:2021-05-19
WSL への Linux ディストリビューションの追加は簡単です。ArchLinux を Ubuntu と PowerShell の標準コマンドだけで追加する手順を紹介します。公式シグネチャの有るパッケージのみを使用し、ArchWSL や wsldl は使用しません。
インストールの方針:
WSL 用の ArchLinux には ArchWSL という有志による移植パッケージも有るのですが、今回は ArchLinux の公式サイトからダウンロードしたアーカイブファイルを Windows の WSL と PowerShell の標準コマンドだけを使って、自力で追加インストールします。
要点だけコマンドで記述すると、次の通りです。本記事の残りの説明は、チェックサムや公式シグネチャの確認、ファイル所有権の調整等です。
- WSL 上の Ubuntu等 で root 権限にて:
unsquashfs airootfs.sfs cd squashfs-root tar cf ../archlinux.tar *
- PowerShell で:
wsl --import ArchLinux rootfsを格納したいフォルダ名 archlinux.tar
因みに、有志による ArchWSL のサイトは下記です。
GitHub - yuk7/ArchWSL: ArchLinux based WSL Distribution. Supports multiple install.
自力インストールのメリット:
Windows と WSL の標準コマンドだけを使ってインストールするメリットは、次の通りです。
- 公式サイトの GPG によるシグネチャが確認出来たソフトだけをインストール可能な事
- 最新版をダイレクトにインストールするのでリポジトリからのアップデート時間が短い事
- マイクロソフト ストアからインストールした Ubuntu と問題無く共存可能な事
( 公式? ArchWiki の説明は変です。WSL にインストール - ArchWiki )
目次:
ArchLinux には版数という概念が無く、全ての標準パッケージを常に最新にアップデート可能なローリングリリース モデルを採用しています。一方、安定性という面では Ubuntu の LTS (Long Term Support) 版にはやや劣ります。 また、多くのパッケージは、MinGW-w64/MSYS2 と同じバージョンに管理されています。常に最新のアプリケーション パッケージを使用したい方にとっては、有意義なディストリビューションです。
前提条件:
尚、以下の説明では WSL2を使用しています。
( sudo apt install squashfs-tools
)
( sudo apt install gpg
)ArchLinux の特徴:
パッケージの管理には、pacman というコマンドを使用します。
MinGW-w64 に対するメリット:
Unix 用のソフトウェアを Windows に移植する場合、MinGW や MinGW-w64 を使用することが多いのですが、MinGW は POSIX 完全準拠では無い為に移植が難航する場合があります。その点では ArchLinux は POSIX 準拠なので安心です。
また、ウィンドゥシステムに X Window を利用可能な事もメリットです。但し、現状では別途 X Server ソフトのインストールが必要です。尚、無償な X Server ソフトに関しては【こちらの別記事】に記載しています。
MinGW-w64 に対するデメリット:
MinGW-w64 に対するデメリットは、WSL2 システムは仮想ディスク (vhdx) を使用する為、ディスク I/O スピードが遅い事です。
インストール手順:
概要:
次の手順でインストールします。
- 公式サイトからの アーカイブ ファイルのダウンロード
- ルート ファイル イメージの tar アーカイブ化
尚、カーネルは WSL 専用の物が使用されますので、tar アーカイブ化は不要です。 - tar アーカイブの WSL へのインポート
この内、1. と 2. は WSL 上の Ubuntu で実行する事にします。3. は Windows Power Shell での作業となります。
ファイルを配置するディレクトリの方針について、本記事では次の通りとします。
- WSL2 の ext4 形式仮想ディスクファイルを置く場所は
E:\WSL\ArchLinux\rootfs
- WSL にインポートする為の tar アーカイブの置き場は
E:\WSL\ArchLinux\tar
尚、tar ファイルは WSL へのインポートが正しく完了した後は、消去しても問題有りません。
アーカイブ ファイルのダウンロード:
次の ArchLinux 公式サイトの一覧から、日本 (Japan) のサーバーを探し、アーカイブ ファイルをダウンロードします。
arch/x86_64
ディレクトリまで降りて、.sfs (SquashFS) 形式のファイルをダウンロードします。次の3つのファイルをダウンロードします。ダウンロードしたファイルは、以降の例では E:\WSL\ArchLinux\tar
に置くこととします。
airootfs.sfs airootfs.sfs.sig airootfs.sha512
ルート ファイル イメージの tar アーカイブ化:
以下の作業を WSL の Ubuntu 上で行います。ファイルの操作は、WSL 上で RAM に展開される筈の tmpfs の /mnt/wsl
にコピーして作業する事とします。
ファイルの tmpfs へのコピー:
cd /mnt/wsl
cp /mnt/e/WSL/ArchLinux/tar/airootfs.s* .
sha512 チェックサムの確認:
sha512sum airootfs.sfs > mysha512.txt
diff mysha512.txt airootfs.sha512
GPG シグネチャの確認:
まずは使われているキーを確認します。次のコマンドを打ちます。
gpg --verify airootfs.sfs.sig airootfs.sfs
次の様なメッセージが出ます。
gpg: Signature made Sat May 1 14:22:58 2021 JST
gpg: using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: Can't check signature: No public key
公開鍵 (パブリックキー) が無いので検証出来ないと言って居ます。前記で得られたフィンガープリント 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
に対応する公開鍵をサーバから取得します。フィンガープリントはファイルのバージョンによって変わる可能性が有りますので、適宜書き換えてください。次のコマンドを打ちます。
gpg --keyserver keyserver.ubuntu.com --recv-keys 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
次の様なメッセージが出れば公開鍵の受信は成功しています。
gpg: key 7F2D434B9741E8AC: public key "Pierre Schmitz <pierre@archlinux.de>" imported
gpg: Total number processed: 1
gpg: imported: 1
改めてシグネチャを確認します。次のコマンドを打ちます。
gpg --verify airootfs.sfs.sig airootfs.sfs
次の様なメッセージが出ます。
gpg: Signature made Sat May 1 14:22:58 2021 JST
gpg: using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4AA4 767B BC9C 4B1D 18AE 28B7 7F2D 434B 9741 E8AC
archlinux.de
の中の人 Pierre Schmitz 氏による Goog Signature
との結果です。オーナーの正当性までは確認出来ないとの WARNING が出て居ますので、念の為に次の ArchLinux の公式サイトで Pierre Schmitz 氏のフィンガープリントを確認します。
一覧の中に有る Perre Schmitz 氏の Owner's Signing Key
の列 の keyID 0x9741E8AC
にマウスをホバーまたはクリックすると、0x4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
となっており、確認に使用したフィンガープリントと一致しますので信用できる物と判断します。
SquashSF の展開と rootfs 用の tar アーカイブ作成:
.sfs (SuquashFS) ファイルの展開と、rootfs 用の tar アーカイブの作成を行います。
以下の作業は、スーパーユーザー (root) として行います。ファイル所有者を root とする為です。
sudo su
unsquashfs airootfs.sfs
cd squashfs-root
ls -a
tar cf ../archlinux.tar *
cd ..
gzip -9 archlinux.tar
mv archlinux.tar.gz archlinux-2021.05.01-x86_64.tar.gz
sha512sum archlinux-2021.05.01-x86_64.tar.gz > archlinux-2021.05.01-x86_64.tar.gz.sha512
exit
アーカイブを別ディレクトリに展開して、違いが無いか確認しておきます。
mkdir tmp
cd tmp
tar xf ../archlinux-2021.05.01-x86_64.tar.gz
cd ..
sudo diff -r --no-dereference squashfs-root tmp
tar アーカイブの移動:
tmpfs で作業しており、WSL をシャットダウンすると消えますので、必用なファイルをインストール用のパーマネント ディスクにコピーしておきます。ここでは、予め E:\WSL\ArchLinux\tar
というフォルダが作成済という前提で進めます。ファイルシステムを跨ぐコピーとなりますので、チェックサムを確認しておきます。
cp archlinux-2021.05.01-x86_64.tar.gz* /mnt/e/WSL/ArchLinux/tar/
cd /mnt/e/WSL/ArchLinux/tar
sha512sum archlinux-2021.05.01-x86_64.tar.gz > mysha512.txt
diff mysha512.txt archlinux-2021.05.01-x86_64.tar.gz.sha512
問題が無ければ、mysha512.txt は削除します。
tar アーカイブの WSL へのインポート:
以降の作業は、Windows PoserShell で行います。
また、WSL 用ファイルシステムの置き場として、E:\WSL\ArchLinux\rootfs
というフォルダを予め作っておく事とします。
尚、WSL コマンドの詳細は、wsl --help
で確認出来ます。
- WSL のターミナルを全て閉じます。
- Windows PowerShell を開きます。
- WSL をシャットダウンします。
PowerShell で次のコマンドを実行します。
wsl --list --verbose wsl --shutdown wsl --list --verbose
- ルート ファイル イメージの tar アーカイブを WSL にインポートします。
WSL 上のディストリビューション名は、
ArchLinux
とする事にします。必用に応じて変更してください。
wsl --import ArchLinux E:\WSL\ArchLinux\rootfs E:\WSL\ArchLinux\tar\archlinux-2021.05.01-x86_64.tar.gz
- ファイルシステムの確認
E:\WSL\ArchLinux\rootfs
ディレクトリに、ext4.vhdx
という仮想ディスクが出来た事を確認します。 - 起動の確認から、exit とシャットダウン
wsl -d ArchLinux cd ls -a ls / exit wsl --list --verbose wsl --shutdown wsl --list --verbose
ポスト インストール処理と Windows Terminal への登録:
以上で WSL へのインストール自体は完了です。
【こちらの別記事】にてポストインストール処理として、新規の sudo 可能ユーザーの追加とレジストリおよびパッケージのアップデート手順を紹介しています。
また、【こちらの別記事】にて Windows Terminal への登録手順を紹介しています。
【WSL 関係の目次へ戻る】 【Linux 関係の目次へ戻る】