みねっちょのマイコン関係ブログ

組込開発系フリーソフトやハードの情報発信ブログ

WSL に ArchLinux を標準コマンドでインストールする

サイト内 Google 検索:


最終更新:2021-05-19
WSL への Linux ディストリビューションの追加は簡単です。ArchLinux を UbuntuPowerShell の標準コマンドだけで追加する手順を紹介します。公式シグネチャの有るパッケージのみを使用し、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 の標準コマンドだけを使ってインストールするメリットは、次の通りです。


目次:



前提条件:

  • Windows 10 を使用していること
  • WSL に Ubuntu 等をインストール済なこと
    尚、以下の説明では WSL2を使用しています。
  • Ubuntusquashfs-tools をインストール済なこと
    ( sudo apt install squashfs-tools )
  • Ubuntu に gpg をインストール済なこと
    ( sudo apt install gpg )

ArchLinux の特徴:

ArchLinux には版数という概念が無く、全ての標準パッケージを常に最新にアップデート可能なローリングリリース モデルを採用しています。一方、安定性という面では Ubuntu の LTS (Long Term Support) 版にはやや劣ります。
パッケージの管理には、pacman というコマンドを使用します。

また、多くのパッケージは、MinGW-w64/MSYS2 と同じバージョンに管理されています。常に最新のアプリケーション パッケージを使用したい方にとっては、有意義なディストリビューションです。



MinGW-w64 に対するメリット:

Unix 用のソフトウェアを Windows に移植する場合、MinGWMinGW-w64 を使用することが多いのですが、MinGWPOSIX 完全準拠では無い為に移植が難航する場合があります。その点では ArchLinux は POSIX 準拠なので安心です。
また、ウィンドゥシステムに X Window を利用可能な事もメリットです。但し、現状では別途 X Server ソフトのインストールが必要です。尚、無償な X Server ソフトに関しては【こちらの別記事】に記載しています。

MinGW-w64 に対するデメリット:

MinGW-w64 に対するデメリットは、WSL2 システムは仮想ディスク (vhdx) を使用する為、ディスク I/O スピードが遅い事です。



インストール手順:

概要:

次の手順でインストールします。

  1. 公式サイトからの アーカイブ ファイルのダウンロード
  2. ルート ファイル イメージの tar アーカイブ
    尚、カーネルは WSL 専用の物が使用されますので、tar アーカイブ化は不要です。
  3. 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 で確認出来ます。

  1. WSL のターミナルを全て閉じます。
  2. Windows PowerShell を開きます。
  3. WSL をシャットダウンします。
    PowerShell で次のコマンドを実行します。
    wsl --list --verbose
    wsl --shutdown
    wsl --list --verbose
    
  4. ルート ファイル イメージの tar アーカイブを WSL にインポートします。 WSL 上のディストリビューション名は、ArchLinux とする事にします。必用に応じて変更してください。
    wsl --import ArchLinux E:\WSL\ArchLinux\rootfs E:\WSL\ArchLinux\tar\archlinux-2021.05.01-x86_64.tar.gz
    
  5. ファイルシステムの確認
    E:\WSL\ArchLinux\rootfs ディレクトリに、ext4.vhdx という仮想ディスクが出来た事を確認します。
  6. 起動の確認から、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 関係の目次へ戻る】