Closed8

Arch Linux on wsl/wslg環境構築

nazo6nazo6

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

環境

  • Windows 10 21364 (執筆時 Insider Preview Devチャンネル)
  • wsl有効

※この先wsl2という前提

nazo6nazo6

Arch Linuxをインストール

偉大な先人が作ってくれたまさにこのための
https://github.com/yuk7/ArchWSL
というものがあるのでこれを使う。

scoopにextras bucketを追加してれば次のコマンドで一発

scoop install archwsl

本来Arch Linuxはインストールにも一苦労という代物らしいがwslならこれでインストール作業は終了。素晴らしい。

nazo6nazo6

いろいろ設定

の前にとりあえずアップデートする。と思ったら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
nazo6nazo6

yayのインストール

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を使うことになりそう…

nazo6nazo6

shellをfishに

shellにはfishを使うことにした。とりあえずインストール

$ sudo pacman -S fish

さた普通ならchshでデフォルトシェルを変えるところなのだがどうにもArchではfishをデフォルトシェルにするのは非推奨らしい。
https://wiki.archlinux.jp/index.php/Fish
(てかこれ日本語あるのすごい)

ということで上のページにある通り.bashrcからfishを起動させる。

.bashrc
# これを追記
exec fish
nazo6nazo6

wslgを試す

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

> sudo pacman -S nemo
> nemo
nazo6nazo6

genieをインストール

ロケールを変えようといろいろ設定していたところなんかうまくいかない。どうやら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
nazo6nazo6

cannot open displayと表示されてwslgが実行できない場合がある

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を再起動して無事解決。

このスクラップは2021/04/30にクローズされました