nazo6 notememo

Arch Linux on wsl・wslg環境構築

作成:2021/04/30

更新:2021/04/30

(2021-04-30)

wslgがきてメインの開発環境にLinuxを使う機運が高まったので環境構築したメモ。
せっかくなので(?)Arch Linuxを使うことにする

環境

  • Windows 10 21364 (執筆時 Insider Preview Devチャンネル)
  • wsl有効
※この先wsl2という前提

Arch Linuxをインストール (2021-04-30)

偉大な先人が作ってくれたまさにこのための
https://github.com/yuk7/ArchWSL
というものがあるのでこれを使う。
scoopにextras bucketを追加してれば次のコマンドで一発
scoop install archwsl
本来Arch Linuxはインストールにも一苦労という代物らしいがwslならこれでインストール作業は終了。素晴らしい。

いろいろ設定 (2021-04-30)

の前にとりあえずアップデートする。と思ったら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をインストールしろと書いてあるがなぜか入ってた
http://bobbyquine.hatenablog.com/entry/2018/01/18/024958
[root]$ vim /etc/sudoers
/etc/sudoers
## 以下を追記
<username> ALL=(ALL) ALL
次にwslのデフォルトログインユーザーを変更する。
https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config#change-the-default-user-for-a-distribution
これの通りに実行する。
windows側のコマンド
> arch config --default-user <username>
再度wslにログインすると指定したユーザー名でログインされているはず。
ここでrootユーザーを凍結する。
[<username>]$ sudo passwd -l root

yayのインストール (2021-04-30)

Arch LinuxにはAURというものがあり、多くの公式に登録されていないソフトをインストールできる。
そのAURに登録されているソフトウエアを管理するためのソフトウエアがyay、らしい。
https://github.com/Jguer/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を使うように設定。
参考記事↓
https://wiki.archlinux.jp/index.php/Powerpill
https://wiki.browniealice.net/technote/arch/yay/
$ yay -S powerpill
$ yay --save --pacman powerpill

pacman or yay

yayはpacmanのラッパーにすぎないためAURではない公式リポジトリのパッケージもyayで普通にインストールできる。
しかし公式でインストールできるものなのかAURのものなのか意識せずメンテナンスされてないパッケージをインストールしてしまう可能性があるため先にpacmanを使うのがよい(と解釈している)。
ただめんどくさいしyayだとsudoをつけなくていいので結局全部yayを使うことになりそう…

shellをfishに (2021-04-30)

shellにはfishを使うことにした。とりあえずインストール
$ sudo pacman -S fish
さた普通ならchshでデフォルトシェルを変えるところなのだがどうにもArchではfishをデフォルトシェルにするのは非推奨らしい。
https://wiki.archlinux.jp/index.php/Fish
(てかこれ日本語あるのすごい)
ということで上のページにある通り.bashrcからfishを起動させる。
.bashrc
## これを追記
exec fish

wslgを試す (2021-04-30)

正直LinuxのGUIはよくわからなかったがとりあえず適当なGUIアプリとインストールすれば普通に起動できた。
> sudo pacman -S nemo
> nemo

genieをインストール (2021-04-30)

ロケールを変えようといろいろ設定していたところなんかうまくいかない。どうやらwslだとsystemdというものが動かないせいらしいのでそれを解決するためのソフトのgenieを入れる。
https://github.com/arkane-systems/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コマンドが使えるようになっているはず。
起動時に実行するように設定する。
~/.bashrc
## 追記
if [[ ! -v INSIDE_GENIE ]]; then
exec /usr/bin/genie -s
fi

cannot open displayと表示されてwslgが実行できない場合がある (2021-04-30)

firefoxなど一部のソフトでこの問題が発生した。いろいろ調べたら無事解決策が見つかった。
どうにもsystemdを作動させていると発生する模様。
https://github.com/microsoft/wslg/issues/43#issuecomment-826039096
このコメントの通りに/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を再起動して無事解決。