WSL にインストール
Windows 10 には Linux カーネルのインターフェイスをエミュレートするサブシステムが搭載されており、通常の Linux アプリケーションを実行することができます。Wine と同じような仕組みですが、もっと低水準です。デフォルトでは Ubuntu のユーザー空間がセットアップされていますが、Arch に置き換えることが可能です。動作させるにはパッケージをビルドするための Arch 環境が必要です。このページの手順は こちらのガイド を基にしています。
準備
Fall Creators アップデートを適用した Windows 10 を使っている場合、Windows の機能の有効化または無効化にある Windows Subsystem for Linux にチェックを入れてください。
Anniversary アップデートまたは Creators アップデートの Windows 10 を使っている場合、こちら の手順に従って有効化してください。設定 > 更新とセキュリティ > 開発者向けにある開発者モードを選択する必要があります。
インストール
Windows ストア から Ubuntu をインストールしてください。
そしてスタートメニューから Ubuntu を起動してください。
デフォルトユーザーを root に設定:
$ ubuntu config --default-user root
Arch のブートストラップ .tar.gz を ダウンロードページ からダウンロードして、解凍:
$ tar -zxvf /mnt/c/Users/username/Downloads/archlinux-bootstrap-version.tar.gz
~/root.x86_64/etc/pacman.d/mirrorlist
内の使用するサーバーをアンコメントしてください。
WSL で /etc/resolv.conf
を自動生成:
$ echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." > ~/root.x86_64/etc/resolv.conf
開いた bash プロンプトを全て閉じてください。
Windows エクスプローラで %localappdata%\Packages
を開いて CanonicalGroupLimited.UbuntuonWindows_*
という名前のフォルダを探してください (アスタリスクはランダムな文字列になります)。
%localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs
にある bin
, etc
, lib
, lib64
, sbin
, usr
, var
を削除してください。
そして上記と同じフォルダを rootfs\root\root.x86_64
から rootfs
に移動してください (コピーでは駄目です)。
Linux コンピュータを使って fakeroot-tcpAUR と glibc-wslAUR をビルドしたら Windows PC にパッケージをコピーしてください。glibc-wslAUR をビルドするときは makepkg
で --nocheck
を使うことで時間のかかるテストをスキップすることができます。
glibc-wsl には このバグ に対応する修正が含まれており、fakeroot-tcp は WSL によって System V IPC が完全に実装されるまで必要です (こちら を参照)。WSL のバグが修正されればこの手順は不要になります。
再度 bash を開いて、Arch をセットアップしてください:
# pacman-key --init # pacman-key --populate archlinux # pacman -U /mnt/c/Users/username/Downloads/glibc-wsl-2.25-2-x86_64.pkg.tar.xz # pacman -U /mnt/c/Users/username/Downloads/fakeroot-tcp-1.21-2-x86_64.pkg.tar.xz # pacman -Syyu base base-devel
ユーザーをセットアップ (Windows のユーザー名と同じにする必要はありません):
# useradd -m -G wheel -s /bin/bash username # passwd root # passwd username
Windows コマンドプロンプトで以下のコマンドを実行することでユーザーをデフォルトに設定できます:
> lxrun /setdefaultuser username