Title Image

WSLにArchLinuxを入れてみる

投稿日
(最終更新:)

ArchLinuxをWSLに入れてみようと思います。

ArchLinuxをダウンロードしてWSLに登録する

ArchWikiに一応書かれてはいるものの、情報が古いのであまり参考にならなそうです。

wsl --helpを実行すると、--importオプションでtarファイルを新しいディストリビューションとしてインポートできるようなのでArchLinuxのブートストラップをもってくればよさそうです。

ArchLinuxのダウンロードページで適当なミラーサイトを探してそこからダウンロードします。

最初はWindowsでダウンロードしようとしたのですが、Windowsはデフォルトではファイル名の大文字と小文字を区別しないので解凍した時に色々と面倒なことになります。そこで、すでにWSLに作ってあるUbuntu内で作業します。

ダウンロードは以下コマンドです。リンクアドレスは使用するミラーサイト名にし、バージョンも適宜変更してください。

wget https://mirror.aria-on-the-planet.es/archlinux/iso/2025.02.01/archlinux-bootstrap-2025.02.01-x86_64.tar.zst

一応チェックサムを確認しておきます。以下のコマンドでチェックサムをダウンロードして確認します。これもバージョンごとにリンクが違うので気を付けましょう。b2sumでは--ignore-missingを指定して存在しないファイルは無視しています。OKと表示されれば問題ありません。

wget https://archlinux.org/iso/2025.02.01/b2sums.txt
b2sum -c b2sums.txt --ignore-missing

次にtarコマンドで解凍します。ファイル名はダウンロードした際の名前です。

sudo apt install zstd # tarコマンドでzstdが無いと言われる場合
tar -Izstd -xf archlinux-bootstrap-2025.02.01-x86_64.tar.zst

解凍するとroot.x86_64pkglist.x86_64.txtが出てきます。必要なのはroot.x86_64なのでこれを再びtarで圧縮します。その後、/mnt以下のWindowsに移動します。

補足

環境によるかもしれませんが、圧縮の際に特定のファイルに対するアクセス権が無いことで正常に処理できなかったので、事前にsudo chmod 777 root.x86_64 -Rを実行しました。

圧縮の際は、解凍後にディレクトリ(root.x86_64)の中身が直接展開されるように圧縮しないと、起動しようとしたときにエラーが出て起動できないので注意です。

このとき、圧縮前にroot.x86_64/etc/pacman.d/mirrorlistで使用するサーバーのコメントアウトを解除しておくといいと思います。

tar -Izstd -cf root.x86_64.tar.zst -C root.x86_64 .
mv root.x86_64.tar.zst {Windows上の適当な場所}/

これで用意は整いました。以下のコマンドでWSLにArchLinuxをインポートします。C:\wsl\ArchはVHDXを置く場所なので好きな場所を指定してください。

wsl --import ArchLinux C:\wsl\Arch {root.x86_64.tar.zstを置いたWindows上のパス}

-dオプションでArchLinuxを指定して起動します。

wsl -d ArchLinux

ArchLinuxのセットアップ

pacman

圧縮前にmirrorlistを変更しなかった場合、ここで/etc/pacman.d/mirrorlistに変更を加えなければなりません。

しかし、初期状態ではnanoやvimが使えないのでechoコマンドの出力をリダイレクトして追記するという原始的な手法を取る必要があります。catコマンドで中身を確認し、適当なサーバーを書き込みます。

普通にWindowsのエクスプローラーからメモ帳で開いて編集できます。便利。

エディタを全く使わないで書き込む
cd /etc/pacman.d/
echo "Server = http://mirror.aria-on-the-planet.es/archlinux/\$repo/os/\$arch" >> mirrorlist

適当なサーバーの子マンとアウトを外してあればpacmanのリポジトリの同期ができます。以下のコマンドを実行します。

pacman -Syy # リポジトリの同期
pacman-key --init # キーリングの初期化
pacman-key --populate archlinux # オフィシャルパッケージ開発者の鍵を登録しておく
pacman -S reflector # 自動で速度が速い順にサーバーを並び変えるpythonスクリプト
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist_backup # バックアップ
reflector --country Japan --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

pacmanの設定を少し変えておきます。この変更により、パッケージを並列でダウンロードできるようになります。

pacman -S vim # vimをインストール
vim /etc/pacman.conf # [options]のParallelDownloads = 5のコメントアウトを外す

シェルとユーザーの追加

ひとまずZshを使うのでpacmanでインストールします。加えてロケールとタイムゾーンの設定もしておきます。これで日本語も正しく表示できるようになるはずです。

pacman -S zsh
vim /etc/locale.gen # en_US.UTF-8 UTF-8 のコメントアウトを外す
locale-gen # デフォルトでlocaleがen_US.UTF-8になっているのでとりあえずこれをしておけばよい
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # タイムゾーンの設定
hwclock --systohc 

新しくユーザーを作ります。

passwd # rootユーザーのパスワード設定
useradd -m -G wheel -s /bin/zsh {ユーザ名} # ユーザーの作成
passwd {ユーザ名} # 新しく追加したユーザーのパスワード設定
pacman -S sudo # sudoのインストール
EDITOR=vim visudo # /etc/sudoeresの %wheel ALL=(ALL:ALL) ALL のコメントアウトを外す

起動時のデフォルトのユーザーに先ほど作成したユーザーを指定します。/etc/wsl.confに以下を書き込みます。ついでにsystemdを有効化する設定も書き込んでおきます。

[boot]
systemd=true

[user]
default={ユーザー名}

これで一度WSLをシャットダウンし、再起動すると/etc/wsl.confで設定したユーザーでログインされます。また、ログイン時のシェルにZshを指定した場合は、Zshの初回設定画面が表示されるのでお好みで設定しましょう。

(最初にwsl.confを作ったときは再起動しても設定が反映されなかったので、wsl.confを作り直したら設定が反映されました。誤字はしてなかったはずなので原因はわかりません…)

環境構築をする

とりあえずの環境構築をしてみます。まずはC・C++から。

sudo pacman -Ss gcc # 検索
sudo pacman -S gcc # インストール

簡単ですね。次にPythonです。とりあえずuvを入れておきます。

sudo pacman -Ss uv # 検索
sudo pacman -S uv # インストール

これも簡単です。あとはgitですね。

sudo pacman -Ss git # 検索
sudo pacman -S git github-cli # インストール

おわりに

最低限はできたのでここまでにしておきます。壊しても問題ない環境なので気が楽でいいですね。

シェルの見た目をリッチにしたりNeovimを入れて遊んだりしたいです。