【新版】Windows Subsystem for Linux で 普通の Archlinux を使う
読了まで:約5分
僕は以前、この記事ページで Archlinux on WSL の作り方を記載していましたが、 2017 年 12 月現在、そのやり方も古くなり、最新の Windows 10 Pro ではまた状況が変ってきたため、 この記事の内容を最新の内容に合わせて修正しました。
1. 参考にしたページ
2. 用意するモノ
- Windows 10 Fall Creators Update 以降の Windows Subsystem for Linux が使える環境
- VirtualBox や VMware といった環境 or Archlinux 系 Distro がインストールされた実機
- 途中で失敗しても諦めない心持ち
3. 手順
基本的には、
に記載された内容の通りに作業をしていきますが、途中、色々と表記やらが更新されてない部分もあるので、 その辺りは適宜読み替えて作業を行っていきます。
3.1 Ubuntu を Windows Store からインストールしてセットアップ
まず、Windows Subsystem for Linux が有効になっている Windows 環境で、Ubuntu を Windows Store からインストールしてきます。 そして、Ubuntu のインストールが終ったら、Ubuntu を起動し、一応のアカウントの初期設定を済ませておきます。
3.2 Ubuntu のデフォルトアカウントを root にする
これは、 Windows 側の shell 環境 (cmd.exe や powershell.exe) から行いますが、 上記リンク先の記事にも有るとおり、下記の様なコマンドでアカウントを切り替えます:
> ubuntu config --default-user root
3.3 Archlinux の rootfs を取得し展開
そして、Archlinux の rootfs の tarball を
から Download し、 WSL の Ubuntu 上で tarball を展開します:
# tar /mnt/c/Users/<username>/Downloads/archlinux-bootstrap-<version>.tar.gz
なお <username>
と <version>
は各自の環境に読み替えてください。
3.4 Archlinux の rootfs 内の初期設定を行う
基本的には Archlinux Wiki にも有る通り、~/root.x86_64/etc/resolv.conf
と ~/root.x86_64/etc/pacman.d/mirrorlist
を編集します。
なお、mirrorlist
の方は利用する ミラーをアンコメント、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
と言う感じで生成します。なお、上記コマンドサンプルは Archlinux Wiki からの引用です。
3.5 Archlinux の rootfs と Ubuntu の rootfs を入れ替える
これは、まず WSL Ubuntu のインスタンスをすべて終了し、Ubuntu の rootfs から、
- bin
- etc
- lib
- lib64
- sbin
- usr
- var
を削除します。なお、Ubuntu の rootfs は、
%localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs
辺りに存在します。
そして、Ubuntu の rootfs から上記のディレクトリを削除した後、 コピーではなくフォルダの移動で 、 Archlinux の rootfs を Ubuntu の rootfs のあるディレクトリに移動させます。
その際、注意する点としては、 ファイルのコピーでは WSL から rootfs のファイルが認識されなくなる ので、
コピーするのではなく、フォルダごと移動させる 、と言う点です。
3.6 他の Archlinux 系 環境で fakeroot-tcp と glibc-wsl をコンパイルする
fakeroot-tcp
と glibc-wsl
は、ともに AUR (Archlinux User Repository) からパッケージ定義が提供されているので、
そこから パッケージ定義を何かしらの方法でダウンロードし、そのパッケージ定義を使って上記二つのパッケージを build します。
ちなみに、この際に WSL 以外の Archlinux 系環境が必要になりますが、僕は、Virtual Machine として用意した、
を使って、上記二つのパッケージを build しました。なお、この際に、fakeroot-tcp
の方は、
conflicts
の定義に fakeroot
を足す、という修正を加えています。
また、これら二つのパッケージが必要になる理由は、 WSL の Linux Kernel に起因する問題を回避するためで、 WSL の Linux Kernel の問題が取り除かれたならば、この辺りの手順は必要なくなります。
なお、上記二つのパッケージを WSL 上の Archlinux にインストールしました、たしかその時に、
- sed
がインストールされている必要が有ったかと思ったので、それもインストールします。
それと、実際にパッケージをインストールする際には pacman
の初期設定が終えてある必要があるので、
処理の流れとしては、
# pacman-key --init
# pacman-key --populate archlinux
# pacman -U /mnt/c/Users/<username>/Downloads/glibc-wsl-<version>-x86_64.pkg.tar.xz
# pacman -U /mnt/c/Users/<username>/Downloads/fakeroot-tcp-<version>-x86_64.pkg.tar.xz
と言う流れで処理を進める必要があります。
3.7 アカウントの初期設定を行う
以上まで作業が終了していれば、あとは WSL Archlinux の利用の際に必要となるアカウントをセットアップしたり、 追加のパッケージをインストールを行うだけで WSL Archlinux が利用可能となります。
が、WSL Archlinux を利用する際に、
# pacman -S base base-devel
と言う様なコマンドを使うと、 WSL 上では不要なパッケージや、
glibc-wsl
とglibc
fakeroot-tcp
とfakeroot
が競合したりするので、基本的には必要となりそうなパッケージを単体で導入していった方が、 その手のトラブルが少なくて済むかと思います。
なお、WSL Archlinux でアカウントの設定が終った際に、デフォルトユーザーを root
から変更するためには、
> ubuntu config --default-user <username>
で、デフォルトユーザーを変更する必要があります。
以上
と言うことで新版の内容は以上です。はい。