WSL 2 で Arch Linux を使う
WSL 2 で Arch Linux を使う方法のメモです。
WSL では、tar ファイルをインポートすることで、Microsoft Store で公開されていない Linux ディストリビューションを使用できます。
こちらの GitHub リポジトリの手順を参考に、Arch Linux をインポートしてみました。
Arch Linux を WSL 2 へインポートする
全体の大まかな流れとしては、pacman のミラーを指定した Arch Linux の tar ファイルを用意して、wsl
コマンドでインポートするという作業になります。
作業は既存の Linux 環境で行います。
まずは Arch Linux の bootstrap tarball を入手します。
wget http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/iso/2023.04.01/archlinux-bootstrap-2023.04.01-x86_64.tar.gz
wget http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/iso/2023.04.01/sha256sums.txt
sha256sum archlinux-bootstrap-2023.04.01-x86_64.tar.gz
入手した tar ファイルを展開します。
sudo tar zxvf archlinux-bootstrap-2023.04.01-x86_64.tar.gz
pacman の mirrorlist ファイルを編集して、利用するミラー サーバーの行をコメントアウトします。
cd root.x86_64/
sudo vim etc/pacman.d/mirrorlist
mirrorlist ファイルを編集したら、新たに tar ファイルを作成します。 C ドライブに適当なフォルダを作成して tar ファイルを移動します。
sudo tar czvf root.tar.gz *
mkdir -p /mnt/c/wsl/arch
sudo mv root.tar.gz /mnt/c/wsl/arch
PowerShell を立ち上げ、用意した tar.gz ファイルを wsl --import
コマンドでインポートします。
次の例では、C:\wsl\arch
フォルダに VHD ファイルが配置されます。
PS C:\> wsl --import ArchLinux C:\wsl\arch C:\wsl\arch\root.tar.gz
Import in progress, this may take a few minutes.
The operation completed successfully.
wsl --list
コマンドに ArchLinux
が表示されればインポート完了です。
wsl -d ArchLinux
で起動できます。
PS C:\> wsl --list
Windows Subsystem for Linux Distributions:
ArchLinux
PS C:\> wsl -d ArchLinux
[root@HOSTNAME USERNAME]#
Arch Linux の設定
インポート後の初期設定は、一般的な Arch Linux インストール後の手順と同様です。
pacman のキーリングを初期化し、必要なパッケージのインストールと、ミラーリストのアップデートをします。
pacman-key --init
pacman-key --populate archlinux
pacman -Syyu base base-devel git vim wget reflector zsh
pacman -Syy
reflector --country Japan --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
root ユーザーのパスワード設定と、普段利用する一般ユーザーの追加をします。
# Set root user password
passwd
# Add new user and St password
useradd -m -G wheel -s /bin/zsh -d /home/{USERNAME} {USERNAME}
passwd {USERNAME}
# uncomment wheel line (%wheel ALL=(ALL) ALL)
EDITOR=/usr/sbin/vim sudoedit /etc/sudoers
ロケールの設定をします。
# uncomment en_US.UTF-8 UTF-8 line
sudo vim /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
WSL 起動時に、root ユーザーではなく一般ユーザーが使われるように、デフォルト ユーザーを設定します。
/etc/wsl.conf
ファイルを作成して次の設定を記述します。
[user]
default={USERNAME}
ping コマンドを使えるようにする
ping
コマンドを実行したところ、missing cap_net_raw+p capability or setuid?
のメッセージが表示されました。
% ping 192.168.1.1
ping: socktype: SOCK_RAW
ping: socket: Operation not permitted
ping: => missing cap_net_raw+p capability or setuid?
setcap
コマンドでファイル ケーパビリティを設定します。
% sudo setcap 'cap_net_raw+p' /bin/ping
getcap
コマンドで cap_net_raw=p
が表示されることを確認します。
% sudo getcap /bin/ping
/bin/ping cap_net_raw=p
% getcap /bin/ping
/bin/ping cap_net_raw=p
これで ping
コマンドが利用できるようになりました。
% ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=254 time=1.39 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=254 time=1.09 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=254 time=1.42 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.090/1.300/1.422/0.149 ms
Previous Post
Next Post