Arch Linux on wsl/wslg環境構築
wslgがきてメインの開発環境にLinuxを使う機運が高まったので環境構築したメモ。
せっかくなので(?)Arch Linuxを使うことにする
環境
- Windows 10 21364 (執筆時 Insider Preview Devチャンネル)
- wsl有効
※この先wsl2という前提
Arch Linuxをインストール
偉大な先人が作ってくれたまさにこのための
というものがあるのでこれを使う。scoopにextras bucketを追加してれば次のコマンドで一発
scoop install archwsl
本来Arch Linuxはインストールにも一苦労という代物らしいがwslならこれでインストール作業は終了。素晴らしい。
いろいろ設定
の前にとりあえずアップデートする。と思ったらkeyringどうこうとか出てきたのでこちらの記事のとおりに
pacman-key --init
pacman-key --populate archlinux
pacman -Syyu
とする。
ユーザーの設定
ユーザー追加
デフォルトのユーザーはrootユーザーなので新しくユーザーを作ってパスワードを設定。
[root]$ useradd -m -g wheel <username>
[root]$ passwd <username>
rootユーザー無効化
またついでにrootユーザーを無効化しておく。
以下の参考記事の通りにやるがviがなくvisudoコマンドが実行できなかったのでvimで/etc/sudoers
を編集する。またsudoをインストールしろと書いてあるがなぜか入ってた
[root]$ vim /etc/sudoers
# 以下を追記
<username> ALL=(ALL) ALL
次にwslのデフォルトログインユーザーを変更する。
これの通りに実行する。> arch config --default-user <username>
再度wslにログインすると指定したユーザー名でログインされているはず。
ここでrootユーザーを凍結する。
[<username>]$ sudo passwd -l root
yayのインストール
Arch LinuxにはAURというものがあり、多くの公式に登録されていないソフトをインストールできる。
そのAURに登録されているソフトウエアを管理するためのソフトウエアがyay、らしい。
上のリンクの通りやってもインストールできるがこれはソースからビルドするので遅い。なのでバイナリをインストール。
$ cd ~
$ pacman -S --needed git base-devel
$ git clone https://aur.archlinux.org/yay-bin
$ cd yay-bin
$ makepkg -si
これでyayが使えるようになる。yayコマンドはpacmanと同じように使える。
あとは好きなソフトをインストールするだけ
pacman高速化
pacmanのダウンロードが遅いので並列にダウンロードできるpowerpill
を使う。
またyayでもデフォルトでpowerpillを使うように設定。
参考記事↓
$ yay -S powerpill
$ yay --save --pacman powerpill
pacman or yay
yayはpacmanのラッパーにすぎないためAURではない公式リポジトリのパッケージもyayで普通にインストールできる。
しかし公式でインストールできるものなのかAURのものなのか意識せずメンテナンスされてないパッケージをインストールしてしまう可能性があるため先にpacmanを使うのがよい(と解釈している)。
ただめんどくさいしyayだとsudoをつけなくていいので結局全部yayを使うことになりそう…
shellをfishに
shellにはfishを使うことにした。とりあえずインストール
$ sudo pacman -S fish
さた普通ならchshでデフォルトシェルを変えるところなのだがどうにもArchではfishをデフォルトシェルにするのは非推奨らしい。
(てかこれ日本語あるのすごい)ということで上のページにある通り.bashrc
からfishを起動させる。
# これを追記
exec fish
wslgを試す
正直LinuxのGUIはよくわからなかったがとりあえず適当なGUIアプリとインストールすれば普通に起動できた。
> sudo pacman -S nemo
> nemo
genieをインストール
ロケールを変えようといろいろ設定していたところなんかうまくいかない。どうやらwslだとsystemdというものが動かないせいらしいのでそれを解決するためのソフトのgenieを入れる。
上にある通りに zstファイルをインストールする。コマンド内のリンクは最新のものに置き換えること。
> sudo pacman -S wget
> yay -S daemonize
> wget https://github.com/arkane-systems/genie/releases/download/v1.40/genie-systemd-1.40-1-x86_64.pkg.tar.zst
> sudo pacman -U ./genie-systemd-1.40-1-x86_64.pkg.tar.zst
これでgenieコマンドが使えるようになっているはず。
起動時に実行するように設定する。
# 追記
if [[ ! -v INSIDE_GENIE ]]; then
exec /usr/bin/genie -s
fi
cannot open display
と表示されてwslgが実行できない場合がある
firefoxなど一部のソフトでこの問題が発生した。いろいろ調べたら無事解決策が見つかった。
どうにもsystemdを作動させていると発生する模様。
/etc/tmpfiles.d/wslg.conf
に
# This file is part of the debianisation of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# See tmpfiles.d(5) for details
# Type Path Mode UID GID Age Argument
L+ /tmp/.X11-unix - - - - /mnt/wslg/.X11-unix
を追加するだけ。wslを再起動して無事解決。